Web Messaging widget config ignoring custom launcher position and theme colors

Trying to override the default widget appearance via the init config. The docs say I can pass theme and launcher objects to change the button color and position. Nothing is sticking. It keeps rendering the default blue button in the bottom-right corner.

Here’s the init block:

const config = {
 orgId: 'my-org-id',
 deploymentId: 'deploy-123',
 theme: {
 primaryColor: '#FF5733',
 backgroundColor: '#FFFFFF'
 },
 launcher: {
 position: 'bottom-left',
 iconUrl: 'https://example.com/custom-icon.svg'
 }
};

window.webMessagingSDK.init(config);

The widget loads fine. No console errors. But the UI ignores primaryColor and position. Checked the network tab. The widget fetches the deployment config from /api/v2/conversations/webmessaging/deployments/{deploymentId}. That response has a theme field, but it looks like the static JSON from the UI config, not what I passed in JS.

Is the JS config supposed to override the deployment-level settings? Or do I need to update the deployment via API first? Tried calling PUT /api/v2/conversations/webmessaging/deployments/{deploymentId} with the theme JSON. Got a 200 OK. Still no change in the browser. Cache clear didn’t help.

Might be a timing issue. The widget might be fetching the deployment config before my init call processes. Or maybe the theme object structure is wrong. Docs are sparse on exact key names. Tried accentColor instead of primaryColor. Nope.

Anyone got this working? Need to match brand guidelines. Can’t leave the default blue button. Seems like a basic feature. Must be missing something obvious. The launcher.position key feels right. Bottom-left is valid. Just not happening.

Check your launcher object structure. The SDK ignores nested theme props if they aren’t under the correct keys. You need style for colors and position for placement.

theme: {
 style: { primaryColor: '#FF5733' },
 launcher: { position: 'bottom-left' }
}

Docs are a bit vague on that nesting.