Email tracking, statuses & callbacks

Delivery lifecycle, open/click events, statusCallback, eventCallback, and polling.

Email tracking, statuses & callbacks

Start here: E-mail — documentation hub.

After a message is accepted (HTTP 200 or SMTP 250), delivery and engagement events are recorded asynchronously. Use the Tracking API, portal logs, or webhooks to follow progress.

Allow 1–2 minutes after send before expecting log rows.


Tracking endpoints

OperationMethodPathReference
Search logsPOST/email/trackingSearch email tracking
Batch summaryGET/email/tracking/batch/{trackingId}Get email tracking (batch summary)
Recipient timelineGET/email/tracking/single/{trackingId}/recipients/{messageId}Get email tracking (recipient timeline)
Single message timelineGET/email/tracking/single/{trackingId}Get email tracking (single message timeline)

Base URL: https://connect.routee.net

Identifiers

IdSourceCustomer use
trackingIdSend response; portal Tracking ID columnPrimary batch id — batch summary and recipient timeline path
messageIdSearch list; batch recipients[]Per-recipient timeline key

Multi-recipient sends: one trackingId, many messageId values. Legacy single-recipient rows may use one id for both.

Use trackingId from send for batch operations. Use messageId from list/batch summary for recipient timelines.


Delivery lifecycle

Typical event progression on a recipient timeline (GET /email/tracking/single/{trackingId}/recipients/{messageId}) or legacy single-message timeline (GET /email/tracking/single/{trackingId}):

event / deliveryStatusMeaning
QUEUEDAccepted by Routee; waiting in mail pipeline
SENTHanded off to recipient MTA or next hop
DELIVEREDRecipient server accepted the message (may include DSN)
BOUNCEDPermanent failure (bad address, policy reject, etc.)
FAILEDCould not be delivered after retries
DEFERREDTemporary failure; may retry

Human-readable status (e.g. Queued, Delivered) appears alongside machine-oriented deliveryStatus.


Portal timeline vs technical details

The go.routee.net email log detail page is timeline-first:

What you seeWhen
Event timelineAlways — dates, status, callback events
Delivery detailsAutomatically on failed / bounced / rejected / deferred events — short human-readable SMTP descriptions
Technical details (collapsed)Optional — expand for raw results[], DSN JSON, and callback payloads (support / integrator troubleshooting)

Successful deliveries usually need only the timeline. Use Technical details when investigating bounces, SMTP relay issues, or webhook metadata.


Troubleshooting fields (API & technical details)

These fields appear on timeline rows from GET /email/tracking/single/{trackingId}. They are not required for normal monitoring — use them when delivery fails or support asks for MTA-level evidence.

FieldDescription
results[]SMTP attempts — deliveryStatus, description, dsn flag
dsnDelivery Status Notification (action, status code) when available
callbackBodyRaw open/click webhook metadata (IP, device, country)
envelopeSMTP envelope recipient (also shown on timeline when present)

Most useful for diagnosing bounces on SMTP sends and downstream MTA behaviour. HTTP API integrators with callbacks configured often rely on webhooks instead of polling these fields.

Engagement events (opens & clicks)

When you configure callback.eventCallback on HTTP send, Routee tracks opens and clicks. Timeline rows may include:

FieldDescription
openedCount, clickCountCounters on search/list rows
callbackBodyMetadata on timeline events — e.g. IP, country, device (expand Technical details in the portal, or read from API)

Engagement tracking requires the HTTP API send path with event callbacks configured (or equivalent platform tracking pixels in HTML content).


HTTP send — status callback

Configure on POST /transactional-email:

{
  "callback": {
    "statusCallback": {
      "strategy": "OnChange",
      "url": "https://partner.example/webhooks/email-status"
    }
  }
}
FieldDescription
strategyOnChange — notify on every status transition; OnCompletion — notify when delivery reaches a final state
urlHTTPS endpoint Routee POSTs to

Routee POSTs JSON to your URL as delivery status changes. Treat unknown fields as optional for forward compatibility.

Retry policy: Return HTTP 200 within 2 seconds. Routee retries failed callbacks (same platform policy as Viber callbacks — up to 12 retries over 24 hours). Whitelist callbacksallow.routee.net on your firewall.

Tutorial: Receive transactional email delivery callbacks


HTTP send — event callback (open / click)

{
  "callback": {
    "eventCallback": {
      "onOpen": "https://partner.example/webhooks/email-open",
      "onClick": "https://partner.example/webhooks/email-click"
    }
  }
}
FieldDescription
onOpenHTTPS URL notified when the recipient opens the message
onClickHTTPS URL notified when a tracked link is clicked

Event callbacks are independent of statusCallback — you may use either or both.


Polling vs callbacks

ApproachWhen to use
Polling POST /email/trackingSimple integrations, low volume, no public webhook
Timeline GETSupport tools, manual inspection, one-off debugging
statusCallbackPush delivery updates to your backend
eventCallbackMarketing analytics, engagement funnels
Portal logsOperators on go.routee.net — same underlying data

Search filters

POST /email/tracking accepts a JSON array of filters (same pattern as SMS tracking):

fieldNameExample use
recipient, from, toFind mail to/from an address
deliveryStatus, event, statusFilter by state
subjectSubject line search
dateCombined with dateStart / dateEnd query params
trackingIdBatch id from send (prefer query ?trackingId= over a body filter)
messageIdPer-recipient worker id
typeSend path — API, SMTP, or MARKETING

Pass [] for an unfiltered date-bounded list.


SMTP sends

SMTP-submitted messages appear in the same logs as HTTP sends. There is no SMTP-equivalent of callback in the MIME session — use polling or portal logs, or send via HTTP when webhooks are required.


Related