Skip to main content

Analytics

GET /whatsapp-flows/{id}/analytics returns the funnel of one flow over a date range. Scope: whatsapp_flows:read.

QueryNotes
date_fromISO date or date-time. Default: 30 days before date_to.
date_toISO date or date-time, inclusive day. Default: now.

The range may span at most one year, and date_from must be before date_to (422 invalid_date_range).

curl "https://api.sendseven.com/api/v1/whatsapp-flows/0f9e8d7c-…/analytics?date_from=2026-09-01&date_to=2026-09-30" \
-H "Authorization: Bearer s7_api_a1b2c3d4e5f6789012345678abcdef00"
{
"definition_id": "0f9e8d7c-…",
"date_from": "2026-09-01T00:00:00Z",
"date_to": "2026-09-30T23:59:59.999999Z",
"funnel": {
"sent": 1200,
"delivered": 0,
"read": 0,
"init": 610,
"completed": 455,
"expired": 0
},
"errors": {
"send_failed": 14,
"error": 6,
"writeback_error": 1
},
"screens": [
{ "screen": "PICK_SERVICE", "views": 610 },
{ "screen": "PICK_SLOT", "views": 520 },
{ "screen": "CONTACT", "views": 471 }
],
"completion_rate": 0.3792,
"open_rate": 0.5083,
"open_to_completion_rate": 0.7459
}

All counts are distinct sessions that had the event in the range.

FieldMeaning
funnel.sentFlow messages accepted by WhatsApp.
funnel.initSessions in which the contact opened the flow. Dynamic flows only: WhatsApp only tells SendSeven about opens through the data endpoint.
funnel.completedSubmitted flows.
funnel.deliveredFlow messages that WhatsApp reported as delivered to the contact's phone. A read receipt also counts as delivered.
funnel.readFlow messages the contact read. Only counted when the contact has read receipts turned on.
funnel.expiredSessions whose expires_at passed without a submission. A session that is completed late counts as both expired and completed.
errors.send_failedSends that WhatsApp rejected.
errors.errorData endpoint problems (for example a failing webhook data source) and WhatsApp health alerts.
errors.writeback_errorCompletions whose write-back ended as error or partial (for example a skipped e-mail that belongs to another contact).
screensViews per screen, most viewed first. Dynamic flows only. Use it to see where contacts drop off.
completion_ratecompleted / sent, or null without sends.
open_rateinit / sent (dynamic flows).
open_to_completion_ratecompleted / init (dynamic flows).

For static flows, use sent, completed and completion_rate. Opens and screen views are not visible because a static flow runs entirely on the phone.

Per-session detail​

The sessions API lists each send with its status, answers, last screen and write-back result. Filter by status=completed to export answers, or by contact_id to see one contact's history.