Statistics catalog
Every statistic you can request from the Analytics endpoints — delivery, engagement, conversion, cost and suppression — what each one means, which report families expose it, and which figures are approximate.
Every Analytics report is driven by the required statistics parameter: a comma-separated list of statistic names drawn from the catalog below. You only get the statistics you ask for, in the order that matters — the first statistic in your list also drives ordering for grouped and compare reports.
Each report family exposes the subset of the catalog that makes sense for it. Requesting a statistic a family does not support returns a 400 with a clear hint (see Reading results). The flow report exposes the same subset as the automation report, and can scope any of it to a single flow version.
How to request statistics
statistics is a comma-separated list. Pick the columns you actually need — there is no "all" shortcut, and a tighter list is cheaper to compute.
GET /project/{project}/analytics/overview
?statistics=delivered,delivery_rate,click_rate,conversions,conversion_value,roas
&timeframe=last_30_daysDelivery
| Statistic | Meaning |
|---|---|
recipients | Distinct contacts targeted. |
sent | Messages dispatched. |
delivered | Messages confirmed delivered. |
failed | Messages that failed delivery. |
expired | Messages that expired before delivery. |
delivery_rate | delivered over the relevant denominator, as a rate. |
failed_rate | failed as a rate. |
Engagement
| Statistic | Meaning |
|---|---|
clicks | Total link clicks. |
clicks_first | First click of a link by a contact. |
clicks_returning | Repeat clicks after the first. |
contacts_clicked_approx | Distinct contacts who clicked (estimate). |
click_rate | Click rate over the relevant denominator. |
ctr | Click-through rate. |
contacts_click_rate_approx | Distinct-clicker rate (estimate). |
opens | Message displays / read receipts. Channel-specific — see below. |
open_rate | opens over delivered. |
click_to_open_rate | clicks_first over opens. |
Open statistics are channel-specific
opens, open_rate and click_to_open_rate are available on the campaign, automation and flow reports only (not overview, direct or segment), and they depend on the channel having an open signal. Today only RCS reports them; email opens will arrive when the Email channel ships.
On a channel with no open signal — SMS — these statistics are omitted from the response, not returned as 0. Absence means "not measurable on this channel", not "nobody opened": a missing opens key is the only correct reading. Do not treat it as zero, and do not derive an open_rate from a missing opens.
Conversion & revenue
| Statistic | Meaning |
|---|---|
conversions | Number of attributed conversions. |
conversion_value | Monetary value of those conversions. |
conversion_rate | Conversions over the relevant denominator. |
average_order_value | Average value per conversion. |
revenue_per_recipient | Conversion value per recipient. |
profit | Margin. Configured by default; amounts depend on a margin value on your conversion events, otherwise 0. |
Both sales (revenue) and profit (margin) are configured automatically for every project — revenue tracking works with no setup. A revenue statistic comes back null only when the project's conversion configuration omits the requested scope (for example a custom config without profit); that case carries a conversion_scope_unconfigured warning, not an error. A configured scope with nothing to report — including profit when your conversion events carry no margin value — returns 0, not null. See Conversions & revenue.
Cost & ROI
| Statistic | Meaning |
|---|---|
cost | Send spend over the window. |
cost_approx | Send spend computed from events (used where an exact figure is not available). |
cost_per_message | Spend per message. |
cost_per_message_approx | Approximate spend per message. |
roas | Return on ad spend (conversion value over cost). Dimensionless. |
roas_approx | Approximate ROAS. Dimensionless. |
epm | Earnings per message. Dimensionless. |
epm_approx | Approximate earnings per message. Dimensionless. |
Suppression
| Statistic | Meaning |
|---|---|
unsubscribes | Opt-outs driven by your Instasent messaging over the window. |
unsubscribe_rate | Rate of those messaging-driven opt-outs. |
These statistics measure messaging performance: how many people your Instasent sends pushed to opt out. An opt-out counts here only when it is attributable to a message you sent through Instasent — a campaign, an automation, or a direct / transactional send — whether the contact replied STOP, used an unsubscribe link, or otherwise opted out off the back of that send. On a campaign or automation report, the count is scoped to opt-outs driven by that campaign or automation.
Opt-outs that did not come from an Instasent send are excluded by design — they are not a reflection of how your messaging performed:
- suppressions pushed through the API,
- consent changes you make by hand on a contact, list or audience,
- consent synced in from external platforms (for example Klaviyo, ActiveCampaign or Mailchimp).
Automation only
| Statistic | Meaning |
|---|---|
triggers | Times the automation fired in the window. |
Available on the automation report family only.
Approximate statistics
Any statistic whose name ends in _approx is not exact, and the suffix is part of the contract — anything derived from an approximate figure stays approximate.
There are two reasons a statistic is marked approximate:
- Distinct-count estimates (for example
contacts_clicked_approx) use an efficient estimator that trades a small margin of error (roughly 1–2%) for speed at scale. As a consequence, a distinct-contact figure is not summable across time buckets in a series — adding the per-day values does not give you the period total. See Reading results. - Event-based figures can under-report the most recent window (about 48 hours) until delivery receipts arrive, then settle to their final value.