Hi @Kevin Brehm,
Nowadays having a similar conversation at one of my accounts, let me know if any of these helps (feel free to select "best answer" if it does and well, if its the best of course). Option 1 is good if you have an infrastructure and need guaranteed delivery, Option 2 is more of a native Genesys-only solution without external dependencies. Both can integrate with your Salesforce Data Actions integration to write hold events to the case timeline for accurate AHT calculations.
1. Use EventBridge + Data Actions
Amazon EventBridge Integration provides the most reliable solution with guaranteed message delivery:
Setup: Configure an EventBridge integration to subscribe to conversation detail events
Relevant Topics:
v2.users.{id}.conversations - for active conversations by user
v2.detail.events.conversation.{id}.user.start - when an agent joins
v2.detail.events.conversation.{id}.user.end - when an agent leaves
Benefits:
High-throughput messaging bus for real-time data integrations
Guaranteed message delivery with no possibility for data loss
Can forward events to AWS Lambda, Kinesis, SQS, SNS, or other AWS services
Implementation: From EventBridge, use an AWS Lambda function to call a Salesforce Data Action or directly use the Salesforce REST API to update the case timeline with hold timestamps
2. Use Process Automation Triggers + Salesforce Data Actions
Process Automation Triggers can invoke Architect workflows in response to Genesys Cloud events:
Available Trigger Topics include:
v2.detail.events.conversation.{id}.user.start
v2.detail.events.conversation.{id}.user.end
v2.users.{id}.activity
Workflow: Create a trigger that:
Detects when an email interaction state changes (agent starts handling voice while on email)
Invokes an Architect workflow
The workflow executes a Salesforce Data Action to write the hold event to your case timeline
Salesforce Data Actions Integration allows you to:
Create custom actions to update Salesforce records
Write data to case timelines
Define request/response schemas for your specific needs
3. Use Notifications API (WebSocket-Based)
For a more direct approach, use the Notifications API:
Subscribe to v2.users.{id}.conversations for specific agents
Monitor the conversation payload for the held property on participant communications
When a hold state changes, programmatically call Salesforce APIs to update the case
Note: This approach requires managing WebSocket connections and has more complexity compared to EventBridge.
Key Technical Details
Hold State Detection: The conversation participant object includes a held boolean property. When Genesys puts an email interaction on hold due to voice interruption, this property changes to true.
Data You Can Capture:
Hold timestamp
Conversation ID
Participant ID
Media type (email vs voice)
Agent ID
Duration of hold
------------------------------
Joaquin Garcia Fink
Senior Customer Success Manager
Genesys - Employees
------------------------------