NICE Cognigy webhook payload to CXone Architect expression

I’ve got a setup where NICE Cognigy sends a webhook to a CXone Data Action. The goal is to route the call based on the intent score.

The JSON coming from Cognigy looks like this:

{
 "intent": "billing_query",
 "confidence": 0.92,
 "entity": "monthly_statement"
}

In the CXone Data Action, I’m trying to map this to a variable routingIntent. I set the Data Action to POST to the webhook URL.

The problem is the expression in the Architect flow. I’m using ${system.DataActionResponse.result.routingIntent} but it comes back as null. I know the Data Action succeeded because the status is 200.

Am I missing a step in the Data Action configuration? Do I need to wrap the result in a specific JSON structure for the expression to pick it up? I’ve tried ${system.DataActionResponse.result} directly but that just dumps the whole object.

Here is the Data Action mapping I’m using:

  • Key: routingIntent
  • Value: {{intent}}

It feels like the expression syntax is off. Any ideas?

Docs state: “The Data Action receives the HTTP response body as a JSON object.” You’re likely missing the schema definition that tells CXone how to parse that incoming JSON. Without it, the expression engine sees an opaque blob, not a structured object.

You need to define the output schema in the Data Action configuration. If you skip this, the variables won’t map, and your routing logic fails silently. Here’s the exact JSON schema you need to paste into the “Response Schema” field of your Data Action:

{
 "type": "object",
 "properties": {
 "intent": {
 "type": "string"
 },
 "confidence": {
 "type": "number"
 },
 "entity": {
 "type": "string"
 }
 }
}

Once that’s set, go to your Flow. In the Data Action node, you’ll see the mapped variables appear. You can now use {{intent}} or {{confidence}} directly in your routing conditions.

If you’re trying to route based on the score, don’t use a string comparison. Use a numeric threshold. Docs state: “Conditional branches support numeric comparisons for float types.”

Set your condition like this:
confidence > 0.85

If the confidence is low, fall through to a default queue or transfer to a live agent. Also, check the timeout settings on the Data Action. Cognigy might be taking longer than the default 3 seconds to respond. If it times out, the Data Action returns null, and your variables break. Increase the timeout to 10 seconds in the advanced settings.

Don’t forget to enable “Ignore SSL errors” if Cognigy is using a self-signed cert during testing, though you shouldn’t leave that on in prod. The error logs will just say “Connection failed” without much detail.

Verify the payload structure in the CXone logs. If the schema doesn’t match the actual JSON, the parsing fails. It’s strict. One extra field or wrong type and it drops the data.