Webhook Automation Engine

Event-Driven AI Calling Triggered via HTTP Webhooks

Connect any website, app, Zapier workflow, or custom backend. Send an HTTP POST request to initiate an immediate outbound AI phone call.

Updated

Real-Time Event Webhooks

Receive webhooks on Call Started, Call Ended, Lead Qualified, or Call Failed.

Bidirectional by Design

Inbound webhooks start calls; outbound webhooks deliver progress and results, so your system never has to poll.

Context Variables in the Payload

Anything you send is available to the script, so the agent opens with the specific order, amount or appointment.

Works With Zapier, Make and n8n

Bridges tools that have no native integration without any code at all.

Webhooks are the lowest-common-denominator integration, and that is exactly why they matter. Every system worth integrating with can send an HTTP request and receive one — which means a legacy ERP, an internal admin panel, a custom booking system or a no-code automation tool can all trigger phone calls without anyone building a connector.

The model is deliberately simple in both directions. You post to start a call; we post back as it progresses and when it ends. Everything else — carrier routing, speech, reasoning, retries — sits behind that boundary.

One POST
To Place a Call
Events
Started, Ended, Qualified, Failed
JSON
Payloads Both Ways
Any system
That Speaks HTTP

Building a Reliable Webhook Handler

The receiving side is where integrations most often go wrong, and the failures are subtle rather than obvious. These practices prevent the ones that actually occur.

  • Acknowledge fast, process later — Return a 200 immediately and do the work asynchronously. A slow handler triggers retries and duplicate processing.
  • Make processing idempotent — The same event may arrive more than once. Key on the call ID so a repeat delivery does not create a duplicate record.
  • Handle events out of order — Network timing means completion can theoretically arrive before an intermediate event. Do not assume strict sequence.
  • Verify the request — Check the signature or shared secret rather than trusting anything that posts to your endpoint.
  • Log the raw payload — When something looks wrong three weeks later, the raw body is the only thing that settles it.
  • Use an idempotency key outbound — So a timeout on your side does not result in the customer being dialled twice.

What Each Event Is Actually Useful For

Subscribing to everything and acting on nothing is common. Each event has a distinct practical use.

EventUse it forNotes
Call queuedConfirming the trigger workedUseful during integration, noisy in production
RingingLive campaign monitoringRarely needs business logic
AnsweredReal-time dashboardsMarks the start of billable talk time
CompletedWriting results to your systemThe main event; carries the full payload
FailedRetry and diagnosticsDistinguish no-answer from invalid number
QualifiedImmediate sales alertingFire the hot-lead notification here
Transfer attemptedMeasuring handoff speedTrack when nobody picks up

Handle Completed and Failed properly first. Everything else is monitoring, and most integrations work correctly with just those two plus Qualified for alerting.

Frequently Asked Questions

What payload format is supported?
Standard JSON payloads with dynamic custom key-value variables.
What payload format is used?
JSON in both directions. Outbound you post the destination number, agent ID and a context object; inbound you receive event type, call ID, disposition and — on completion — transcript, recording URL and your extracted fields.
How do we verify requests genuinely came from the platform?
Validate the signature or shared secret on every incoming webhook rather than trusting the endpoint being reachable. This is worth doing before you go to production, not after.
What happens if our endpoint is down?
Deliveries are retried, which is precisely why your handler must be idempotent — a retry after a partial failure can otherwise create duplicate records in your system.
Can we use this with Zapier, Make or n8n?
Yes. All of them can issue the outbound request and receive the completion webhook, which is the usual way teams connect systems that have no native integration and no available developer.
Do we need to poll for call status?
No, and you should not. Progress and completion events are pushed to you, so polling adds load and latency without providing anything the webhooks do not.

Related Reading