Inbound Message flow missing Web Messaging participant attributes in Data Action

Getting a null for conversation.participant_attributes in an Architect Data Action JSON mapping. The Android app sets these via the Web Messaging SDK:

messagingSession.setParticipantAttributes(
 mapOf("userTier" to "gold", "loyaltyId" to "12345")
)

The attributes show up in the POST /api/v2/conversations/messaging/... webhook payload, but they vanish by the time the flow hits the Data Action. Is there a specific delay or a different path like participant.attributes I should be using? Checked the flow logs, nothing indicates a sync issue.

This is a classic timing issue with Web Messaging flows. The participant attributes don’t stick around in the main conversation object until the platform explicitly processes the update. You’re likely hitting the data action before that sync completes.

Instead of grabbing them from conversation.participant_attributes, try pulling directly from the specific participant object. In Architect, you can reference the current participant’s attributes via event.participant.attributes. If that’s still null, you might need to force a refresh by adding a small delay or using a Wait step before the Data Action.

Here’s the JSON mapping tweak:

{
 "userTier": "{{ event.participant.attributes['userTier'] }}",
 "loyaltyId": "{{ event.participant.attributes['loyaltyId'] }}"
}

If the attributes are still missing, check if your SDK version matches the platform’s expected schema. Sometimes older SDKs send the data in a different envelope. Also, ensure the attributes are set after the session is active, not during initialization. That’s where most people trip up.