Statistics Reference
Endpoints for daily, category-level, and summary statistics. Stats are aggregated nightly from message events; live sends are reflected the next day (or immediately, if you manually rebuild).
Base path: /v3/stats/
Required permission: stats.read.
GET /v3/stats#
Daily statistics for a date range.
Query parameters:
| Parameter | Type | Required | Notes |
|---|---|---|---|
start_date |
string (YYYY-MM-DD) |
Yes | Inclusive |
end_date |
string (YYYY-MM-DD) |
No | Inclusive; defaults to today |
aggregated_by |
string | No | day (default), week, month |
Response (200):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | |
GET /v3/stats/categories#
Statistics broken down by category (category tags on the original send).
Query parameters:
| Parameter | Required | Notes |
|---|---|---|
start_date |
Yes | |
end_date |
No | |
categories |
No | Comma-separated list; filter to just these |
Response (200):
1 2 3 4 5 6 7 8 9 | |
GET /v3/stats/summary#
Single totals summary for a date range.
Query parameters: start_date (required), end_date.
Response (200):
1 2 3 4 5 6 7 8 9 10 11 12 | |
GET /v3/stats/sum#
Raw sum of all metrics, no per-day breakdown.
Query parameters: start_date (required), end_date.
Response (200):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
POST /v3/stats/rebuild#
Rebuild daily aggregates from the raw event log. Use after a bulk import of events, or if you suspect aggregation drift.
Query parameters: start_date, end_date (both optional; default to the last 30 days).
Response (200):
1 | |
Requires stats.export (this endpoint mutates aggregates).
Metric definitions#
| Metric | Definition |
|---|---|
requests |
/v3/mail/send calls counted per-personalization |
processed |
Messages accepted and queued by the worker |
delivered |
Messages accepted by recipient MX (250 OK) |
bounces |
Permanent failures (hard bounces + blocks) |
bounce_drops |
Messages dropped because recipient was on the bounce list |
blocks |
5xx SMTP rejections specifically for reputation/policy |
spam_reports |
FBL complaints received |
spam_report_drops |
Messages dropped because recipient was on the spam-report list |
unsubscribes |
Global unsubscribe actions |
unsubscribe_drops |
Messages dropped because recipient was globally unsubscribed |
invalid_emails |
Malformed recipient addresses rejected at validation |
opens |
Tracking pixel loads (repeated opens counted) |
unique_opens |
Distinct recipients who opened at least once |
clicks |
Click redirect hits (repeated clicks counted) |
unique_clicks |
Distinct recipients who clicked at least one link |
deferred |
Temporary failures (4xx); these later become either delivered or bounces |
What counts and what doesn't#
- Sandbox messages don't count — stats ignore
SANDBOXstatus. - Cancelled messages don't count in
processed— they never entered the worker pipeline. - Request-level failures (400) don't count — stats start at the "message successfully queued" stage.
Related#
- Messages Reference — per-message detail behind the aggregate.
- Events and Webhooks — the raw events that get aggregated.