PATCH /api/v2/conversations/webchat/contacts/{contactId}/attributes returns 204 but attributes don't stick

Hit a weird edge case with the Conversations API. I’m trying to update participant attributes mid-flow for a webchat session using the Node.js SDK. The endpoint PATCH /api/v2/conversations/webchat/contacts/{contactId}/attributes returns a clean 204 No Content, which usually means success. But when I check the contact details immediately after, the attributes are gone. Or sometimes they show up for a split second and vanish.

Here’s the payload I’m sending:

const payload = {
 attributes: {
 'tier-level': 'gold',
 'queue-priority': 'high'
 }
};

await client.conversationsApi.patchConversationWebchatContactAttributes(contactId, payload);

The contactId is definitely correct, pulled from the inbound webhook event. I’ve verified this isn’t a caching issue on the SDK side by hitting the REST endpoint directly with curl. Same result. 204 response, empty attributes object on subsequent GET.

Is there a specific attribute naming convention I’m missing? Or is the webchat contact lifecycle overriding external updates? The docs don’t mention any restrictions on writing to attributes after the conversation is established, but clearly something is wiping them out. Checked the event logs too, no error events firing.

What am I missing here?