GET /api/dashboard/analytics returns, so a number you show a
client is a number you can explain.
The counts
inboundCalls and outboundCalls can sum to less than totalCalls. A call
recorded without a direction counts in neither, and a sub-account disconnected
before September 2026 contributes its calls to totalCalls from an archived
summary that stored no direction.The rates
Two families, and the difference matters. Lead rates divide bytotalLeads. Conversion rates divide by conversations, where a
conversation is a call that lasted longer than 30 seconds. A conversion rate
tells you how the agent does once it is actually talking to someone. A lead
rate tells you how the whole campaign does per person dialled.
All rates are percentages, to two decimal places.
The window
dateFromUTC and dateToUTC set the reporting window. Send a UTC timestamp
with Z or an offset, or a plain YYYY-MM-DD. A plain date covers that whole
day. A timestamp without a zone is rejected rather than read as server time.
The response carries window, the range actually used, as inclusive calendar
days. Days, not instants: the underlying rows record the local calendar day the
call happened, so a bound carrying a time is widened to cover its whole day.
Scoping the figures
Contacts you have marked as your own test leads
are excluded from every figure here.
Per-project comparisons
Two endpoints return one row per project you can see, so an agency can compare clients:GET /api/dashboard/booking-rate-by-project:project,leads,appointments,bookingRate.GET /api/dashboard/transfer-rate-by-project:project,leads,transfers,transferRate.
agency, projects and
excludeProjects for agency-level filtering.
Boundaries
cached,queryTimeandgeneratedAtdescribe the server, not your data. Do not build on them.- Only activity from the current platform carries campaign attribution, so a
campaignIdfilter cannot reach calls placed before that. - These endpoints need the
dashboard:readscope.
In the API
- Get analytics summary
- Get booking rate by project
- Get transfer rate by project
- Every field above is defined in the Glossary
Related
- Call records are the rows these figures are built from.
- Run a split test uses
agentVariantIdto compare two versions of an agent.
