Set Participant Data action dropping nested JSON objects in IVR flow

Trying to pass a complex JSON structure from a REST data action into the call context using the Set Participant Data action. The REST call returns the payload fine, but when I map the response body to a custom variable and push it to the participant, the nested objects get flattened or stripped entirely. Here is the JSON payload I’m trying to set:

{
 "customerInfo": {
 "id": "12345",
 "preferences": ["email", "sms"]
 }
}

The Architect expression looks like this: assign("custom.customerData", jsonToString($dataActionResponse.body)). When I log the variable later in the flow, custom.customerData is just an empty string or null. The SDK debug logs show the data action succeeded with a 200, but the participant update seems to fail silently. Is there a size limit on the participant data payload or a specific syntax I’m missing for nested objects? This is blocking our new IVR routing logic.