Web Messaging widget ignoring custom guest attributes in init config

The widget loads fine but the custom attributes aren’t showing up in the conversation metadata. I’m passing them in the init object like this:

GenesysCloudWebMessaging.init({
 organizationId: 'my-org-id',
 deploymentId: 'my-deployment-id',
 guest: {
 attributes: {
 userId: '12345',
 tier: 'gold'
 }
 }
});

Debug console shows the object is sent, but the CXone side receives empty attributes. Am I missing a step or is this config structure wrong?