QVCCS innovation · Diagnostics

One call, every layer: reconstructing a Genesys Cloud conversation end to end

A complaint lands, a conversation ID is pasted into the ticket, and someone has to explain exactly what happened. We built Conversation Analyser to turn that one ID into a complete forensic report: every participant, session and segment on a shared clock, the IVR replayed step by step, audio quality scored per leg and the participant data your flows wrote.

QVCCS Innovation teamConversation Analyser user guide →

One call, every layer – Conversation Analyser A swim-lane reconstruction of a single Genesys Cloud conversation. Four lanes – customer, IVR, ACD and agent – share one clock: the customer is connected throughout, the IVR segment hands over to a queue segment, and the agent lane shows alert, talk, a hold, more talk and wrap-up, with a time axis beneath. INNOVATION · DIAGNOSTICS One call, every layer Customer IVR ACD Agent Connected IVR Queue Talk Hold ACW ONE SHARED CLOCK
  • Did you know that a Genesys Cloud conversation record is layered? A conversation holds participants, each participant holds sessions per media type, and each session is broken into segments such as ivr, alert, interact, hold and wrapup – with flow data and, for voice, call-quality stats attached to the session.

  • Did you know that historical Architect flow execution data storage is disabled by default? Once an administrator enables it, Genesys retains the step-by-step execution data for 10 days, so a flow path can only be replayed for recent calls.

  • Did you know that when an agent puts a customer on hold, the interaction timeline shows hold on the agent's row while the customer's row shows interacting? Reading a conversation means reading each participant's own segments.

  • Did you know that Genesys documents a 60-day time to live for participant data in the interaction details view? After that, the attributes your flows set can only be accessed when exported.

01

08:55, one complaint and a single conversation ID

It is 08:55 and the complaints team has forwarded an email: Mrs Smith says she was on hold for nine minutes, transferred twice and cut off. The ticket holds one thing of value – a conversation ID. The supervisor needs to know, before the 09:30 stand-up, whether the IVR sent her to the right queue, who answered, how long each hold lasted, and whether the line quality dropped. Those questions have answers in Genesys Cloud CX, but they are spread across several views and several APIs.

This is the question Conversation Analyser exists to answer: what exactly happened on this one call? Paste a conversation ID, press Analyse, and a few seconds later the tool renders a forensic report – a caller and agent swim-lane, a plain-English timeline, timings and counters, per-leg audio-quality scoring, the custom participant data your flows attached and, on demand, a step-by-step replay of every Architect flow the call traversed, with click-to-play prompt audio. GUIDs become names, and the raw record stays one click away.

02

One conversation, many layers: the Genesys data model

To reconstruct a conversation you have to respect how Genesys models it. The analytics conversation detail record, served for a single conversation by GET /api/v2/analytics/conversations/{conversationId}/details, starts with the conversation itself: its ID, start and end, originating direction and divisions. Under it sit the participants – the customer or external party, the IVR, the ACD and each agent – identified by purpose. Each participant has sessions, one per media leg, and each session is sliced into typed segments: ivr, queue, alert, interact, hold, wrapup and more. Sessions also carry metrics, the t-prefixed durations and n-prefixed counts such as tTalk, tHeld, tAcw and nTransferred.

That nesting is the record's great strength and the reason it is hard to read raw. A call with a blind transfer and one hold can easily produce a dozen sessions across five participants, each with its own segment list on its own clock. A supervisor does not want to scroll through nested JSON; they want one picture. So the app's server walks the whole structure and lays every segment of every participant on a shared time axis, one lane per participant, customer first, then IVR, ACD and agents.

Around that authoritative record the app gathers four more sources: the live conversation object for recording flags, display names and participant attributes; the users, queues, wrap-up codes, flows, divisions and skills endpoints for names; the flow instances APIs for execution traces; and the Architect prompts API for audio. The figure below shows how they converge on the single report.

The detail record and four enrichment sources converge on one report On the left, the nested analytics conversation detail record: a conversation contains participants, each participant has sessions, and each session holds segments, metrics and media-endpoint stats. In the centre, the best-effort enrichment sources: the live conversation object, name lookups for users, queues, wrap-up codes, flows, divisions and skills, flow execution instances, and Architect prompts. Arrows from both columns converge on the right on a single Conversation Analyser report made of summary, timings, swim-lane, timeline, flow replay, audio quality, participant data and raw JSON cards. AUTHORITATIVE · ANALYTICS The nested record Conversation · start, end, direction Participants · purpose Sessions · media legs Segments · ivr, hold, wrapup Metrics · tTalk, nTransferred mediaEndpointStats GET …/ANALYTICS/CONVERSATIONS/{ID}/DETAILS BEST-EFFORT · ENRICHMENT Extra sources Live conversation object /api/v2/conversations/{id} Name lookups users, queues, wrap-ups, flows, skills Flow execution instances /api/v2/flows/instances/… Architect prompts /api/v2/architect/prompts/{id} FAILURES ARE NON-FATAL QVCCS CONVERSATION ANALYSER One report Summary Timings Caller and agent swim-lane What happened – timeline Flow execution replay Audio quality Participant data Raw data · copy or download JSON GUIDS RESOLVED TO NAMES The detail record is required; every other source enriches it and may fail without breaking the report.
The analytics detail record and four enrichment sources – live object, name lookups, flow instances and prompts – converge on one report.
Read this diagram as text

A three-column diagram, read left to right: the nested analytics record and four optional enrichment sources each feed arrows into one conversation report.

  1. Left column, "Authoritative · analytics", headed "The nested record", is an indented tree read from the conversation details request.
  2. The tree runs: "Conversation · start, end, direction", containing "Participants · purpose", containing "Sessions · media legs", which holds "Segments · ivr, hold, wrapup", "Metrics · tTalk, nTransferred" and "mediaEndpointStats".
  3. Middle column, "Best-effort · enrichment", headed "Extra sources", lists four boxes: "Live conversation object", "Name lookups" ("users, queues, wrap-ups, flows, skills"), "Flow execution instances" and "Architect prompts", with the note "Failures are non-fatal".
  4. An arrow runs from the conversation record over the middle column into the report, and each of the four enrichment boxes has its own arrow into the report.
  5. Right column, "QVCCS Conversation Analyser", headed "One report", contains the cards "Summary", "Timings", "Caller and agent swim-lane", "What happened – timeline", "Flow execution replay", "Audio quality", "Participant data" and "Raw data · copy or download JSON".
  6. A label inside the report reads "GUIDs resolved to names".
  7. The banner beneath reads: "The detail record is required; every other source enriches it and may fail without breaking the report."

03

What the native interaction details view already does well

Genesys Cloud CX already gives supervisors a capable place to start. The interaction details page, opened from the Interactions view and related views, is the central location for an interaction: an interaction overview, plus tabs for details, the timeline, quality summary, transcripts, audit trail and customer journeys. The timeline tab shows each part of the interaction as a separate segment that you can click for its duration, drag across and zoom. Quality managers can expand a Participant Data section on the Details tab, and the Interactions view can be filtered by MOS range.

Architect, meanwhile, offers its own flow execution history and a Replay Mode for debugging once historical execution data storage is enabled. We use all of these every week. What Conversation Analyser does differently is assemble them into one read-only, shareable report for a single conversation: the swim-lane and narrative timeline, participant data per participant, the flow replay ordered by execution, prompt playback and audio-quality ratings sit on one page, with the complete payload downloadable as JSON for a ticket or a root-cause document.

04

Engineering the report: two views of the same conversation

The report is built from two Genesys views of the same interaction, and the engineering choice that matters is which one is allowed to fail. The analytics detail record is the authoritative source, retained for months; if it is missing there is nothing to analyse and the request fails clearly. The live conversation object, GET /api/v2/conversations/{conversationId}, is a best-effort extra, retained far more briefly. If it has aged out, its error is carried through as a badge in the raw data panel and every analytics-based card still renders.

Name resolution follows the same pragmatic philosophy. The server collects every user, queue, wrap-up, flow, division and skill ID it finds, resolves them against the matching Genesys endpoints through a bounded pool of eight concurrent lookups, and caches the results. Two free enrichment passes fill the gaps: a flow that transferred directly to a user carries that user's name in its transfer target, and the live object names its participants. Anywhere no name is found, the raw GUID is shown, so the tool stays fully usable with nothing more than the analytics:readonly scope.

Security is designed in rather than bolted on. Operators sign in with an OAuth client-credentials grant attached to a read-only role; the credentials and bearer token stay on the server and the browser never holds a Genesys token. Every Genesys call is a read – the only POSTs are the flow-instance query and the download-job creation, which create no org data. There is no database: conversation payloads are fetched live per request and never retained.

05

Replaying the IVR, step by step, with the caller's audio

Most disputes about a call are really disputes about the IVR. What did the caller press? Did the data action fail? Which queue did the flow transfer to? Press Load flow replay and the server runs a four-step pipeline against Architect's Historical Flow Execution Data: query the flow instances for the conversation ID, start a download-preparation job, poll the job every 800 milliseconds for up to 30 tries, then fetch the step traces from their short-lived download links. Each flow the call passed through – a main IVR, then an in-queue flow – becomes its own card, earliest first.

Each card is a flowchart of the steps the call actually executed: audio, menus, decisions, data-table lookups, set-data actions, called tasks and the transfer, each with its clock time, dwell and the branch taken – Found, Not found, Timeout or the digit pressed. Prompts and DTMF always come from the real execution trace, never from static flow configuration. Steps that played a prerecorded user prompt show a chip; click it and the app resolves the prompt from the Architect prompt library and plays the recording in the browser, one player per language.

The honest limits are part of the design. Flow replay only works where historical execution data was being captured when the call ran, and only within the 10-day retention Genesys documents. Text-to-speech lines have no recording, so the trace shows their spoken text instead, and Genesys system prompts such as hold music are not in the user-prompt library. The app explains each of these cases in place, and the rest of the report is unaffected.

The on-demand flow replay pipeline Top row: the four steps the app runs against Architect's historical flow execution data – query flow instances by conversation ID, start a download-preparation job, poll the job every 800 milliseconds for up to 30 tries, and download the step traces. Bottom: an illustrative rendered flow instance showing play audio with a playable prompt chip, a menu where digit 2 was pressed, a data table lookup that took its Found branch, and a transfer to ACD, with the untaken Not found branch shown dashed. HISTORICAL FLOW EXECUTION DATA · FOUR STEPS Press “Load flow replay” 1 · QUERY Instances for this conversation 2 · PREPARE Start a download job 3 · POLL Every 800 ms, up to 30 tries 4 · DOWNLOAD Step traces via short-lived links ONE CARD PER FLOW INSTANCE · ILLUSTRATIVE What the caller actually did PLAY AUDIO Welcome prompt MENU Caller pressed 2 DATA TABLE LOOKUP Account lookup TRANSFER TO ACD Support queue FOUND NOT FOUND · NOT TAKEN Prompts and digits come from the real execution trace – never reconstructed from flow configuration.
The on-demand flow replay pipeline: query instances, prepare a job, poll, download traces, then render each flow as a flowchart.
Read this diagram as text

A two-row diagram: a four-step fetch pipeline across the top, and below it an illustrative flow instance drawn as a left-to-right chain of steps with one untaken branch.

  1. The top row is labelled "Historical flow execution data · four steps" and headed "Press “Load flow replay”".
  2. Step 1, "Query": "Instances for this conversation"; an arrow leads to step 2, "Prepare": "Start a download job".
  3. An arrow leads to step 3, "Poll": "Every 800 ms, up to 30 tries"; then to step 4, "Download": "Step traces via short-lived links".
  4. The bottom row is labelled "One card per flow instance · illustrative" and headed "What the caller actually did".
  5. The chain runs: "Play audio" with a playable "Welcome prompt" chip, then "Menu": "Caller pressed 2", then "Data table lookup": "Account lookup".
  6. From the lookup, a solid arrow labelled "Found" leads to "Transfer to ACD": "Support queue".
  7. A dashed line from the lookup is labelled "Not found · not taken", showing the branch the caller did not follow.
  8. The banner beneath reads: "Prompts and digits come from the real execution trace – never reconstructed from flow configuration."

06

Audio quality per leg, rated on fixed thresholds

When the complaint is that the line was poor, the question is always which leg. Conversation Analyser reads the media-endpoint stats on every voice session in the detail record and shows, per participant and media window, the MOS, R-factor, maximum latency and packet loss, each with a rating pill and meter. The thresholds are fixed and printed under the card: a MOS of 4.3 or above is excellent, 4.0 good, 3.6 fair, 3.1 poor and anything lower bad; latency of 150 ms or less is good and anything above 500 ms bad.

Packet loss is calculated as invalid plus discarded packets over the total received, invalid and discarded, and rated from 0.5 per cent or less as good to above 3 per cent as bad. The reading guide is practical: bad MOS with high loss on the customer leg points at the caller's network, while the same on the agent leg points inside your own estate. Chat, email and callback legs carry no RTP stats and show a dash, while voice legs of the same conversation still score.

07

Built and proved the QVCCS way

Conversation Analyser went through the same lifecycle as any client deliverable. Requirements came from real investigations our support engineers run; the design separates the authoritative and best-effort sources so that partial permissions or aged-out data degrade gracefully; and the build was peer reviewed against the Senior Platform Practice Lead's engineering standards. A bundled synthetic conversation – inbound call, IVR, queue, agent, hold, blind transfer and wrap-up with a deliberate mid-call quality dip – exercises every card, including a two-instance flow replay, so we can test without touching customer data.

The tool is part of the QVCCS App Suite included with every Managed Professional Services tier, and it pairs naturally with its bulk sibling: Conversation Detail exports every conversation over a date range, so you find the interesting conversation there and dissect it here. Behind both stands a multidisciplinary squad from our own bench – solution architects, senior developers, IT systems, telecoms and SIP engineers and support engineers – who use the same report when they take on an escalation for you.

How it compares

Native interaction details and Conversation Analyser, side by side

Both read the same Genesys Cloud conversation data. The difference is how much is assembled into one place for a single investigation.

AspectNative Genesys Cloud CXQVCCS Conversation Analyser
Where you lookInteraction details page: overview plus tabs for details, timeline, quality summary, transcripts, audit trail and customer journeys.One report page per conversation ID, with deep links for tickets and a complete JSON download.
TimelineTimeline tab with a segment per part of the interaction; click a segment for its duration, drag and zoom.Swim-lane of every participant's segments on a shared clock, plus a plain-English narrative with offsets and a disconnect summary.
Participant dataParticipant Data section on the Details tab; Genesys documents a 60-day time to live, after which data is available via export.Participant data card per participant from the live conversation object, alongside the analytics cards and in the raw JSON.
Flow pathArchitect flow execution history and Replay Mode, when historical execution data storage is enabled.Flow replay embedded in the conversation report, every flow instance in execution order, with the branch taken on each connector.
PromptsPrompts are created and managed in Architect's prompt library.Click-to-play chips on the exact steps that played a prerecorded user prompt during this call.
Audio qualityInteractions view can be filtered by MOS range, above or below a value.Per-leg MOS, R-factor, maximum latency and packet loss, rated on fixed, published thresholds.
Access modelUser permissions such as Analytics > Conversation Detail > View and Conversation > Communication > View.Read-only OAuth client credentials; analytics:readonly alone is enough, with optional scopes adding names, flow replay and audio.

Flow replay depends on historical execution data being enabled and is limited by its 10-day retention, in both the native tooling and the app.

The takeaways

  • One conversation ID becomes a complete, shareable forensic report in seconds.
  • Every participant, session and segment is drawn on one clock, with names instead of GUIDs.
  • The IVR path is replayed from real execution traces, with the caller's prompts playable in place.
  • Audio quality is scored per leg so you know whether to look at the caller's network or your own.
  • Strictly read-only, with no database: nothing in your org changes and nothing is retained.

Conversation Analyser is part of the QVCCS App Suite, included with every Managed Professional Services tier and built by the same certified team that designs, builds and supports Genesys Cloud CX solutions.

Read the user guide Managed Professional Services

Last reviewed

Questions about what you have read?

Clients, partners and people introduced to us can reach the specialists behind our applications and articles directly.

Who to contact