
- The Status of each message send request
- The Notification and Recipient associated with each send
- The Provider channels for the notification
Message Statuses
Every message in Courier progresses through a series of statuses. The diagram below shows the delivery and engagement lifecycle for a typical message.Status Lifecycle
Statuses are tracked by two independent systems:- Provider confirmation:
DELIVEREDdepends on your email provider asynchronously confirming that the recipient’s mail server accepted the message. This can be delayed by minutes or hours depending on the provider, and may never arrive at all. - Courier tracking:
OPENEDandCLICKEDare tracked by Courier directly via a tracking pixel and link redirect. They fire as soon as the recipient acts, independent of provider delivery confirmation.
OPENED or CLICKED before DELIVERED, or without DELIVERED arriving at all. If you’re monitoring delivery, treat OPENED and CLICKED as confirmation that the message was received.
Delivery Statuses
Processing Statuses
Error Statuses
Has Errors is not a status but a filter indicator showing that the message timeline includes an error response.
Terminal vs. Intermediate Statuses
Courier’s status model is monotonic — a message’s status only moves forward through the lifecycle. Understanding which statuses are terminal (final) and which are intermediate (in-progress) helps you build accurate delivery tracking:Channel-Specific Behavior
Inbox and Channel Sync
Notification event states are synchronized between the inbox and other channels within a notification template. For example, if a notification was sent with bothinbox and email channels, opening the email will mark the inbox notification as read.
This sync only works one way. Reading an inbox message will not mark an email as
opened.Viewing Logs
Histogram
The logs histogram breaks down delivery metrics for specific days, grouping events in color-coordinated graphs.
Log Detail View
Click any notification in the list view to open the log details, which includes:- Summary - Message and Recipient IDs, timestamps for each stage (Enqueued, Sent, First Delivery, etc.)
- Timeline - Detailed timeline of every step; click any event to view additional details

Error Encountered event in the timeline to review the error message.

Filtering Logs
Filter your message logs to find specific notifications:- Date - Filter by date range (limited by your account’s log retention period)
- Recipient - Filter by email address or Recipient ID
- Notification - Filter by specific notification template
- Status - Filter by one or more statuses: Queued, Sent, Delivered, Opened, Clicked, Undeliverable, Unmapped
- Errors - Show only notifications with errors in their timeline
- Provider - Filter by one or more integrated providers
Unmapped means the Event ID does not map to a notification or the Notification ID is invalid.
Rendered Content
The Courier Messages API lets you retrieve the rendered output of any notification in your send history. This is useful for debugging and verifying what was actually sent to providers. To fetch the rendered content for a message:-
Fetch message history - Use GET
/messages/:message_id/historywith the message ID from your send response. You can use the history endpoint or thegetMessageHistorySDK function. -
Fetch message content - Use the root-relative URL from the
RENDEREDevent in the history response, appended to the Courier API host:https://api.courier.com


Rendered Content for Emails
HTML content is returned withcontent-type: text/html as raw HTML:

Log Retention
Courier retains message logs for different periods depending on your account type:- Free and Pro accounts: Logs are retained for 30 days
- Contracted accounts: Logs are retained for 1 year
Enterprise Customers: If you need longer log retention periods, contact Courier Support to discuss extended retention options.
Troubleshooting Delivery Issues
If a message shows Sent but the recipient hasn’t received it, use the timeline in the log detail view to identify where the problem is:- Check the provider response. Click the Sent event to see the raw response. If the provider returned an error, the details will be here.
- Check your provider’s dashboard. Cross-reference the message ID with your provider’s activity feed (SendGrid Activity, Postmark Activity, SES console, etc.) for bounce, block, or deferral events.
- Verify sender authentication. Confirm that SPF, DKIM, and DMARC records are correctly configured for your sending domain.
Automation Logs
The Automation logs provide detailed insights into the status of an automation run as well as step details.Automation Run List

