Zurvo
Installing on Your Site

Fix a Content Security Policy that blocks the widget.

If your site sets a Content-Security-Policy, the browser can block the Zurvo widget. Allow app.zurvo.ai in three directives and the launcher appears.

Some websites send a security header called a Content-Security-Policy (CSP). It lists exactly which outside services the browser may load. When your site has one and Zurvo is not on the list, the browser blocks the widget and nothing appears — even though your install is correct.

Confirm this is the problem.

  1. Open your live site in a browser.
  2. Press F12 (or right-click → Inspect) and open the Console tab.
  3. Reload the page.

A blocked widget logs an error like this:

Loading the script 'https://app.zurvo.ai/widget.js' violates the following
Content Security Policy directive: "script-src 'self' ..."

You can also open your Install Widget page in Zurvo and use Check my installation — it reads your site’s security policy and tells you whether it blocks the widget.

Allow Zurvo in three directives.

Add https://app.zurvo.ai to these three directives in your site’s Content-Security-Policy:

DirectiveWhy the widget needs it
script-srcLoads the widget script (widget.js) on your page.
frame-srcShows the chat window, which runs in a frame served by Zurvo.
connect-srcLets the widget report that it loaded, so your Install page shows a green status.

A before-and-after example:

Before: script-src 'self'; frame-src 'self'; connect-src 'self'
After:  script-src 'self' https://app.zurvo.ai; frame-src 'self' https://app.zurvo.ai; connect-src 'self' https://app.zurvo.ai

Notes:

  • If your policy has no frame-src, the browser falls back to child-src, then default-src. Add frame-src 'self' https://app.zurvo.ai so the frame is allowed no matter what the fallbacks say.
  • The policy can live in a response header or in a <meta http-equiv="Content-Security-Policy"> tag in your HTML. Update it wherever your site defines it.
  • Where you edit it depends on your setup: a Next.js site sets it in next.config, many hosts set it in a dashboard or a server config file, and some security plugins add one for you.

After the change.

Deploy or save the change, then open your site in a private window and reload. The launcher should appear, and the console error is gone. Your Install Widget page’s status indicator turns green after the first load.

If the widget still does not appear, work through the checklist in Confirm the widget is loading on your site.

Frequently asked questions.

How do I know a Content Security Policy is the problem?

Open your site, press F12 to open the browser console, and reload. A blocked widget logs an error like: Loading the script 'https://app.zurvo.ai/widget.js' violates the following Content Security Policy directive. If you see that message, this article is your fix.

My site has no Content-Security-Policy header. Do I need to add one?

No. Sites without a Content-Security-Policy need no changes — the widget loads without any of this. This article only applies when your site (or your hosting platform) already sets one.

I don't manage my own website. What do I do?

Forward this article to the person or agency that manages your site. The change is three small additions to one security header, and any web developer will recognize it.

Still need help?

Reach out and we'll help you get set up — or start your free trial and see Zurvo on your own site.