Noticed a weird data gap in our backend aggregation service. We’re pulling conversation metrics to calculate average handle time for our Android app’s admin dashboard. The Kotlin service hits /api/v2/analytics/conversations/summary to get the high-level stats, but the count of completed messages doesn’t match the raw conversation list fetched from /api/v2/conversations/webmessaging.
The analytics endpoint returns a count of 142 completed sessions for the last 24 hours. When we paginate through the conversations endpoint with pageSize=50, we only get 138 records. The missing four are all tagged as webmessaging type.
Here’s the query we’re using for analytics:
{
"query": "type:webmessaging",
"interval": "P1D",
"groupBy": []
}
And the fetch for the list:
val conversations = client.conversationsApi.listConversationsWebMessaging(
pageSize = 50,
pageNumber = 1,
sort = "createdTime:desc"
)
The documentation says analytics is “processed” data, but it’s supposed to cover the same scope as the real-time API. Are there specific states where a web messaging session shows up in analytics but gets filtered out of the /v2/conversations endpoint? We’ve checked for archived flags, but both endpoints seem to respect the same retention policies.
Also, the analytics endpoint includes routing metrics like answeredCount, but the raw conversation objects don’t always have a clear routing state if the agent didn’t explicitly accept. Is the analytics engine filling in gaps from internal Genesys events that aren’t exposed in the standard REST payload? We’re trying to decide if we should just trust the analytics counts for reporting and ignore the list endpoint for totals. The latency on analytics is higher, but it’s more accurate.