NICE CXone Webhook Payload Structure for Cognigy Dynamic Routing

Hey folks,

We’re trying to set up a flow where NICE Cognigy handles the intent classification and then pushes the result back to NICE CXone to route the interaction. The idea is to keep the conversation context in Cognigy but let CXone handle the actual queue assignment based on the detected intent.

I’ve configured the webhook in CXone to accept POST requests. When I test it with Postman using a static JSON payload, the routing works fine. The issue pops up when the actual webhook fires from Cognigy. CXone seems to be ignoring the dynamic values I’m passing for the routing criteria.

Here’s the payload structure Cognigy is sending:

{
 "intent": "billing_issue",
 "confidence": 0.95,
 "user": {
 "phone": "+15551234567"
 }
}

In the CXone webhook configuration, I’m mapping the intent field to a custom attribute routing_intent. Then in the Architect flow, I have a split based on routing_intent == 'billing_issue'.

The problem is the split always falls through to the default path. I’ve added a debug step in Architect to log the routing_intent attribute right after the webhook step, and it comes back as null.

Am I missing something about how CXone parses incoming webhook payloads? Do I need to wrap this in a specific envelope format? Or is there a header requirement I’m overlooking?

Any pointers would be appreciated.