Analytics
Get Account Metrics
Retrieve email engagement metrics plus explainable commerce AOV, LTV, and revenue forecasts.
GET
Get Account Metrics
Returns aggregated email engagement metrics (sends, deliveries, bounces, opens, clicks, replies, unsubscribes) across your entire account for a given time period, plus a live audience snapshot in top-level
Read top-level
Check the
Check the
Useful for daily monitoring dashboards or Slack alerts.
The response includes
Fixed ranges are idempotent — safe to retry without double-counting.
subscriberCount (every stored contact) and activeSubscriberCount (status=active). Those two fields are independent of period / start / end. Set emailType=transactional to isolate Send API and transactional SMTP traffic, including both direct and saved-template sends. Test sends are excluded from these performance metrics by default so previews do not skew results, but they still count toward send usage and quota. Open and click metrics also exclude detected email-security scanners and tracked brand assets by default.
When no emailType filter is used, the optional top-level commerceForecast is calculated separately from the
requested email period and served from the latest background-computed snapshot.
It uses up to two years of provider-neutral
ecommerce.order_placed history and returns predicted AOV, predicted 12-month
customer value, expected 90-day orders and revenue, confidence ranges, and the
exact eligibility reasons when a store is still learning. Forecasts require at
least 20 orders, 10 customers, 30 days of history, 3 repeat customers, and a
recent order within 45 days.
The field is omitted when no snapshot is available or the analytics store is
temporarily unavailable; insufficient_data only describes a successfully
evaluated store that has not met the requirements above.
GET /api/v1/stats is kept as a backward-compatible alias for this endpoint.
Query Parameters
string
Sliding time window. One of:
1h, 24h, 7d, 30d, 90d. Ignored when
start and end are provided.string
Start of custom time range (ISO 8601, e.g.
2026-02-01T00:00:00Z). Must be
used with end.string
End of custom time range (ISO 8601, e.g.
2026-02-14T00:00:00Z). Must be used
with start. Max range: 90 days.string
Optional structural traffic filter. One of:
campaign, transactional, or
sequence. Use transactional for Send API and transactional SMTP metrics.string
Optional recipient mailbox provider filter, e.g.
gmail, microsoft,
yahoo, icloud, orange. Scopes engagement metrics to recipients whose
address is classified to that provider. Provider-filtered responses report
replies as 0 (replies cannot be segmented per provider) and omit the
commerce forecast. Events recorded before provider classification existed
are excluded while this filter is active.boolean
default:"false"
Set to
true to include detected scanner, preview, and tracked asset
open/click events in engagement metrics.How the period is applied
These metrics are a funnel over the sends made inside the period, not a log of events that happened inside it.sentcounts the emails sent betweenstartandend.- Every other count is attributed to one of those sends. An open that arrives three days after the send still counts toward the period the send belongs to, and an open that arrives today for an email sent last month does not.
repliesfollows the same rule, soreplyRatedivides replies earned by the period’s sends by that same cohort rather than by whatever happened to arrive in the calendar window.openedandclickedare unique counts deduplicated by email send. One recipient opening the same email five times counts once. They are not totals of open events.
opened <= delivered <= sent always holds and no rate can
exceed 100%. Activity on sends that predate the period is excluded rather
than counted against a smaller sent figure.
Response Fields
rateDenominator is delivered, falling back to sent when no delivery
events were recorded, and 0 when nothing was sent. It is returned so you can
reproduce any rate exactly instead of guessing the denominator.
Commerce forecast
This optional object is omitted when a current forecast snapshot is unavailable.Common Queries
How many subscribers do we have?
subscriberCount and activeSubscriberCount. They are a live audience snapshot and do not change with period.
How many emails did we send in the last 7 days?
sent field in the response.
What’s our overall open rate this month?
openRate field. It is calculated as opened / rateDenominator,
where rateDenominator is delivered (or sent when no delivery events were
recorded). Both are returned so you can verify the arithmetic.
How are we doing in the last 24 hours?
What are our Send API open and click rates?
opened, clicked, openRate, and clickRate for
transactional-origin messages. To inspect one delivery, use its emailSendId
with GET /api/v1/email-sends/{emailSendId}. To find IDs by subject, recipient,
or delivery status, use GET /api/v1/email-sends. For one saved transactional
email’s aggregate rates, use
GET /api/v1/metrics/transactional/{idOrSlug}.
Sync daily metrics to our data warehouse
Use fixed time ranges to pull yesterday’s metrics on a cron schedule:Responses
Get Account Metrics