OnCallClerk Logo
Developer integration

AI receptionist webhooks for any system on your stack

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.

I.Events you can subscribe to

Six event types covering the full call lifecycle

call.started

Fires the moment the agent picks up. Use it to log the call in your system or set the contact to "in conversation".

call.completed

Fires when the call ends. Includes full transcript, recording URL, structured summary, sentiment, and duration.

lead.captured

Fires whenever the agent extracts a structured lead — name, phone, intent, urgency, and any custom fields you defined.

booking.created

Fires when an appointment is booked. Carries the calendar event id, start/end time, service type, and customer details.

transfer.requested

Fires when the agent decides to hand the call off to a human. Useful for warm-handoff orchestration in your dialer.

voicemail.left

Fires 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.

II.Sample payload

What a lead.captured event looks like

Structured 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"
  }
}
III.What teams build with this

From CRM sync to PagerDuty incidents

Sync leads into your CRM

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.

Open helpdesk tickets

On call.completed for support intents, open a Zendesk, Intercom, or Freshdesk ticket pre-populated with the transcript and summary.

Trigger SMS or email follow-up

On lead.captured, kick off a Twilio SMS, SendGrid email, or Customer.io campaign without any extra agent logic.

Update job-management software

For trades using ServiceTitan, Jobber, or Housecall Pro, on booking.created create a job record with the right service category and assigned tech.

Page the on-call engineer

For IT and managed services, on transfer.requested or specific intents, fire a PagerDuty / Opsgenie incident.

Drive your own automations

Webhooks are HTTP — point them at Zapier, Make, n8n, Pipedream, or a Cloudflare Worker. Use whatever stack already runs your business logic.

IV.Setup

Four steps to a verified, retried, production-grade webhook

01

Add your endpoint URL

In Integrations → Webhooks, add the HTTPS URL where you want events delivered. Supply one URL or different URLs per event type.

02

Pick events to subscribe to

Subscribe to all events or only the ones you care about (call.completed and lead.captured cover most use cases).

03

Verify the signature

Every request is signed with HMAC-SHA256 using your webhook secret. Verify the X-OnCallClerk-Signature header before trusting the payload.

04

Respond 2xx fast

Acknowledge within 5 seconds and process async on your side. Non-2xx responses are retried with exponential backoff for 24 hours.

V.FAQ

Common questions

Are webhooks real-time, or is there a delay?

+
Real-time. Events are dispatched within a second of the underlying state change — call.completed fires as the call ends, lead.captured fires the moment the agent has the structured data.

How are webhooks authenticated?

+
Every request carries an X-OnCallClerk-Signature header containing an HMAC-SHA256 of the raw request body, signed with your webhook secret. Compute the same hash on your side and constant-time compare.

What happens if my endpoint is down?

+
Failed deliveries (any non-2xx response or timeout) are retried with exponential backoff for up to 24 hours. You also get a delivery log in the dashboard so you can replay events manually.

Can the agent call my API mid-call to fetch data?

+
Yes — that's a different mechanism called function calls (or tool calls). Define an HTTP function in the dashboard with your endpoint URL and JSON schema, and the agent will invoke it inline during the conversation. See the developer docs for the schema.

Can I use Zapier or Make instead of writing my own endpoint?

+
Absolutely. Both Zapier and Make support generic webhook triggers, so you can drop our webhook URL in and route events visually. Most non-technical operators run integrations this way.

Do you have IP allowlisting for sending webhooks?

+
Yes. Outbound webhook traffic comes from a documented set of static IPs that you can allowlist on your firewall. Listed in the developer documentation.

Wire up your stack in an afternoon

Drop in a URL, verify a signature, and watch your CRM, helpdesk, and Slack channels light up the moment a real call comes in.