Learn

How to install the AI disclosure snippet on any platform

Updated June 13, 2026

The Disclosed snippet is one script tag. Your dashboard gives you the exact tag with your site key filled in (open a chatbot and press Copy snippet); it looks like this:

<script src="https://cdn.disclosed.sh/widget.js" data-site="site_live_xxxx" defer></script>

Two rules before the platform steps. First, the disclosure has to load on every page where your chatbot appears. Most chat widgets float site-wide, so install site-wide. Second, placement in the file does not matter much; the end of the body is conventional, and defer means it never slows your page.

Google Tag Manager

The easiest route when marketing owns the site. In GTM: Tags → New → Custom HTML, paste the snippet, set the trigger to All Pages, then Submit and publish. Done; no developer needed.

WordPress

Use a code-snippet plugin (WPCode, or "Insert Headers and Footers") and paste the tag into the footer section for all pages. If you prefer the theme route: Appearance → Theme File Editor → footer.php, paste before </body>. Plugin beats theme edit because theme updates will not erase it.

Shopify

Online Store → Themes → (your theme) Edit code → layout/theme.liquid, paste just before </body>, save. That single file wraps every page of the storefront, so one paste covers the whole shop.

Webflow

Site settings → Custom code → Footer code, paste, save, and publish. (Custom code requires a paid Webflow site plan.)

Framer

Site settings → General → Custom code, paste in the End of body slot, then publish.

Squarespace

Settings → Advanced → Code injection → Footer, paste, save. (Business plan or higher.)

React, Next.js, or any single-page app

Put the tag in your root layout or HTML template so it renders once for the whole app. In Next.js App Router, add it to app/layout.tsx body using the next/script component with the same src, data-site, and defer semantics. The widget mounts once and persists across client-side route changes; you do not need to re-trigger it per route.

Embedded chats with no floating launcher

If your AI chat is built into the page itself (a chat box in the page flow, a full-page assistant, a search-style bot) rather than a floating bubble, a corner badge can feel disconnected from it. Add a data-anchor attribute with a CSS selector for your chat element:

<script src="https://cdn.disclosed.sh/widget.js" data-site="site_live_xxxx" data-anchor="#my-chat" defer></script>

The disclosure then renders in the page flow directly above your chat, aligned to its edges, so visitors read it before the first message. If the element is not found within 15 seconds (or the selector is invalid), the widget falls back to the corner position so the disclosure always shows. One caveat: the selector must match an element in your own page, not inside a third-party iframe.

How to know it worked

Open any page of your site: you should see the disclosure badge floating just above where your chat button sits, with the notice in the visitor's language. Then check your Disclosed dashboard: the chatbot's status flips from "Awaiting first disclosure" to Installed the moment the first render is logged, usually within seconds of your visit. That logged event is also the start of your evidence trail.

If the badge does not appear, the usual causes are a typo in the data-site key, the tag published to only some pages, or an aggressive script blocker on your own browser; try a private window first.

Is your chatbot actually ready?

Six questions, an instant verdict, free.

Just need the deadline handled? The one-time EUR 129 compliance pack covers a single chatbot with no subscription.

Disclosed provides compliance tooling and records; this document is not legal advice. Review it with your counsel before relying on it.