Skip to main content

Overview

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.

Events

Subscribe any endpoint to one or more of these events: An endpoint with no matching subscription for a fired event is silently skipped.

Creating a Webhook Endpoint

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

Event Payloads

Every delivery sends a JSON body with this envelope:
Fired when a call begins.

data fields


Request Headers

Every delivery includes these headers: Use X-Echo-Timestamp to reject replayed requests older than a few minutes.

Verifying Signatures

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.

Retry & Failure Alerting

Echo automatically retries failed deliveries up to 4 attempts total with exponential backoff: 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.

Delivery Logs

Every HTTP attempt is logged. Use the delivery log API to diagnose failures and trigger manual retries.
Filter delivery lists by status (pending, retrying, success, failed) and event_name. Paginate with limit + cursor.

Managing Endpoints

Safe secret rotation

1

Rotate the secret

Call POST /v1/projects/{projectId}/webhooks/{webhookId}/secret/rotate and copy the returned signing_secret.
2

Deploy the new secret

Update ECHO_SIGNING_SECRET in your environment and redeploy before proceeding.
3

Verify delivery

Trigger a test notification and confirm your server accepts the new signature.
The new secret takes effect immediately. Update your server before rotating — there is no grace period.