Conversions & revenue
How the Analytics revenue statistics are computed: conversion scopes, how revenue tracking is configured, when a scope comes back null versus zero, and currency.
Several statistics are monetary — conversion_value, conversions, average_order_value, revenue_per_recipient, roas, profit and their approximate variants. Revenue tracking works out of the box: by default the platform configures your project to track both revenue and margin automatically, so reports return real figures with zero setup. This page explains how revenue tracking is configured, which scope to report against, and how to tell a null (scope not configured) apart from a 0 (configured, but nothing to count).
Conversion scope
A report attributes revenue through a conversion scope, selected with the conversion_scope parameter:
| Scope | Meaning |
|---|---|
sales | Revenue. The default scope, configured automatically for every project. |
profit | Margin. Also configured automatically for every project. Profit amounts depend on a margin value being present on your conversion events; if your events carry no margin, profit comes back as 0. |
The scope is the only conversion choice the caller makes. What counts as a conversion, which value is attributed and which traffic contributes are part of your project's configuration, not request parameters. This keeps revenue numbers consistent no matter who runs the report or from which tool.
How revenue tracking is configured
You do not set up conversions on a per-request basis. By default, the platform synthesises a default conversion configuration for your project automatically, and that default covers both sales and profit. So both revenue and margin are tracked out of the box — neither scope is null by default.
A project may instead define its own custom conversion configuration in its settings — which events count as a conversion, which field carries the conversion value, and which datasources contribute. That is project configuration, decided once in the dashboard; it is never a request parameter, and the API caller never sees those internals. A custom configuration only includes the scopes you define on it: if a custom configuration leaves a scope out, that scope is simply not tracked (there is no fall-back to the default).
GET /project/{project}/analytics/overview
?statistics=conversions,conversion_value,roas
&conversion_scope=sales
&timeframe=last_30_daysThe resolved scope is echoed back in the response as conversion_scope whenever monetary statistics were requested.
When does a revenue statistic come back null?
A revenue statistic is null for exactly one reason: the project's conversion configuration does not include the requested scope. By default this does not happen — the default configuration covers both sales and profit, so both come back as numbers. It only occurs when a project has switched to a custom conversion configuration that leaves the requested scope out (for example a custom config without profit). When that happens, the report still succeeds, the missing scope's statistics are null — not an error — and the response carries a conversion_scope_unconfigured warning so you can tell why.
This is different from a scope being configured but having nothing to report:
null— the scope is not configured. The project's configuration omits it. Check thewarningsarray (see Reading results) for theconversion_scope_unconfiguredcode.0/0.00— the scope is configured, but there is no value to report. Either there were no conversions in the window, or the value is genuinely zero. A common case:profitis configured by default, but profit amounts depend on a margin value being present on your conversion events; if your events don't carry one, profit silently returns0— notnull, and no warning.
Currency
Revenue is reported in the output currency you request (ISO 4217), defaulting to the project's stored currency. The response echoes both the output currency and the source_currency the data was stored in. Ratio statistics — roas and epm — are dimensionless and are never converted.
Revenue statistics at a glance
| Statistic | Meaning |
|---|---|
conversions | Count of attributed conversions in the window. |
conversion_value | Total monetary value of those conversions. |
conversion_rate | Conversions over the relevant denominator. |
average_order_value | Value per conversion. |
revenue_per_recipient | Conversion value divided by recipients. |
roas | Conversion value over send cost (dimensionless). |
epm | Earnings per message (dimensionless). |
profit | Margin. Configured by default; amounts depend on a margin value on your conversion events, otherwise 0. |
See the full Statistics catalog for the delivery, engagement and cost statistics you can combine with these.