Analytics
Get Recipient Metrics
Retrieve paginated recipient engagement data including opens, clicks, and unsubscribes.
GET
Get Recipient Metrics
Returns a paginated list of recipients who received emails, along with their engagement events (opens, clicks, unsubscribes). Use this endpoint to sync engagement data to your own database or to look up how a specific person interacted with your emails. Test sends are excluded from recipient engagement results by default so previews do not skew results, but they still count toward send usage and quota. Open and click events also exclude detected email-security scanners and tracked brand assets by default.
Returns all opens, clicks, and unsubscribe status for that person. Useful for support conversations or CRM enrichment.
Page through the results to get all recipients. Check each recipient’s
Check each recipient’s
Increment
Query Parameters
Filter to a single recipient by email address.
Filter to recipients of a specific campaign. Cannot be combined with
sequenceId.Filter to recipients of a specific sequence. Cannot be combined with
campaignId.Sliding time window. One of:
1h, 24h, 7d, 30d, 90d. Ignored when
start and end are provided.Start of custom time range (ISO 8601). Must be used with
end.End of custom time range (ISO 8601). Must be used with
start. Max range: 90
days.Page number for pagination.
Recipients per page (max 100).
Set to
true to include detected scanner, preview, and tracked asset
open/click events in each recipient’s engagement arrays.Response Fields
| Field | Type | Description |
|---|---|---|
recipients[].email | string | Recipient email address |
recipients[].opened | array | List of open events with campaignId, subject, and at timestamp |
recipients[].opened[].machine | boolean | Whether the event is classified as bot/scanner activity |
recipients[].opened[].engagementQuality | string | human, machine, or asset |
recipients[].opened[].classificationReasons | array | Classification reason codes, such as microsoft_office_scanner, managed_image_asset, or static_brand_asset |
recipients[].clicked | array | List of click events with campaignId, subject, url, and at timestamp |
recipients[].clicked[].machine | boolean | Whether the event is classified as bot/scanner activity |
recipients[].clicked[].engagementQuality | string | human, machine, or asset |
recipients[].clicked[].classificationReasons | array | Classification reason codes, such as microsoft_office_scanner, managed_image_asset, or static_brand_asset |
recipients[].unsubscribed | boolean | Whether the recipient unsubscribed |
pagination.page | number | Current page |
pagination.limit | number | Results per page |
pagination.total | number | Total matching recipients |
pagination.totalPages | number | Total pages available |
Common Queries
How did a specific user interact with our emails?
Who opened our latest campaign?
opened array — those with entries opened the campaign.
Who clicked a link in our onboarding sequence?
clicked array for entries. The url field shows which link they clicked.
Who engaged in the last 24 hours?
Sync engagement data to our database on a cron schedule
Pull yesterday’s engagement data with a fixed time range:page until page > totalPages to get all results. Fixed time ranges are idempotent — safe to retry.
Responses
Get Recipient Metrics