Every event,
in real time.
Straight to your server.
Get instant POST notifications for every Sendexa event β message delivered, OTP verified, call answered, payment completed β signed, retried, and delivered with 99.8% reliability.
Events
Payload
99.8%
Delivery rate
~80ms
Avg. latency
3Γ exp
Retry policy
99.8%
Delivery rate
~80ms
Avg. latency
20+
Event types
3Γ
Retry attempts
99.9%
Uptime SLA
72h
Retry window
Event catalogue
20+ events across
every product.
{
"id": "evt_01J8XVZ9KQMNPRTX",
"event": "message.queued",
"created_at": "2025-03-26T10:42:18Z",
"api_version": "2025-01",
"data": {
"id": "msg_01J8XV4Y7GBW2C3D",
"status": "queued",
"to": "+233551234567",
"latency_ms": 112
},
"signature": "sha256=3c6e0b8a9f2..."
}Reliability & security
Built to survive
your outages too.
Your server goes down? We retry with exponential backoff up to 72 hours. Every payload is HMAC-signed so you can verify it's genuinely from Sendexa before processing.
3Γ exponential backoff: 10s β 100s β 1000s
72-hour retry window before an event is marked failed
HMAC-SHA256 signature on every payload β verify in one line
Configurable per-endpoint timeout (5s default, up to 30s)
Dashboard shows full delivery history and manual re-send
Idempotency IDs to safely handle duplicate deliveries
Initial delivery attempt
βΆ sendingImmediate β Your endpoint returned 500
Retry #1 β 10s backoff
T + 10s β Timeout after 30s
Retry #2 β 100s backoff
T + 110s β Connection refused
Retry #3 β 1000s backoff
T + 1110s β Endpoint recovered β 200 OK received
What's included
Production-grade
event delivery.
Real-time delivery
Events fire within ~80ms of the underlying action. No polling, no delays, no missed transitions.
HMAC-SHA256 signing
Every payload is signed with your webhook secret. Verify the signature in one line before processing β protect against spoofing.
Exponential retry
Three retries with exponential backoff over 72 hours. Manual re-send available from the dashboard at any time.
Event filtering
Subscribe to only the events you care about. Filter by event type, channel, or status β avoid noise, reduce processing load.
Delivery dashboard
See every event, delivery attempt, response code, and timing in one place. Filter by date, status, or event type.
Multiple endpoints
Register up to 10 endpoints per account. Send all events to one URL or route specific event types to dedicated services.
Developer experience
Verify, parse, act.
10 lines of code.
A webhook endpoint is just an HTTP POST handler. Verify the HMAC signature, parse the JSON body, and react to the event type. Works in any language.
Register your endpoint URL in the dashboard
Subscribe to the event types you care about
Verify the signature and handle the event
import crypto from "crypto";
import express from "express";
const app = express();
app.use(express.raw({ type: "application/json" }));
app.post("/webhooks/sendexa", (req, res) => {
// 1. Verify the signature
const sig = req.headers["x-sendexa-signature"];
const expected = crypto
.createHmac("sha256", process.env.WEBHOOK_SECRET)
.update(req.body)
.digest("hex");
if (sig !== `sha256=${expected}`) {
return res.status(401).send("Invalid signature");
}
// 2. Parse and handle the event
const event = JSON.parse(req.body);
switch (event.event) {
case "message.delivered":
await markMessageDelivered(event.data.message_id);
break;
case "otp.verified":
await activateUserSession(event.data.request_id);
break;
case "payment.completed":
await fulfillOrder(event.data.id);
break;
}
// 3. Return 200 quickly β process async
res.status(200).json({ received: true });
});Stop polling.
Start reacting.
Webhooks are included on every Sendexa plan β no extra charge, no upgrade required. Register your endpoint and start receiving events in minutes.