Outpero

Product feature

Post-call webhooks: send every call's result to your CRM automatically

A post-call webhook is an HTTP POST that Outpero sends to your URL when a call ends. It carries the outcome, summary, transcript, captured fields and a recording link, so your CRM can update itself. You choose whether it fires on every call, completed calls only, or voicemail only, and can sign it with HMAC.

<30s*
to call a new lead
0.8–1.3s
avg conversational latency
7
Indian languages, live
₹5/min
no setup fee

* Time from the lead reaching Outpero to the first ring, under normal conditions. It depends on how quickly your lead source delivers the lead.

At a glance

Post-call webhooks: the short version

Details
Where it livesEmployee > Post-Call tab > Post-Call Webhooks
When it firesEvery call, Completed only, or Voicemail only
How manyUp to 10 webhooks per AI employee
DeliveryOne POST, 5 second timeout, no retries
SecurityOptional HMAC signing, plus custom headers such as a CRM API key
FormatFlat or nested payload, JSON or form encoding, transcript can be excluded

On a call

How post-call webhooks works, step by step

  • 01A call connects, runs to its end and is classified, producing an outcome, a summary and the values you asked the employee to capture.
  • 02Outpero checks each webhook on the employee against its trigger: every call, completed only, or voicemail only.
  • 03For every matching webhook it builds the payload in your chosen shape, adds your custom headers and, if signing is on, the timestamp and signature headers.
  • 04It sends one POST with a 5 second timeout, and does not follow redirects or try again if your server is slow or returns an error.
  • 05Your system receives the call.ended event, verifies the signature if you use one, and writes the result to the CRM, sheet or workflow tool.

Hear how a call goes

A sample call that uses post-call webhooks

Illustrative call

A diagnostics lab follows up on a booking enquiry. The result is pushed to its CRM when the call ends. · Runs in Telugu with English words, shown here in English; shown here in English.

  1. Outpero AI
    Hello Ms Lakshmi, I am an AI assistant calling from Sree Diagnostics about the full body checkup you enquired about. Do you have two minutes?
  2. Caller
    Yes, go ahead.
  3. Outpero AI
    Would you like to book it for this week? We have fasting slots from 7 to 10 in the morning.
  4. Caller
    Friday morning is good. Which branch is that?
  5. Outpero AI
    I can note Friday morning for our Kukatpally branch. May I confirm your age for the right package?
  6. Caller
    I am 42.
  7. Outpero AI
    Thank you. I have noted Friday at the Kukatpally branch for the package suited to age 42. Our team will send the confirmation shortly.
  8. Caller
    Fine, thank you.
  9. Outpero AI
    Thank you, Ms Lakshmi. Have a good day.
What the agent did

When the call ended, Outpero sent a call.ended POST to the lab's CRM with status completed, the qualified outcome, a two line summary, and captured fields for preferred day, branch and age. The CRM created the booking task without anyone opening the dashboard. Illustrative example.

An example written to show the shape of the call, not a recording or a customer result.

In the product

Set up post-call webhooks

  • 01Open the AI employee, go to the Post-Call tab and scroll to the Post-Call Webhooks section, then add a new webhook with your endpoint URL.
  • 02Choose the trigger: Every call, Completed only, or Voicemail only, depending on which outcomes your system needs to hear about.
  • 03Add any custom headers your endpoint expects, such as an API key for your CRM, and pick flat or nested payload and JSON or form encoding.
  • 04Switch on Turn on signing if your server should verify requests, and tick the option to exclude the transcript if it should not leave Outpero.
  • 05Use the test send button to deliver a sample payload to your URL, check it arrives as expected, then save the webhook.

In detail

Post-call webhooks explained

When a post-call webhook fires

TriggerFires forTypical use
Every callAll connected calls, including voicemailFull logging in a warehouse or CRM timeline
Completed onlyConnected calls that were not detected as voicemailUpdating lead status and notifying the sales team
Voicemail onlyCalls where voicemail was detectedScheduling another attempt or tagging a lead

A call that never connects, such as one that goes unanswered, never becomes a call record, so none of these triggers apply to it. Use the dashboard or your own dial logs for those.

What is in the payload

  • —event, always call.ended, with call_id, employee and direction.
  • —from and to numbers, plus status (completed or voicemail) and hangup_reason.
  • —duration_s, started_at and ended_at timestamps.
  • —recording_url, a signed link valid for 24 hours.
  • —pre_call, the lead data the call started with.
  • —transcript, containing spoken turns only.
  • —outcome, summary and captured, the classified result and the fields you defined.

You can pick a flat or nested shape, send JSON or form-encoded data, and exclude the transcript when the receiving system does not need it.

Verifying the signature

When Turn on signing is enabled, every request carries two extra headers: X-Outpero-Timestamp and X-Outpero-Signature, whose value begins with sha256=. The signature is an HMAC over the timestamp, a full stop, and the raw request body. Recompute it on your server with the shared secret, compare, and reject mismatches or very old timestamps.

Plan for one attempt

Because there are no retries, treat the webhook as a fast notification, not a queue. Return a 200 quickly, do heavy work afterwards, and use the dashboard export to reconcile anything your server missed.

Webhooks in and out

Post-call webhooks send results out. For the reverse direction, Outpero also has an instant-lead intake endpoint that lets a form or CRM push a new lead in so it is called within seconds. That is covered on its own page and is only mentioned here for completeness.

Put it to work

What teams use post-call webhooks for

UseHow it helps
CRM updates without data entryCreate or update a lead in your CRM the moment the call ends, with the outcome, summary and captured fields attached.
Alerting your sales teamPost only qualified or callback outcomes into a Slack, Teams or email workflow so the team acts on warm leads first.
Separate handling for voicemailAdd a Voicemail only webhook that tags the lead for another attempt, while a different webhook handles completed calls.
Feeding a data warehouseSend every call, with the transcript, to your own store for reporting beyond what the dashboard shows.
Several systems at onceRun up to 10 webhooks per employee, for example one to the CRM, one to billing and one to a notification tool.

Straight answers

What post-call webhooks does not do

Limits and things to know before you rely on it
  • !Each delivery is a single POST with a 5 second timeout and no retries, so a down or slow endpoint loses that event unless you also check the dashboard.
  • !Calls that never connect create no call record, so no webhook is sent for them; only connected calls are reported.
  • !Redirects are not followed, so the URL you enter must be the final address of the endpoint.
  • !Outcome, summary and captured fields are null in the payload if the call could not be classified, and the payload carries no cost or system prompt.
  • !The recording link inside the payload is a signed link that stays valid for 24 hours, so download or store the audio promptly.

Post-call webhooks: questions people ask

What does Outpero send to a webhook after a call?

+

A call.ended event containing call_id, employee, direction, from and to numbers, status, hangup_reason, duration, start and end times, a recording link, the pre-call data, the transcript, the outcome, the summary and the captured fields. You can choose a flat or nested shape, JSON or form encoding, and leave the transcript out.

Are failed webhooks retried?

+

No. Each webhook is a single POST with a 5 second timeout and no retries. If your server is down or answers too slowly, that event is not sent again. Respond quickly, process in the background, and use the dashboard or CSV export to catch anything your system missed during an outage.

How do I verify that a webhook really came from Outpero?

+

Turn on signing for the webhook. Each request then includes X-Outpero-Timestamp and X-Outpero-Signature, which starts with sha256=. Compute an HMAC of the timestamp, a full stop and the raw body using your secret, compare it with the header, and reject requests that do not match or are too old.

Can I send results only for completed calls or only voicemail?

+

Yes. Each webhook has a trigger: Every call, Completed only, or Voicemail only. Completed only skips calls detected as voicemail. You can add up to 10 webhooks per AI employee, so one endpoint can receive completed calls while another receives voicemail leads for a retry workflow.

How long is the recording link valid?

+

The recording_url in the payload is a signed link that stays valid for 24 hours. After that it stops working, so your system should download or store the audio soon after receiving the event if you need it for longer. The dashboard keeps its own recording player for each call.

Is there a webhook for calls that were never answered?

+

No. A call that never connects does not produce a call record, so no post-call webhook is sent for it. Webhooks are sent for connected calls only. Track unanswered attempts through your lead source, the dashboard or your retry settings rather than relying on a webhook event.

Enterprise and custom: volume plans go as low as ₹3.5/min, quoted on your needs.

Get a custom quote

Try it in 30 seconds

Hear your business’s fastest employee take a call

Call the agent yourself and hear how it handles a real enquiry in your customers' language. No card, no signup — 50 free credits when you’re ready to deploy one.

No setup fee · calls from ₹5/min

Or see the full product — Calls from ₹5/min, no setup fee.