Developers
Webhook events
Review the event categories Tideflow exposes and how to subscribe to the right ones.
Last updated: 2026-04-06
Event types
Tideflow currently sends three types of webhook events:
new_lead— Fired when a new caller/lead is created after a call.call_completed— Fired when call processing finishes (recording saved, transcription complete).lead_status_changed— Fired when a lead's status is manually updated.
Each webhook endpoint can subscribe to one or more event types. Events are matched to endpoints based on your subscription selection.
Production deliveries do not include an event type field in the JSON body. Route events using the X-Tideflow-Event header, and treat the payload body as event-specific data.
new_lead
Sent after a call is processed and a lead record is created. This is typically the most important event for CRM integrations.
{
"event_id": "twilio_recording:new_lead:<lead_id>",
"occurred_at": "2026-04-06T02:30:00.000Z",
"business_id": "<uuid>",
"lead_id": "<uuid>",
"call_id": null,
"score": 78,
"priority_score": 82,
"urgency": "medium",
"status": "new",
"summary": "Caller asked about plumbing repair for a leaking pipe.",
"source": "twilio_recording"
}Key fields
| Field | Description |
|---|---|
event_id | Unique event identifier for deduplication. |
lead_id | The lead record UUID. Use this to look up the full lead in Tideflow. |
score | AI-generated lead quality score (0–100). |
priority_score | Combined priority score factoring intent, value, and urgency. |
urgency | Urgency level: low, medium, or high. |
summary | AI-generated plain-text summary of what the caller needed. |
source | Origin of the event (e.g., twilio_recording). |
call_completed
Sent when a call record is fully saved, including the recording and transcription.
{
"event_id": "twilio_recording:call_completed:<call_id>",
"occurred_at": "2026-04-06T02:30:05.000Z",
"business_id": "<uuid>",
"call_id": "<uuid>",
"call_sid": "CA...",
"status": "voicemail_transcribed",
"duration_seconds": 34,
"lead_id": "<uuid or null>",
"source": "voicemail"
}Key fields
| Field | Description |
|---|---|
call_id | The call record UUID. |
call_sid | Twilio call SID for cross-referencing with Twilio logs. |
duration_seconds | Call duration in seconds. |
lead_id | Associated lead UUID, or null if no lead was created. |
source | Call source: voicemail or ai_receptionist. |
lead_status_changed
Sent when a lead's status is manually updated from the dashboard.
{
"event_id": "lead_status_changed:<lead_id>:new->contacted:<timestamp>",
"occurred_at": "2026-04-06T03:15:00.000Z",
"business_id": "<uuid>",
"lead_id": "<uuid>",
"from_status": "new",
"to_status": "contacted"
}Test events
When you use the test button in Settings → Integrations, Tideflow sends a new_lead event with sample data. Test events have an event_id starting with test_ and a source of tideflow-test so you can identify them in your receiver. The synthetic test payload may include extra convenience fields that are not present on production deliveries, so always route on X-Tideflow-Event rather than a payload type.
Subscribing to events
When you add or edit a webhook endpoint, choose which events it should receive. An endpoint only receives deliveries for the event types it subscribes to. You can change the subscription at any time from the integrations settings.
Next up
Webhook authentication and delivery→Understand delivery expectations, signatures, and retry concepts for production receivers.