Endpoints
| Method | Path | Description |
|---|---|---|
GET | /api/v2/rooms/{room_id}/analytics | Get room analytics |
Get room analytics
GET /api/v2/rooms/{room_id}/analytics
Returns engagement data for the room: overall progress, the internal company, all assignees (internal and external), and a breakdown of viewership per section, step, and action.
curl https://api.flowla.com/api/v2/rooms/<room_id>/analytics \
-H "x-flowla-api-key: YOUR_API_KEY"
Response fields
Room title.
Overall completion percentage (0–100).
{ type, name } of the owning organization.Everyone on the room — internal team members and external contacts.
Show Assignee fields
Show Assignee fields
internal_organization or external_organization.Assignee email.
Full name.
Job title.
Present on internal assignees.
true if this person owns the room.Present on external assignees.
ISO 8601 timestamp. Present on external assignees.
Total visits. Present on external assignees.
Per-section analytics.
Show Section fields
Show Section fields
Section ID.
Section title.
Whether the section is marked complete.
Whether buyers can see this section.
Page-level viewership. Each entry has
id, title, isVisibleToExternal, and a viewership array with durationInSeconds, timesViewed, engagements, and the user who viewed it.Action-plan items with analytics. Each includes
id, title, status, description, internal, assignees, dueDate, isOverdue, isVisibleToExternal, actionType, and viewership.Example response
Example response
{
"title": "Flowla <> Acme",
"progressPercentage": 14.29,
"internalCompany": { "type": "internal", "name": "Flowla" },
"assignees": [
{
"belongsTo": "internal_organization",
"email": "jordan@flowla.com",
"name": "Jordan Avery",
"title": "Account Executive",
"isRoomOwner": true
},
{
"belongsTo": "external_organization",
"email": "morgan.lee@acme.com",
"name": "Morgan Lee",
"title": "VP of Operations",
"isPrimaryContact": true,
"lastSeen": "2026-05-05T14:30:44.260Z",
"viewCount": 4
}
],
"sections": [
{
"id": "e6136fc8-0036-472c-886d-5f4089f22af0",
"title": "Welcome",
"isCompleted": false,
"isVisibleToExternal": true,
"steps": [
{
"id": "14968206-ac51-4da1-9846-8b6b85a10edf",
"title": "Introduction",
"isVisibleToExternal": true,
"viewership": [
{
"user": {
"belongsTo": "external_organization",
"email": "morgan.lee@acme.com",
"name": "Morgan Lee",
"isPrimaryContact": true,
"lastSeen": "2026-05-05T14:30:44.260Z",
"viewCount": 4
},
"durationInSeconds": 144,
"timesViewed": 1,
"engagements": [
{ "type": "TASK_COMPLETED", "createdAt": "2026-05-05T14:30:54.168Z" }
]
}
]
}
],
"actions": [
{
"id": "7e06cab8-4bf6-49ca-a1c6-f49893ae28c2",
"title": "Sign mutual NDA",
"status": "in_progress",
"description": "Review and countersign the NDA before kickoff",
"internal": false,
"dueDate": "2026-05-11T22:00:00.000Z",
"isOverdue": true,
"isVisibleToExternal": true,
"actionType": "fill-form",
"assignees": [
{
"type": "user",
"user": {
"belongsTo": "internal_organization",
"email": "delia@flowla.com",
"name": "Delia Barbat",
"isRoomOwner": false
}
}
],
"viewership": [
{
"user": {
"belongsTo": "external_organization",
"email": "morgan.lee@acme.com",
"name": "Morgan Lee",
"isPrimaryContact": true,
"lastSeen": "2026-05-05T14:30:44.260Z",
"viewCount": 4
},
"durationInSeconds": 3,
"timesViewed": 1,
"engagements": []
}
]
}
]
}
]
}