Event callbacks — webhooks when work finishes
Use when the user asks about streaming, async delivery, webhooks, or push notifications instead of polling enrichment endpoints.
There is no SSE / streaming response on paid enrich routes — each call returns complete JSON when it finishes. Event callbacks are the supported push surface: your HTTPS endpoint receives POSTs when product events fire.
Setup (humans)
Wizard: /connect?action=event-callbacks
(admin 411_… bearer required; usage keys get 403).
Setup (API)
Catalog (free, no auth):
curl -sS https://411data.io/api/v1/event-callbacks/catalog
Create subscription (admin bearer, up to 20 active):
curl -sS -X POST https://411data.io/api/v1/event-callbacks/subscriptions \
-H 'Authorization: Bearer 411_…' \
-H 'Content-Type: application/json' \
-d '{
"label": "CRM sync",
"event_types": ["lead.session_completed", "lead.enrichment_applied"],
"callback_url": "https://your-app.example/hooks/411data",
"http_method": "POST",
"auth_mode": "hmac_bearer"
}'
Save signing_secret from the response once (ech_… prefix). Verify
X-411data-Signature: sha256=<hmac> per /developers.
Test delivery:
curl -sS -X POST \
"https://411data.io/api/v1/event-callbacks/subscriptions/{id}/test" \
-H 'Authorization: Bearer 411_…' \
-H 'Content-Type: application/json' \
-d '{"event_type":"enrich.completed"}'
Event types (v1)
event_type |
When it fires |
|---|---|
lead.session_completed |
POST /api/v1/enrich/lead-session finishes |
lead.enrichment_applied |
Lead backfill persisted to audit store |
enrich.completed |
Single-record enrich matched |
enrich.job_completed |
POST /api/v1/enrich/jobs finishes (virtual true-up or CDP upto settle) |
enrich.no_match |
Bill-on-match refund (no usable rows) |
leads.search_completed |
POST /api/v1/leads/search returns (catalog route; offline by default) |
chat.tool_completed |
Enrich Agent tool call finishes |
chat.turn_completed |
Enrich Agent turn finishes |
chat.session_saved |
Demo transcript persisted |
support.ticket_created |
Support ticket opened (POST /api/v1/support/tickets) |
Typical patterns
- Async job queue: submit
POST /api/v1/enrich/jobswith optionalcallback_url, or subscribe toenrich.job_completed; poll withpoll_bearerif not using webhooks. - Async batch worker: fire parallel enrich calls or async jobs; subscribe to
enrich.job_completed,lead.session_completed, orenrich.completedso your app advances the queue on webhook instead of blocking on each HTTP response. - CRM sync:
lead.enrichment_applied+ graph payload summary in the event body. - Ops alerting:
support.ticket_createdwhen users open tickets from the API.
Related
- async_enrich_jobs — job queue submit + poll
- batch_and_concurrency — parallel REST + async jobs
- connect_wizards — deep link
?action=event-callbacks - /developers — full REST contract