EventBridge filter for Genesys Cloud routing events dropping payloads

I’ve got a Node.js service listening to an SQS queue fed by an EventBridge rule. The rule is supposed to catch genesyscloud.routing.queue-member-added events from our JST-based org. The rule matches on source: genesys.cloud and detail-type: Genesys Cloud Event, but the queue is empty.

I checked the CloudWatch logs for the EventBridge delivery and see the raw event coming through, but the filter is rejecting it. Here’s the JSON structure I’m seeing in the logs:

{
 "source": "genesys.cloud",
 "detail-type": "Genesys Cloud Event",
 "detail": {
 "eventType": "routing.queue-member-added",
 "id": "12345",
 "timestamp": "2023-10-27T04:15:00Z"
 }
}

My current filter rule looks like this:

{
 "source": ["genesys.cloud"],
 "detail-type": ["Genesys Cloud Event"],
 "detail": {
 "eventType": ["routing.queue-member-added"]
 }
}

It feels like the detail object structure in the filter doesn’t align with how Genesys packages the payload. I’ve tried flattening the filter to just check source and detail-type, which lets everything through, but that’s noisy. Is there a specific path I need to target in the detail object for the filter to parse correctly? Or is the eventType nested deeper than I think?