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.