Account overview
Attributed revenue, cost, ROAS, orders and engagement for the whole account.
GET /api/v1/stats/overviewKPIs of the whole account over a period: what the Analytics page shows at the top, plus the revenue split between campaigns, automations and the AI agent, and the best campaigns and automations.
Query
time_range, start_date, end_date, compared_to — see Period.
Request
curl "https://api.getkanal.com/api/v1/stats/overview?time_range=custom&start_date=2026-10-01&end_date=2026-10-31&compared_to=previous_period" \
-H "Authorization: Bearer 8fK2pX9mWq4Ld7Vb3Nc6Ts1Z"Response 200 OK
{
"period": { "from": "2026-10-01", "to": "2026-10-31", "timezone": "Europe/Paris" },
"compared_period": { "from": "2026-08-31", "to": "2026-09-30" },
"attribution": { "basis": "delivered", "window_seconds": 432000 },
"performances": {
"revenue": { "value": 12480.5, "previous": 9875.2, "changePercent": 26.4 },
"roi": { "value": 31.2, "previous": 27.9, "changePercent": 11.8 },
"cost": { "value": 400.02, "previous": 353.94, "changePercent": 13 },
"cost_marketing": { "value": 312.4, "previous": 290.1, "changePercent": 7.7 },
"conversations": { "value": 5210, "previous": 4630, "changePercent": 12.5 },
"converted": { "value": 187, "previous": 151, "changePercent": 23.8 },
"revenue_per_recipient": { "value": 2.4, "previous": 2.13, "changePercent": 12.7 },
"delivered": { "value": 5102, "previous": 4588, "changePercent": 11.2 }
},
"engagement": {
"delivered": { "value": 5102, "previous": 4588, "percent": 100, "changePercent": 11.2, "urlClicks": null, "replies": null },
"read": { "value": 4011, "previous": 3530, "percent": 78.6, "changePercent": 13.6, "urlClicks": null, "replies": null },
"interacted": { "value": 902, "previous": 811, "percent": 17.7, "changePercent": 11.2, "urlClicks": 640, "replies": 262 },
"converted": { "value": 187, "previous": 151, "percent": 3.7, "changePercent": 23.8, "urlClicks": null, "replies": null }
},
"mechanism": { "campaign": 7210.3, "flow": 4890.2, "ai": 380 },
"top": {
"campaigns": [
{ "id": 812, "name": "Black Friday", "revenue": 5120, "roas": 28.4, "delivered": 2310, "status": "sended", "change_percent": 12.5 }
],
"automations": [
{ "id": 77, "name": "Abandoned cart", "revenue": 3020.4, "roas": 41.2, "delivered": 940, "status": "live", "change_percent": 18.2 }
]
}
}Fields
performances — each metric is { value, previous, changePercent }.
previous is the same metric over compared_period and changePercent the
change from previous to value, in percent. Both are null without
compared_to.
| Metric | Meaning |
|---|---|
revenue | Revenue of the orders attributed to WhatsApp, in EUR. |
cost | WhatsApp conversation spend, all categories (marketing and utility), in EUR. |
cost_marketing | The marketing share of cost. |
roi | revenue / cost (ROAS). null when no cost was recorded. |
converted | Attributed orders. |
conversations | WhatsApp conversations opened over the period. |
revenue_per_recipient | revenue / conversations. |
delivered | Messages delivered. |
engagement — the funnel delivered → read → interacted → converted.
percent is the share of delivered; interacted counts the contacts who
clicked a link (urlClicks) or replied (replies).
mechanism — attributed revenue by source: campaign, flow
(automations) and ai (AI agent replies).
top — the campaigns and automations that brought the most revenue over
the period, best first (up to 5 of each). status is the campaign stage in lower
case (see List campaigns) or, for an automation,
live / off. Use their id with the
campaign and
automation routes.