Track delivery & receive callbacks
A 200 from the send request means the email was accepted, not delivered. Final delivery status arrives asynchronously. You can poll the tracking API or receive callbacks (webhooks).
Option A — Poll the tracking API
Use the trackingId returned by the send request.
curl -X GET 'https://connect.routee.net/email/tracking/single/YOUR_TRACKING_ID' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'This returns the message timeline (queued → sent → delivered, plus opens and clicks). Tracking rows typically appear 1–2 minutes after a successful send.
To search across messages, use POST /email/tracking with filters (date range, status, recipient). See Search email tracking.
Option B — Receive callbacks (webhooks)
Add a callback object to the send request to have Routee POST status and engagement events to your HTTPS endpoints — no polling required.
curl -X POST 'https://connect.routee.net/transactional-email' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"from": { "address": "[email protected]" },
"to": [{ "address": "[email protected]" }],
"subject": "Password reset",
"content": { "html": "<p>Click the link to reset your password.</p>" },
"callback": {
"statusCallback": {
"strategy": "OnChange",
"url": "https://your-app.example/webhooks/email-status"
},
"eventCallback": {
"onOpen": "https://your-app.example/webhooks/email-open",
"onClick": "https://your-app.example/webhooks/email-click"
}
}
}'statusCallback.strategy—OnChange(every status transition) orOnCompletion(final status only).eventCallback— separate URLs foronOpenandonClickengagement events.
Your endpoint should return 2x quickly and process the payload asynchronously.
More detailSee Email tracking, statuses & callbacks and Email Webhooks for payload schemas and the full status list.

