I’m embedding the chat widget (retell-widget-v2.js) and trying to show our own logo in the chat header instead of the Retell logo. The logo never changes — the header keeps showing the Retell logo, even though data-logo-url is set.
The data-logo-url attribute is present in the served HTML (the page is hosting it correctly).
The logo image loads fine on its own — HTTP 200, content-type: image/png, ~143 KB, square PNG.
data-title (“Call Jess”) works as expected; only the logo won’t change.
Tested in a fresh incognito window / hard refresh — still the Retell logo.
I’m not using a white-label token, but per the docs that’s only for hiding the “Powered by Retell” text, not the logo.
Why I’m confused: looking at retell-widget-v2.js, the logo seems like it should just work:
It’s read directly, not gated by white-label: const r = e.getAttribute('data-logo-url') || void 0
The header renders: n.logoUrl ? <img src={n.logoUrl} .../> : <RetellLogo/>
So with logoUrl set, I’d expect my image — but it renders the Retell logo, which suggests logoUrl is empty at render time.
My questions:
Is data-logo-url meant to replace the header logo, or only the bot avatar / launcher icon?
Is there any extra requirement (white-label token, dashboard setting, allowed-domain, image dimensions) for the header logo to pick up data-logo-url?
The widget mounts in a Shadow DOM, so I can’t patch it with custom CSS — is there a supported way to set a custom header logo?
For context, the page is hosted on GoHighLevel, but I’ve confirmed GHL serves the attribute untouched. Widget: retell-widget-v2.js (current). Any pointers appreciated — thanks!
I am having the same issue as you with the logo URL. I am having an issue with data-title as well, do you see it rendering in place of the Retell text? Changing the FAB text works but not the text on top of the chat window. It still says Retell when I attempt it.
Hi @shahan Thanks for the detailed write-up — you traced the bundle correctly; the confusion is just which surface each prop lands on.
data-logo-url is wired to the teaser bubble (the chat-bot preview shown before the window opens), not to the chat-window header. That’s why setting it has no visible effect in the header.
The Retell wordmark in the open chat window header is hardcoded in retell-widget-v2.js — rendered by a fixed SVG component with no logoUrl branch. There is currently no data-* attribute, dashboard toggle, allowed-domain setting, or image-dimension requirement that swaps it.
data-white-label is not the lever either — that token only removes the “Powered by Retell” footer under the FAB. It doesn’t touch the header logo.
Because the widget mounts in a Shadow DOM, there’s no supported CSS-injection path to override the header logo. I’d recommend against shadow-root patching workarounds — the internal class names are build-hashed and will break on the next bundle.
To sanity-check that data-logo-url is working on your embed, you should see your logo on the teaser bubble (set data-show-ai-popup="true" so it’s visible).
Header-logo customization is a known gap on the widget side and not currently self-serve. Docs reference for the widget surface: Retell Website Widget - Retell AI
Not sure what is going wrong in your case, as it is working for me, see attached image, I am able to replace the RetellAI logo.
Can you send the whole link of your image, and I can let you know what might be going wrong.
Hello @shahan being straight with you: header-logo customization isn’t something we have queued. I checked our recent commits + open PRs across the widget frontend and there’s no active work to expose the header logo as a data-* prop, dashboard toggle, or white label config. The last several widget bundle commits have all been unrelated (mobile fixes, etc.).
I don’t want to promise a timeline I can’t back. If header branding is a hard requirement for your product, I’d recommend not blocking on us here. A few options depending on how much control you need:
Build your own chat surface against the Retell Chat API — you keep full UI/branding control, and our SDK gives you the same agent runtime. This is what most customers with strict branding requirements end up doing.
Use the widget in teaser/FAB-only mode where data-logo-urlis honored, and route the actual conversation into your own UI.
Stay on the widget as-is and we’ll flag this as a feature request internally — but I can’t commit to a delivery date.
Happy to point you at the Chat API docs / SDK if option 1 is the direction you want to go. Let me know.
I’d file this internally as a product feature request so it’s tracked, but the honest answer to you is “not coming soon, here are alternatives.”