Email Webhooks
Real-time notifications for email events. Get instant delivery, bounce, open, click, and complaint data pushed to your endpoint.
How it works
Email event occurs
An email is sent, delivered, bounced, opened, clicked, or receives a complaint.
Transmit captures
The event is captured, transformed into a clean payload, and enriched with your message metadata.
Webhook dispatched
An HMAC-SHA256 signed POST request is sent to your configured endpoint. Payloads use Transmit event names and your message IDs.
Your server handles
Verify the X-Xmit-Signature header, process the event, and return a 200 status. Build automations on any email event.
Capabilities
6 Event Types
Subscribe to email.sent, email.delivered, email.bounced, email.complained, email.opened, and email.clicked. Each event includes full message context.
HMAC-SHA256 Signatures
Every webhook payload is signed with your secret key. Verify the X-Xmit-Signature header to confirm the request came from Transmit.
Secret Rotation
Rotate your webhook signing secret at any time via the API or dashboard. The new secret takes effect immediately.
Selective Subscription
Subscribe to only the events you care about. Reduce noise by filtering to bounces and complaints, or track everything.
Webhook Handler (Node.js)
import crypto from "crypto";
app.post("/webhooks/email", (req, res) => {
// Verify HMAC-SHA256 signature
const sig = req.headers["x-xmit-signature"];
const expected = "sha256=" + crypto
.createHmac("sha256", process.env.WEBHOOK_SECRET)
.update(JSON.stringify(req.body))
.digest("hex");
if (sig !== expected) {
return res.status(401).send("Invalid signature");
}
const { event, data } = req.body;
switch (event) {
case "email.delivered":
console.log(`Delivered to ${data.recipient}`);
break;
case "email.bounced":
// Remove invalid address
await removeContact(data.recipient);
break;
case "email.complained":
// Unsubscribe immediately
await unsubscribe(data.recipient);
break;
}
res.status(200).send("OK");
});Related features
Inbound Email Processing
Receive, parse, and route incoming emails with webhooks, forwarding, or database storage. Per-address routing with wildcard support.
SMTP Relay
Drop-in SMTP server for legacy apps. Send through Transmit without changing your application code. Just update your SMTP credentials.
Frequently Asked Questions
What webhook events are available?
How do I verify webhook signatures?
Can I subscribe to specific events only?
How do I rotate my webhook secret?
What happens if my endpoint is down?
Start sending with Transmit
Set up in minutes. Volume-based pricing starts at $2/month.