Help CenterChatTroubleshooting The Chat Embed (Including CSP)
Back to Chat

Troubleshooting The Chat Embed (Including CSP)

Last updated July 9, 2026

If you've added the snippet from Dashboard → Chat → Embed but the chat launcher isn't showing on your website, work through the checks below. Most issues are one of: the tag hasn't published, chat isn't enabled, or your site's Content Security Policy is blocking it.


Quick checklist

  1. Is chat enabled? In Dashboard → Chat, make sure chat is set up and turned on for this showroom.
  2. Did the tag publish? In Google Tag Manager, confirm the Custom HTML tag is live (you clicked Submit), fires on All Pages, and isn't paused.
  3. Right showroom + host? The snippet's data-vyro-showroom and data-vyro-host should match exactly what Dashboard shows — don't edit them.
  4. One snippet only. Make sure it isn't added twice (e.g. in both GTM and the page HTML). The loader ignores duplicates, but two different showroom codes will conflict.
  5. Ad blockers. Some aggressive blockers hide chat widgets. Test in a private window with extensions disabled.
  6. Give it a minute. GTM changes and CDN caching can take a minute or two.

If it still doesn't appear, it's almost always CSP — read on.

Content Security Policy (CSP) blocks

If your website sends a Content Security Policy, the browser will refuse to load anything the policy doesn't explicitly allow — including our loader script and the chat iframe. This is the most common cause of "nothing appears" on security-hardened sites.

How to tell

Open the browser's developer tools (F12 or right-click → Inspect) and look at the Console tab. A CSP block shows a red error like:

Refused to load the script 'https://embed.vyro.com.au/chat.js' because it violates the following Content Security Policy directive: "script-src ...".

or

Refused to frame 'https://…' because it violates the following Content Security Policy directive: "frame-src ...".

What to allow

Add our origins to your CSP. You only need two directives (the loader is a script that adds an iframe; it makes no other requests from your page):

Directive Add Why
script-src the loader origin, e.g. https://embed.vyro.com.au to load chat.js
frame-src (or child-src on older policies) the host from your snippet's data-vyro-host to show the chat iframe

Example — if your current policy is:

Content-Security-Policy: default-src 'self'; script-src 'self';

extend it to:

Content-Security-Policy: default-src 'self';
  script-src 'self' https://embed.vyro.com.au;
  frame-src https://<your-data-vyro-host>;

Use the exact data-vyro-host value from Dashboard → Chat → Embed for frame-src. If you set CSP via a <meta http-equiv="Content-Security-Policy"> tag instead of a header, add the same sources there.

The chat's own network calls (inventory, messages) happen inside the Vyro iframe, which is served from our host — so they're governed by our CSP, not yours. You don't need to allow connect-src for chat-api on your site.

If you use Google Tag Manager

GTM injects the tag into your page, so your page's CSP still applies. If you use a nonce-based CSP, GTM Custom HTML tags may be blocked — allow the GTM domains per Google's CSP guidance, or add the snippet directly to your HTML instead.

Still stuck?

Grab the exact red error text from the browser Console and send it to your Vyro contact — the directive name in the message tells us precisely what to allow.

Learn more

Was this article helpful?