CXone Studio IF action failing on string comparison after ASSIGN

We’re seeing a consistent failure in our CXone Studio flow when trying to branch based on a customer’s loyalty tier. The flow pulls data from an external API using a Data Action, then attempts to route the call based on the tier field returned in the JSON payload.

The Data Action returns a successful response with a body like this:

{
 "status": "success",
 "data": {
 "customerId": "12345",
 "tier": "Gold"
 }
}

I’m using an ASSIGN action to extract the tier into a local variable:

<ASSIGN>
 <TARGET>var.customerTier</TARGET>
 <SOURCE>{{dataActionResponse.data.tier}}</SOURCE>
</ASSIGN>

The assignment seems to work because the debug log shows var.customerTier is set. However, the subsequent IF action always falls through to the false branch, even when the tier is definitely “Gold”. Here’s the condition I’m using:

<IF>
 <CONDITION>var.customerTier == "Gold"</CONDITION>
 <TRUE>
 <!-- Route to Gold Queue -->
 </TRUE>
 <FALSE>
 <!-- Route to Standard Queue -->
 </FALSE>
</IF>

I’ve tried using single quotes ('Gold'), trimming the string with trim(var.customerTier), and even converting everything to lowercase, but the condition var.customerTier == 'gold' also fails. I suspect there might be hidden whitespace or a data type mismatch, but the debug output just shows the string value cleanly.

Has anyone run into this specific behavior with string comparisons in Studio? Is there a syntax nuance with how Studio evaluates these conditions? I’m out of ideas here.