EventBridge Filter Policy not catching conversation.end for specific queue ID

Hey folks,

Stuck on a filter policy for EventBridge. I need to route conversation.end events for just one specific queue to an SQS queue, but the filter isn’t working. I’m getting zero matches, even though I can see the events in the CloudWatch logs.

Here’s the policy I’m using in the console:

{
 "detail": {
 "eventType": [
 "conversation.end"
 ],
 "queueId": [
 "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
 ]
 }
}

The event payload looks like this:

{
 "detail": {
 "eventType": "conversation.end",
 "queueId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
 "conversationId": "xyz-123",
 "...": "..."
 }
}

I’ve tried adding a wildcard for the organizationId but that didn’t help. The queue ID matches exactly. Is the queueId field actually available in the conversation.end event detail for filtering? I can’t find it in the schema docs, but it’s definitely in the payload.

Tried using the exists operator too, no luck. Just getting bounced back to the dead-letter queue.

The issue is usually the path. queueId isn’t a top-level field in the detail object for conversation events. You need to look inside routingData.

Try this structure:

{
 "detail": {
 "eventType": ["conversation.end"],
 "routingData": {
 "queueId": ["a1b2c3d4-e5f6-7890-abcd-ef1234567890"]
 }
 }
}

Double check the event payload in CloudWatch logs to confirm the exact nesting.

You’re missing the detailType field. That’s the first filter EventBridge checks before looking at the detail object. If that doesn’t match, it drops the event immediately. No point debugging the queueId path if the event type isn’t even recognized by the rule.

The payload for conversation events uses genesys.cloud.conversation as the detailType. Your current policy ignores this, so AWS filters it out before it hits your SQS queue.

Try this corrected structure:

{
 "detail-type": [
 "genesys.cloud.conversation"
 ],
 "detail": {
 "eventType": [
 "conversation.end"
 ],
 "routingData": {
 "queueId": [
 "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
 ]
 }
 }
}

Also, verify the queue ID in your Genesys Cloud org. Sometimes we copy-paste from the UI and miss a character. If you’re still seeing zero matches, enable debug logging on the rule and check CloudWatch for the actual raw event payload. The routingData object might be null if the call didn’t hit the queue directly.