Skip to main content
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 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.
  • sent counts the emails sent between start and end.
  • 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.
  • replies follows the same rule, so replyRate divides replies earned by the period’s sends by that same cohort rather than by whatever happened to arrive in the calendar window.
  • opened and clicked are unique counts deduplicated by email send. One recipient opening the same email five times counts once. They are not totals of open events.
Because of this, 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?

Read top-level 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?

Check the sent field in the response.

What’s our overall open rate this month?

Check the 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?

Useful for daily monitoring dashboards or Slack alerts.

What are our Send API open and click rates?

The response includes 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:
Fixed ranges are idempotent — safe to retry without double-counting.

Responses