Echo’s webhook system lets you register multiple HTTPS endpoints per project. Each endpoint subscribes to specific events, carries its own signing secret, and benefits from automatic retry with a full delivery audit log.
Save the signing_secret — use it to verify the X-Echo-Signature header on every incoming request. It is always readable by fetching the endpoint, but treat it like a password.
During development, use a tunnel tool like ngrok or Cloudflare Tunnel to expose your local server.
Fired after the call ends, once analysis is complete. Contains the full transcript and any structured output from the agent’s output_schema.
{ "data": { "analysis": { "confirmed": true, "rescheduling": false, "preferred_date": null, "preferred_time": null }, "ended_at": "2026-04-12T15:54:24.323Z", "started_at": "2026-04-12T15:51:59.499Z", "transcript": "AI: Hi Sarah, this is Echo Reminders calling on behalf of Greenfield Clinic. I'm reaching out to remind you about your appointment on Monday, April 14 at 10:00 AM. Are you still able to make it?\nCustomer: Yes, I'll be there.\nAI: Perfect, we'll see you then. Have a great day!", "ended_reason": "customer-ended-call", "duration_seconds": 28.4 }, "event_id": "cc66d0a2-7cfd-481f-9826-596e2bb9d58f", "event_name": "call.summary", "customer_id": "8cc6199f-9466-46f2-9db7-936f3c2c1c0b", "notification_id": "b612d95c-0941-4e4a-8a1e-b8da7baf82a1"}
Echo signs the raw request body with HMAC-SHA256 using your endpoint’s signing_secret. Always verify the signature before processing a webhook. This prevents spoofed requests from triggering actions in your system.
Use the raw request body for signature verification — before any JSON parsing. Re-serializing parsed JSON can alter whitespace and break the HMAC match.
Echo automatically retries failed deliveries up to 4 attempts total with exponential backoff:
Attempt
Timing
1
Immediate
2
1 minute after attempt 1 fails
3
5 minutes after attempt 2 fails
4
30 minutes after attempt 3 fails
A delivery is considered failed if your server returns a non-2xx response, times out (5 s per attempt), or is unreachable. After all 4 attempts fail, the delivery is marked failed and no further automatic retries are scheduled.After 4 consecutive delivery failures on the same endpoint, Echo sends one email alert to all business members.
Use event_id as your idempotency key — it is identical across all retry attempts for the same event occurrence.
Every HTTP attempt is logged. Use the delivery log API to diagnose failures and trigger manual retries.
# All deliveries across the project (paginated)GET /v1/projects/{projectId}/webhooks/deliveries# Deliveries for a specific endpointGET /v1/projects/{projectId}/webhooks/{webhookId}/deliveries# Single delivery with all per-attempt detailsGET /v1/projects/{projectId}/webhooks/{webhookId}/deliveries/{deliveryId}# Manually retry a failed deliveryPOST /v1/projects/{projectId}/webhooks/{webhookId}/deliveries/{deliveryId}/retry
Filter delivery lists by status (pending, retrying, success, failed) and event_name. Paginate with limit + cursor.