Add a Webhook
Enter the endpoint URL
Your webhook URL must be publicly reachable over HTTPS. Localhost and private IPs won’t work — use a tunnel like ngrok for local testing.
Select events
Pick the events you want. Choose specific events or
* for everything:delivery— message was accepted by the recipient’s mail serverbounce— message was rejected (hard or soft)complaint— recipient marked the message as spamopen— recipient opened the email (tracking pixel)click— recipient clicked a tracked link*— all events
Optional: filter by tag
Narrow the webhook to emails tagged with specific labels — useful when different parts of your app need different event streams (e.g., a campaign webhook vs. a transactional webhook).
Webhook Payload
Each event POSTs JSON to your endpoint:click events, you’ll also get a url field with the clicked link.
Verify Signatures
Every request includes anX-Hiveku-Signature header with an HMAC-SHA256 of the raw request body. Verify it before trusting the payload.
Retry & Reliability
Hiveku retries failed deliveries with exponential backoff when your endpoint returns a 5xx status or times out.- Retries continue for up to 24 hours
- Backoff starts at 30 seconds, doubles each attempt
- Hiveku stops retrying after a successful 2xx response
Because events can be retried, your handler should be idempotent. Use the
event_id field as a deduplication key.Monitor Webhook Health
The Webhooks tab shows per-webhook metrics:- Success rate (2xx responses)
- Failure rate (4xx/5xx)
- Average latency
- Last successful delivery
- Last failure and reason
Filter by Tag
When you send an email, you can attach tags (tags: ['campaign-q2', 'newsletter']). Webhooks configured with tag filters only fire for matching emails.
Typical use:
- One webhook for transactional emails (receipts, auth) → logs to your analytics DB
- Another for campaigns → updates CRM engagement scores
- Another for cold outreach → triggers follow-up workflows
Verify Your Webhook
See the email webhooks reference for the full event schema.
Troubleshooting
No events arriving
No events arriving
Your URL must be publicly accessible HTTPS.
localhost, 127.0.0.1, and private IP ranges are blocked. Use ngrok, Cloudflare Tunnel, or deploy to a staging URL for local testing.Signature verification fails
Signature verification fails
Use the raw request body, not the parsed JSON. Call
req.text() and verify against that string, then parse separately. Middleware that auto-parses JSON before your handler will break verification.Webhook auto-disabled
Webhook auto-disabled
Too many consecutive failures. Fix your endpoint (check logs for the error), then click Re-enable on the webhook row. Consider adding error-handling upstream so a single bug doesn’t take down your webhook.
Receiving duplicate events
Receiving duplicate events
Expected during retries if your handler’s first response was slow or ambiguous. De-duplicate using the
event_id field — store processed IDs for 24 hours and skip duplicates.Missing some event types
Missing some event types
Double-check the events you subscribed to.
open and click events require email tracking to be enabled on the original send. Transactional emails often have tracking off by default.What’s Next?
Send Emails
Start sending emails that fire webhook events
Email Webhooks Reference
Full event schema and API details