Building Custom Digital Channel Analytics Dashboards for Social Messaging Interaction KPIs

Building Custom Digital Channel Analytics Dashboards for Social Messaging Interaction KPIs

What This Guide Covers

  • Breaking free from the limitations of out-of-the-box native Genesys Cloud dashboards by architecting a custom analytics pipeline for asynchronous digital channels.
  • Leveraging the Genesys Cloud Analytics API to extract complex JSON payloads, flatten them into a relational schema, and visualize them in a BI tool (PowerBI/Tableau).
  • Measuring critical, asynchronous-specific KPIs such as True First Contact Resolution (FCR) across multiple thread merges, and Customer Wait Time separated from Agent Park Time.

Prerequisites, Roles & Licensing

  • Licensing: Genesys Cloud CX 2 or 3 (Digital).
  • Permissions: Analytics > Conversation Detail > View, Analytics > Queue Observation > View.
  • Infrastructure: A backend data warehouse (e.g., Snowflake, AWS Redshift) and a BI visualization tool (e.g., Tableau, PowerBI, Looker).

The Implementation Deep-Dive

1. The Asynchronous Data Trap

If you look at the native Genesys Cloud “Queue Performance” dashboard for a Voice queue, the metrics make sense: ASA (Average Speed of Answer) is 15 seconds, and AHT (Average Handle Time) is 5 minutes.

The Trap:
If you look at that exact same dashboard for a WhatsApp or Email queue, the metrics are completely useless. AHT might show as “48 Hours” because the agent “parked” the interaction on Friday and replied on Monday. ASA might show as “2 Hours” because the email arrived at 2 AM and the center opened at 8 AM. Native voice-centric dashboards do not properly segment out “business hours” or “agent-wait” vs “customer-wait” time in asynchronous channels.

2. Extracting the Raw Conversation Detail Data

To build accurate digital KPIs, you must extract the raw, un-aggregated event timeline.

Implementation Steps:

  1. The API: Do not use the aggregate API. Use the POST /api/v2/analytics/conversations/details/query.
  2. The Query: Filter the query to only include mediaType = message or mediaType = email.
  3. The Payload: The API returns a deeply nested JSON object. You will see a participants array. Inside each participant, there is a sessions array. Inside each session, there is a segments array.
  4. The Segments: The segments array is the holy grail. It contains a chronological list of every state the interaction entered (e.g., system, interact, park, wrapup) along with exact timestamps.

3. Flattening and Normalizing the JSON

Your data warehouse cannot easily ingest deeply nested JSON. You must build a Python script (or use AWS Glue) to flatten it.

Architectural Reasoning:
We need to calculate “Customer Wait Time” (the time the customer spent waiting for a reply) separately from “Agent Park Time” (the time the agent spent waiting for the customer to reply).

Implementation Steps (Python ETL Logic):

  1. Iterate through the segments array for the agent participant.
  2. If segmentType == "interact", this is time the agent spent actively typing/handling the interaction.
  3. If segmentType == "park", this is time the interaction sat idle.
    • Crucial Distinction: Was it parked waiting on the internal SME, or parked waiting for the customer? You must cross-reference this with the messages array in the transcript API to see who sent the last message before the park segment began.
  4. Write this flattened data to your SQL database:
    | ConversationId | Total_Interact_Time | Total_Park_Time | Customer_Wait_Time |

4. Building the BI Dashboards

With the normalized data in your warehouse, you can build specialized digital dashboards.

Implementation Steps (Tableau/PowerBI):

  1. True ASA (SLA Met/Missed): Instead of raw Average Speed of Answer, create a calculated field that subtracts off-hours. If an email arrives at 2 AM and is answered at 8:05 AM, the True ASA is 5 minutes, not 6 hours.
  2. Agent Utilization Factor: For digital channels, agents handle multiple interactions concurrently. Create a chart showing Total_Interact_Time divided by Total_Shift_Hours. A voice agent is 100% utilized if they are on a call. A digital agent handling 5 chats might only be actively typing 20% of the time, allowing you to increase their concurrency limit.
  3. The “Zombie” Interaction Metric: Create a KPI gauge that specifically highlights interactions where the Customer_Wait_Time exceeds 24 hours. These are “Zombie” interactions that are lost in the system and require immediate supervisor intervention.

Validation, Edge Cases & Troubleshooting

Edge Case 1: The “Auto-Reply” Skew

  • The Failure Condition: Your new custom dashboard shows an Average Speed of Answer (ASA) of 0.2 seconds for your Facebook Messenger queue. You present this to the board, claiming your agents are superhuman. The board is thrilled. Then a manager points out that agents actually take 10 minutes to reply.
  • The Root Cause: Your Architect Inbound Message Flow uses a Send Response block to immediately say “Thanks for messaging us! An agent will be right with you.” The Analytics API counts this system-generated auto-reply as the “First Response”, stopping the ASA clock instantly.
  • The Solution: In your ETL script, you must filter out system responses. Do not calculate ASA based on the first message sent in the thread. Calculate ASA based on the timestamp when the agent participant segment changed from alerting to interact.

Edge Case 2: Multi-Transfer Segmentation

  • The Failure Condition: An interaction is transferred from Agent A to Agent B. Your script calculates the handle time, but it attributes the entire 30-minute handle time to Agent B.
  • The Root Cause: Failing to iterate through multiple agent participants in the JSON payload.
  • The Solution: The Analytics API will contain two distinct participant blocks where purpose = agent. You must attribute the segments to the specific userId attached to that participant block. If Agent A worked on it for 10 minutes and Agent B for 20 minutes, your BI tool must reflect split attribution, rather than overwriting Agent A’s effort.

Official References