Widget not loading
Step-by-step diagnosis for when the Simple Agent widget doesn't appear on your site.
If the widget isn't showing up after installing the snippet, follow this diagnosis in order.
1. Confirm the snippet is in the HTML
Open the page source (Ctrl+U / Cmd+U) and search for simple-agent.me/widget/loader.js.
If you don't find it, the snippet wasn't added correctly. Confirm it's pasted before </body>, not in the <head> or inside a component that doesn't render on the server.
2. Check the browser console
Open DevTools → Console tab and reload the page. Look for errors related to Simple Agent:
Error: net::ERR_BLOCKED_BY_CLIENT
The widget is being blocked by an ad blocker (uBlock Origin, Brave Shields, etc.). This is expected for some users — the widget uses Shadow DOM to minimize this, but aggressive blockers can still block it.
Solution for testing: Temporarily disable the ad blocker.
Solution for production: This affects ~10–15% of users. There's no complete fix — Simple Agent minimizes the impact by using the widget.simple-agent.me domain, which has a low block rate.
Error: Refused to load script from 'https://simple-agent.me/widget/loader.js' because it violates CSP
Your site has a Content Security Policy that blocks external scripts.
Solution: Add to your CSP:
script-src 'self' https://simple-agent.me https://simple-agent.me;
connect-src 'self' https://simple-agent.me/api;
frame-src 'self' https://simple-agent.me;
Error: data-agent-id is required
The data-agent-id attribute is missing or empty in the snippet.
Solution: Copy the snippet directly from the agent dashboard — it already includes the correct ID.
3. Check the Network tab
DevTools → Network → filter by widget. Confirm the script is loading with status 200.
If 404: the data-agent-id is incorrect. Copy it from the dashboard again.
If 403: your domain is not in the agent's allowed domains list.
Solution for 403:
- Dashboard → agent → Security
- Under Allowed domains, add
yourdomain.com(withouthttps://) - Save and reload
4. Check for CSS conflicts
The widget uses Shadow DOM to isolate its styles, but in some cases global CSS (* { display: none }, z-index: -1 on body) can affect the container.
Quick test: Open the console and run:
document.querySelector('#cbk-host')
If it returns null: the script hasn't finished loading. Wait 3–5 seconds and try again.
If it returns the element but the widget doesn't appear: inspect the element and check if display is set to none or if z-index is being overridden.
5. WordPress / cache plugins
If you're using a cache plugin (WP Rocket, W3 Total Cache, etc.), the snippet may be cached in an old version without the data-agent-id.
Solution: Clear the plugin cache and reload the page.
6. Widget appears but in the wrong position
If the widget appears but is off-screen or overlapping other elements:
- Check if a parent element has
overflow: hiddenthat clips the widget - The widget uses
position: fixed— confirm there's notransformorfilteron a parent element (this breaksposition: fixed) - To change the position: add
data-position="bottom-left"to the snippet
Still not working?
If none of the steps above resolved the issue, open a ticket with:
- URL of the page where the widget should appear
- Screenshot of the console showing errors
- Browser and version
- Whether you're using a SPA (React/Vue/Angular)