We’re hitting a wall with the Set Participant Data action in Architect. The goal is to pass a few custom attributes from an IVR flow into the conversation context so our custom agent desktop (built with the Client App SDK) can pick them up for screen pops.
Here is the flow setup:
- Collect input via Gatherv2.
- Use Set Participant Data to map the gathered input to a custom attribute key
ivr_origin. - Transfer to a queue.
In the Architect canvas, the action looks correct. I’m mapping the output of the Gatherv2 block directly to the attribute value. However, when the agent accepts the call, the conversation.participants[0].attributes object is empty of these custom keys. The standard attributes like media_type are there, but nothing I set.
I’ve verified this by logging the payload we receive via the WebSocket event conversation:updated. The JSON payload looks like this:
{
"id": "12345-abc",
"participants": [
{
"id": "67890-xyz",
"attributes": {
"media_type": "voice"
}
}
]
}
I tried adding a delay after the Set Participant Data action just to see if it was a race condition, but that didn’t change anything. I also confirmed that the attribute key ivr_origin doesn’t exist in the global attribute schema, so it should be allowed as a participant-level custom attribute.
Is there a specific configuration required on the Set Participant Data action to persist these through a transfer? Or am I missing something obvious about how participant data merges during a queue transfer?
Checked the docs on /api/v2/conversations/calls/{id} and it mentions participant attributes, but nothing about flow-side injection failing. We’ve been using this pattern for months in older flows, so I’m confused why it’s breaking now.
Any ideas?