POST request to it whenever a relevant event occurs.
Today there is a single event — call.completed — sent once a call has finished and its transcript and metadata are available.
Set up an endpoint
- In the Quarterzip dashboard, go to Settings → Webhooks.
- Enter the HTTPS URL that should receive events.
- Toggle Enabled on and save.
The endpoint URL must use
https and must resolve to a public IP address. Localhost, private-network, and link-local addresses are rejected.Rotating the secret
If a secret is ever leaked, click Rotate secret on the same settings page. A new secret is generated and shown once.Verify the signature
Quarterzip signs every delivery using the open Standard Webhooks specification, so you can use the officialstandardwebhooks libraries to verify with a few lines of code. Each request includes three headers:
Verify against the raw request body, exactly as received. Do not parse and re-serialize the JSON first, or the signature won’t match.
Delivery, Retries & Timeouts
Return any2xx status code to acknowledge a webhook. Anything else — 4xx, 5xx, a connection error, or a timeout — is treated as a failed delivery and will be retried.
Acknowledge first, process later. Your endpoint should do the minimum needed to persist the event (write it to a queue or a table) and return 2xx immediately. Doing the work inline risks hitting the timeout, and a timeout means redelivering an event you have already processed.
Each delivery attempt is given 30 seconds. An attempt that hasn’t completed in that window is abandoned and retried. A failed delivery is retried up to 10 times with exponential backoff, starting at ~10 seconds and capping at 1 hour. After the final retry the event is dropped.
Retries reuse the same webhook-id header as the original attempt. You should expect duplicates even when nothing looks wrong. A response we never received — because it arrived after the timeout, or the connection dropped mid-response — is indistinguishable from a failure, so we may retry an event your endpoint already processed successfully.
Events
call.completed
Quarterzip sends this event after a call finishes processing. The request is a JSON POST with Content-Type: application/json.
Example payload
Payload size and transcript truncation
Payloads are capped at 1 MB. Transcripts are omitted if the payload would otherwise exceed this limit. When this occurs,transcript_truncated will be set true.

