Glossary · Conversation
What is a webhook for call events?
Webhook (call events)
A webhook is a message the calling platform sends to your server the moment something happens on a call: it started, it ended, it went to voicemail, or its analysis is ready. Your system reacts without having to keep asking.
On a call
A COD confirmation call ends at 4:12 pm. Your server gets call.completed right away, then call.processed with "confirmed: yes" once the analysis is done, and your warehouse system releases the parcel for packing.
AI agents from ₹1 a minute.¹
Explained
Here is how it works, in plain words.
Calls take time. You start one, the phone rings, someone talks for two minutes, and then the outcome needs to reach your systems. A webhook is how it gets there.
You give the platform a URL. When the call changes state, the platform sends an HTTP POST to that URL with the details as JSON. Your server answers with a quick “200 OK” and does the real work afterwards. That’s the opposite of polling, where your code keeps asking “is it done yet?” and mostly hears no.
A voice platform usually sends an event when the call is answered and another when it ends, with the outcome: completed, voicemail, no answer, busy or failed. A later event arrives when the transcript and any analysis are ready.
Three habits keep webhook handlers healthy. The first is checking the signature. Anyone can POST to a public URL, so a shared secret and an HMAC over the raw body prove the event came from your provider. The second is idempotency. Retries mean the same event can arrive twice, so store the event id and ignore repeats. The third is speed. A handler that takes seconds to answer looks like a failure and gets retried.
Plan for things arriving out of order, too. Networks and retries don’t respect your state machine. Decide what a call’s state is from the status inside the event, and let a late “started” lose to an earlier “completed”.
Finally, have a fallback. If your endpoint was down for an hour, list the calls through the API and reconcile.
In Frequency
This is what Frequency does about it.
Pass a webhook URL when you create a call and we send a signed event at each step, with exactly one ending event per call. Each delivery carries an HMAC-SHA256 signature over the raw body, and if your server is down we keep retrying for about 36 minutes.
Questions
People often ask us these questions.
Can webhook events arrive out of order?
Yes. A retried call.started can arrive after call.completed. Order your records by the call's status, not by when the event arrived, and drop duplicates by event id.
Why does my webhook signature never verify?
Usually because the code signs a re-serialised body. Compute the HMAC over the raw bytes exactly as they arrived, with the timestamp and a dot in front.
Still deciding? Ask us.
Fifteen minutes with the team that builds it. Bring your script, or your hardest call.
Book 15 minutes