EventBridge rule not firing for conversation events - debugging the pattern

I’ve been staring at this EventBridge rule for hours and it’s driving me up the wall. I’m trying to set up a simple trigger that fires whenever a voice conversation ends in our London queue. The goal is to push the details to a Lambda function for logging.

I’ve created the rule in the Genesys Cloud admin console and selected the event type conversation:voice:ended. I’ve also set up the target to point to my AWS EventBridge bus. The connection test passes, so I know the pipe is open. But when I end a test call, nothing happens. No events in the dead-letter queue, nothing in CloudWatch logs.

I’m suspecting the event pattern JSON is wrong. I found an example in the docs that looks like this:

{
 "source": ["genesys.cloud"],
 "detail-type": ["conversation:voice:ended"],
 "detail": {
 "conversationId": ["*"]
 }
}

But I’m not sure if detail-type is the right field for the Genesys event name. Or maybe I need to include the organizationId in the pattern? I tried adding that, but it broke the test. I’m also wondering if the source needs to be more specific, like genesys.cloud.europe-west-2 or something similar.

I’ve checked the API docs for POST /api/v2/eventbridge/rules, but the examples there are pretty generic. They don’t show the exact JSON structure for the eventPattern field when dealing with conversation events.

Has anyone got this working? I’m ready to pull my hair out. I just need to know the correct JSON structure for the pattern so I can stop guessing. I’ve tried genesys.cloud and genesys as the source, but both fail. I’m thinking maybe the detail object needs more fields, like queueId or participantId, but that feels wrong for a catch-all rule. I’m stuck.