Participant attributes from Web Messaging not visible in Architect Data Action JSON

I have been debugging a weird issue with our inbound web messaging flow for the last two days. The symptom is that the participant attributes set by the Web Messaging SDK are not appearing in the Architect Data Action payload when the conversation starts. We use the Embeddable Client App SDK on the frontend to set custom attributes before initiating the chat. The code looks correct on the client side.

Here is the snippet from our frontend JavaScript:

const client = await genecloud.init({...});
const participant = await client.participants.getParticipant();
await participant.setAttributes({
 "loyalty_tier": "gold",
 "source_campaign": "summer_sale"
});

The attributes stick to the participant object in the browser console. I can see them in the Genesys Cloud UI under the participant details tab after the message is sent. However, when the conversation routes to Architect, I have a Data Action configured to fetch external data. The Data Action sends a POST request to our internal API. The JSON payload sent by Architect does not contain the loyalty_tier or source_campaign fields. It only has the standard system attributes like participant.id and conversation.id.

I tried adding a Wait step before the Data Action, hoping the attributes would sync, but it made no difference. I also checked the /api/v2/conversations/messaging/... endpoint directly via Postman using the conversation ID. The participant object there also lacks these custom attributes in the immediate response, though they appear if I query the specific participant endpoint /api/v2/conversations/messaging/.../participants/{id}.

Is there a delay in how Architect populates the Data Action variables? Or do I need to explicitly pull the participant data via a separate API call in the Data Action JSON mapping before proceeding? The documentation suggests attributes should be available in the context, but nothing shows up in the request.body of my Data Action. I feel like I am missing a step in the attribute propagation.

// Ensure attributes are set on the ‘participant’ object, not the top-level payload
messagingClient.setParticipantAttributes({
“crmId”: “12345”,
“segment”: “premium”
});


The SDK doesn't automatically merge custom attributes into the Architect Data Action context unless they're explicitly attached to the participant object before the chat starts. Check the New Relic docs for Genesys Cloud webhooks to see how participant data is exposed in the event payload.