Webhooks guide
Receive delivery events at your own URL with HMAC-SHA256 verification.
When a message reaches a terminal state (delivered, failed, billed, or bounced) Teekrr POSTs a JSON event to every active webhook endpoint you’ve registered for that event type. Webhooks are managed in-app at /api-management → Webhooks.
Headers Teekrr sends
Payload envelope
The exact data shape depends on the event — see the API Reference section’s “Webhooks” group for per-event schemas and examples.
Verifying the signature
The signature is HMAC-SHA256(secretHash, rawBody). The HMAC key is the SHA-256 hash of your plaintext secret, not the plaintext itself. You receive the plaintext once at creation; Teekrr stores only the hash.
Always use the raw, untouched request body for verification. JSON parsing changes whitespace and breaks the signature. Express needs express.raw({ type: "application/json" }). FastAPI needs await request.body() before request.json().
Retries & timeouts
- Teekrr applies a 10-second connect/read timeout per delivery.
- Teekrr does not automatically retry failed webhook deliveries today — design your endpoint to be idempotent, and use the dashboard’s Message Logs as a backstop.
- Every delivery attempt is recorded at
/api-management → Webhooks → Delivery Logs.
Idempotency
Each event includes the message UUID inside data (e.g. data.messageUuid). De-dupe on (event, messageUuid) to be safe against future retry-on-failure rollouts.
The four event types
For full per-event payload shapes, see the Webhooks group in the API Reference.