EventBridge rule dead silent on conversation.stateChange event pattern

I’ve been staring at this EventBridge rule for two hours and it’s just not firing. The console shows the rule exists and is enabled, but the target Lambda never gets invoked when a conversation changes state in CXone.

The event pattern looks correct based on the docs. I’m listening for conversation.stateChange. Here is the JSON I’m using for the pattern:

{
 "source": ["com.nice.cxp.cxpone"],
 "detail-type": ["conversation.stateChange"],
 "detail": {
 "type": ["voice"]
 }
}

I even added a dead-letter queue to catch failures, but nothing lands there either. This suggests the event isn’t matching the rule at all, or maybe the source isn’t what I think it is.

I checked the CloudWatch logs for the CXone integration itself, but there’s no detailed trace of outbound event payloads. I can see the rule ARN and the target, but no “attempted match” logs.

Has anyone hit a case where detail-type needs to be more specific? Or is there a way to debug the raw event structure being pushed to EventBridge without guessing? The documentation is pretty thin on the exact payload shape for state changes.