Subscribe to signed HTTP events for every call, lead, and booking your AI agent handles. Push them into your CRM, helpdesk, job-management tool, or a custom workflow — no polling, no Zapier upcharge, no integration backlog.
call.startedFires the moment the agent picks up. Use it to log the call in your system or set the contact to "in conversation".
call.completedFires when the call ends. Includes full transcript, recording URL, structured summary, sentiment, and duration.
lead.capturedFires whenever the agent extracts a structured lead — name, phone, intent, urgency, and any custom fields you defined.
booking.createdFires when an appointment is booked. Carries the calendar event id, start/end time, service type, and customer details.
transfer.requestedFires when the agent decides to hand the call off to a human. Useful for warm-handoff orchestration in your dialer.
voicemail.leftFires when a caller leaves a voicemail instead of completing a flow. Comes with audio URL and transcript.
Full payload schemas live in the REST API reference. Typed handlers ship with the TypeScript SDK.
lead.captured event looks likeStructured JSON, signed with HMAC-SHA256, delivered within a second of the agent hanging up. The payload is the contract.
{
"id": "evt_01HZ8X9...",
"type": "lead.captured",
"created": 1715200000,
"data": {
"call_id": "call_01HZ8X9...",
"agent_id": "agent_main",
"from_number": "+15551234567",
"lead": {
"name": "Jordan Reyes",
"phone": "+15551234567",
"email": "jordan@example.com",
"intent": "estimate",
"urgency": "this_week",
"service_address": "123 Oak St, Austin, TX",
"summary": "Wants estimate for kitchen sink replacement; flexible afternoons."
},
"transcript_url": "https://api.oncallclerk.com/v1/calls/call_01HZ.../transcript"
}
}On lead.captured, POST a contact into HubSpot, Salesforce, Pipedrive, or your own database. The payload arrives within a second of the agent saying goodbye.
On call.completed for support intents, open a Zendesk, Intercom, or Freshdesk ticket pre-populated with the transcript and summary.
On lead.captured, kick off a Twilio SMS, SendGrid email, or Customer.io campaign without any extra agent logic.
For trades using ServiceTitan, Jobber, or Housecall Pro, on booking.created create a job record with the right service category and assigned tech.
For IT and managed services, on transfer.requested or specific intents, fire a PagerDuty / Opsgenie incident.
Webhooks are HTTP — point them at Zapier, Make, n8n, Pipedream, or a Cloudflare Worker. Use whatever stack already runs your business logic.
In Integrations → Webhooks, add the HTTPS URL where you want events delivered. Supply one URL or different URLs per event type.
Subscribe to all events or only the ones you care about (call.completed and lead.captured cover most use cases).
Every request is signed with HMAC-SHA256 using your webhook secret. Verify the X-OnCallClerk-Signature header before trusting the payload.
Acknowledge within 5 seconds and process async on your side. Non-2xx responses are retried with exponential backoff for 24 hours.
Drop in a URL, verify a signature, and watch your CRM, helpdesk, and Slack channels light up the moment a real call comes in.