The expression returns empty string every time the trigger fires. Empty string result again. Web messaging sets the loyaltyId on the participant object but the inbound message flow data action can’t find it. The JSON structure looks correct in the debug logs yet the mapping fails.
{
"expression": "participant.attributes.loyaltyId"
}