Architect Data Action: Retrieving Web Messaging participant attributes

We’re trying to pass custom attributes set during a Web Messaging session into a downstream API via an Architect Data Action.

The flow is simple: inbound message → set participant attribute → data action → external POST. The issue is the data action isn’t seeing the attributes we set on the participant object earlier in the flow.

Here’s the relevant part of the flow:

  1. Set Participant Attribute: We use the ‘Set Participant Attribute’ action to store crmId and sessionId.
  2. Data Action: We configure the request payload to pull from the Conversation entity.

The payload mapping looks like this:

{
 "crmId": "{{Conversation.Participant.Attributes.crmId}}",
 "sessionId": "{{Conversation.Participant.Attributes.sessionId}}"
}

When we trigger the flow, the external API receives empty strings for both fields. If we hardcode a value, it works fine. So the connectivity is good.

I checked the debug logs in Architect. The participant attributes are definitely being set. The log shows:

Set Participant Attribute: crmId=12345

But the Data Action request body shows:

{
 "crmId": "",
 "sessionId": ""
}

Is there a specific syntax for accessing these attributes in a Data Action? Or do we need to use a different entity type? I’ve tried {{Conversation.Attributes}} and {{Participant.Attributes}} but those return undefined or errors.

Also, we’re using the standard Genesys Cloud Web Messaging widget. The attributes are set via the JavaScript API before the message is sent:

genesyscloud.webmessaging.setParticipantAttributes({
 crmId: '12345',
 sessionId: 'abc-123'
});

Any ideas? We’ve been stuck on this for two days.