Browse the docs
Install
Troubleshooting the ASDK install
What each install check result means and how to fix it: snippet not found, wrong site ID, Content Security Policy, cached pages, consent tools and apps.
Last updated
On this page
The Check installation button on the dashboard's Install page opens your home page (and one more page if you enter it) the way a browser would. It looks for the ASDK snippet with your site ID and reads your site's Content Security Policy. The widget also reports itself whenever it loads on your site, and a report from the last 24 hours counts as a working install.
Snippet not found
The page loaded, but the ASDK snippet wasn't in it.
- The change isn't published. Most builders keep custom code in a draft until you publish. Publish, then check again.
- The snippet is on other pages. Paste it into a template every page uses, or enter a page that has it in the check's second field.
- A tag manager adds it. Snippets added by Google Tag Manager or similar tools aren't in the page's HTML. Publish the container, open your site once, and check again: the widget's own report counts.
- A cache serves an old copy. See cached pages.
Wrong Site ID
The snippet is there, but with another site's ID, or with no ID at all. This happens when a snippet was copied from another site or another workspace. Copy the snippet again from the Install page of this site. In the WordPress plugin or a tag manager tag, paste the new site ID into its settings.
Content Security Policy
A Content Security Policy (CSP) is a list of the places a site may load scripts from and send requests to. If your site has one, it must allow the widget, or the browser blocks it. Add these sources:
script-src https://cdn.asdk.com;
connect-src https://api.asdk.com;Keep your existing sources and add these to the same directives. If your policy only has default-src, add both addresses there, or add the two directives above.
- If the policy uses
'strict-dynamic', host names are ignored: give the ASDK script tag your page's nonce (nonce="…") instead. - A policy can come from a response header or from a
<meta http-equiv="Content-Security-Policy">tag in the page. The check reads both. - A
Content-Security-Policy-Report-Onlyheader doesn't block anything, so the check ignores it. - The widget sets its styles from its own script, so no
style-srcchange is needed. If you set an avatar image,img-srcmust allow it.
MDN's Content-Security-Policy reference explains every directive (checked October 2026).
Site unreachable
The check couldn't open the page. The result says why:
- The domain doesn't resolve or the connection failed: check the address and that the site is online.
- It answered 401 or 403: a password, a firewall or bot protection blocks automated visits. That's fine: install the snippet, open your site in a browser, and the widget's own report verifies the install.
- It answered 404 or 5xx: the page doesn't exist, or the site had an error. Try the home page, or check again later.
- Its HTTPS certificate isn't valid: renew or fix the certificate; visitors' browsers would warn too.
Cached pages
Caching plugins, page builders and CDNs can serve a copy of the page made before you added the snippet. Clear the cache of your site's caching plugin (in WordPress, for example WP Rocket or LiteSpeed Cache) and of your CDN, then check again. Some caching plugins also delay or combine scripts: exclude cdn.asdk.com from those options if the widget appears only after a scroll or a click.
Consent managers
If your site uses a cookie or consent banner that holds back scripts until a visitor agrees, the widget loads only after consent, and only for visitors who agree to the category you put it in. The widget doesn't set cookies; it keeps a random visitor ID in the browser's local storage so a conversation continues on the next page. Decide with whoever is responsible for privacy on your site which category ASDK belongs to, and add it to your privacy policy. ASDK's privacy policy describes what the widget processes.
Single-page apps
The widget follows client-side navigation (history.pushState) by itself. Load it once for the whole app, not per route, and don't remove and re-add the script tag on navigation. The Next.js and React guide shows where it goes.
The chat button doesn't appear, but the check says installed
- The agents switched on for the site don't include a chat agent. Agent-Ready works without a button. Check Agents in the dashboard.
- Another element covers the corner. The widget sits very high in the page's stacking order, but a full-screen overlay or a banner placed above it on purpose can hide it. Try
data-position="left"or close the overlay. - The site's address isn't one of the site's allowed domains in ASDK, so the widget refuses to load there. Add the domain in your site's settings.