Webhooks
Real-time event notifications for resource changes
Overview
AskElephant delivers real-time webhook notifications when resources change in your workspace. Events are emitted consistently regardless of how the change originated — the web app, API writes, background jobs, or imports.
Webhook delivery is managed by Svix, providing automatic retries with exponential backoff, delivery logging, and endpoint management through a self-service portal.
Setup
- Navigate to Settings > Webhooks in the AskElephant dashboard
- The embedded Svix App Portal lets you:
- Add webhook endpoints (your receiving URL)
- Select which event types to subscribe to
- View delivery history and debug failed deliveries
- Rotate endpoint signing secrets
- Send test events
No API keys or engineering setup required — any workspace owner can configure webhooks directly.
Event types
All event types are versioned with a v1. prefix. Standard resources emit created, updated, and deleted events. One special event fires when a transcript finishes processing.
Payload envelope
Every webhook delivery uses a consistent envelope structure:
Delivery headers
Every webhook request also includes Svix signature headers alongside the JSON body:
HTTP header names are case-insensitive, but the examples in this guide use Svix’s canonical lowercase header names.
Resource payloads
The data.object field matches the corresponding REST API response for each resource type.
Contact
Optional fields (description, company, time_zone, crm_association) are included only when they have a value.
Company
Optional fields (description, industry, website, number_of_employees, logo_url, crm_association) are included only when they have a value.
Engagement
Optional fields (description, meeting_url, host_user_id) are included only when they have a value.
Tag
Behavior details
previous_attributes on update events
When a resource is updated, the data.previous_attributes object contains only the fields that changed, with their pre-update values. Fields that did not change are omitted.
Changes to relation fields (emails, phone_numbers, domains) that do not modify the parent resource will not emit a webhook event. To detect these changes, poll the REST API or listen for the parent resource’s next updated event.
Delete events
When a resource is deleted, the data.object contains the full resource state at the time of deletion, including relation fields (emails, phone_numbers, domains). No previous_attributes is included on delete events.
Transcript timeline completion
The v1.engagement.transcript_timeline.completed event fires once when the engagement transcript has been persisted and is available for retrieval. The data.object is the full engagement (not the transcript timeline). Note that additional processing (AI analysis, enrichment) may still be in progress after this event.
Use the engagement id from the payload to fetch the transcript via GET /v2/engagements/{id}/transcript_timeline.
Recommended pattern:
- Receive
v1.engagement.transcript_timeline.completedevent - Extract
data.object.id(the engagement ID) - Call
GET /v2/engagements/{id}/transcript_timelineto fetch the full transcript with speaker details, sentiment, and timing
Delivery guarantees
Webhook delivery is managed by Svix, which provides:
- Automatic retries with exponential backoff on failed deliveries
- Delivery logging visible in the Svix App Portal
- Endpoint signing so you can verify webhook authenticity
- At-least-once delivery — your endpoint should be idempotent
- Non-blocking — webhook delivery failures never block the operation that triggered the event
Verifying webhook signatures
Each webhook delivery is signed by Svix. Verify the request before processing it to ensure the payload is authentic and has not been tampered with.
Recommended verification flow:
- Read the
svix-id,svix-timestamp, andsvix-signatureheaders from the incoming request. - Use the exact raw request body bytes or string as received over HTTP. Do not reserialize the parsed JSON before verification.
- Verify the request with the endpoint secret shown in the Svix App Portal for that webhook endpoint.
- Only parse and process the event after signature verification succeeds.
See the Svix verification documentation for language-specific examples.