Embedding your agent
Two lines of code, paste them onto your website, your agent appears. No deploy step on your end, no build pipeline, no CDN config.
Open your agent's Publish page, then go to the Install tab โ
Two ways to embed
- Floating agent. A circular launcher button appears in the bottom right corner of every page. Visitors click to open. This is what most customers use.
- Iframe embed. Drops the chat into your page as a full-page iframe (ChatGPT-style) or any size you want. Use this for a dedicated /contact page, a help centre, or any standalone chat layout.
Step by step
- Open your agent's Publish page and switch to the Install tab.
- Pick the embed type, Floating or Iframe.
- Add your website's hostname to Allowed domains (e.g.
example.com) so nobody else can run your snippet on their site. - Click Copy embed code.
- Paste the snippet into your website's HTML, right before the closing
</body>tag.
Where to paste it
- Webflow: Project settings, Custom code, Footer code.
- Squarespace: Settings, Advanced, Code injection, Footer.
- WordPress: Use a "Header and Footer Scripts" plugin, or paste into your theme's
footer.php. - Wix: Settings, Custom code, Add custom code, set "Place code in" to "Body end".
- Shopify: Connect via Zapier. Generate a Dante API key, paste it into a Zapier zap, and trigger the widget from your Shopify events. (Direct theme.liquid pasting can also work for static stores, but Zapier is the supported integration path.)
- Hand-coded HTML: paste anywhere inside
<body>. The script loads asynchronously, so position doesn't matter.
Is it live? Check the status card
The Install tab shows a Live status card right above the snippet so you never have to guess whether the paste worked. It updates the first time a real visitor loads your page with the snippet on it.
- Not detected yet. We haven't seen your AI agent load on a live site. Paste the snippet on your site, open the page, then click Check again (or reload the Install tab).
- Your AI agent is live. The snippet is working on your website. Nothing else to do.
- Detected on a sandbox site. We saw your AI agent load on a preview or sandbox host rather than your real website, so the +500 deploy credits stay locked. Embed it on your real site to claim them.
Check again re-checks on demand, so you can paste the snippet, switch back to this tab, and confirm it went live without a full page reload.
Updating the snippet
You don't need to update the snippet when you change the agent's appearance, knowledge, or behaviour. Those updates apply automatically the next time a visitor opens the chat. The only times you'll repaste the snippet are after rotating the widget key (Security settings) or switching to a custom domain (Custom domains).
Widget not showing up on your site?
The most common cause is a domain that isn't on your allow list. If your widget tries to load from a site that isn't in Allowed domains, it is blocked on purpose so nobody else can run your snippet, and the launcher simply won't appear for visitors.
We make this visible for you: open
Publish, Install and look just under the
Allowed domains box. If we have seen a blocked load attempt,
you'll see a note like "We saw a load attempt from
your-site.com which isn't in your allowed
domains", with a one-click Add button. Click
it, save, and the widget starts working there right away.
?dante-debug=1 to your site's URL to see a small
owner-only message that names the exact domain to add.
Optimisation and caching plugins can break the widget
If the snippet is pasted correctly but the launcher still never
appears, the usual culprit is a performance plugin on your site.
WordPress optimisation and caching plugins "combine", "minify",
"defer", or "delay" JavaScript to speed up page loads. When one of
those features swallows our async loader, embed.js
either never runs or runs out of order, and the widget silently
fails to mount. Nothing in your Dante settings is wrong, the loader
just never got a chance to run.
Symptom. The launcher does not appear on your live site (often only after you installed or enabled a speed plugin), but it works in an incognito window with caching off, or on a copy of the site that does not have the plugin.
Fix. Tell the plugin to leave our loader alone. Exclude the Dante script from JS combine, minify, defer, and delay. The script URL to exclude is:
https://agents.dante-ai.com/embed.js
Most plugins accept a partial match, so just embed.js
or dante on its own works too. Here is where each of
the common plugins keeps that setting:
-
SiteGround Optimizer (SG Optimizer). WordPress
admin, SiteGround Optimizer, Frontend, JavaScript. In the
Combine JavaScript Files and Minify
JavaScript Files options use the "Exclude from JS
combination" / "Exclude from minification" box and add
embed.js. If Defer Render-blocking JavaScript is on, addembed.jsto its exclusion list as well. -
WP Rocket. Settings, WP Rocket, File
Optimization. Add
embed.jsto Excluded JavaScript Files. Then open Delay JavaScript Execution on the same page and addembed.jsto its excluded list (move it out of delay) so the loader is not held back until a visitor interacts with the page. -
Autoptimize. Settings, Autoptimize, JavaScript
Options. Add
embed.jsto Exclude scripts from Autoptimize, which is a comma-separated list, so "Aggregate JS-files" leaves the loader untouched. -
W3 Total Cache (W3TC). Performance, Minify, JS.
Under Minify, add
embed.jsto the Never minify the following JS files list (or turn JS minify off). If you use its defer / non-blocking option, exclude the script there too.
After changing any of these, purge the plugin's cache and reload
your page in a private window. The launcher should return within a
second. The same approach works for any other combine / minify /
defer / delay plugin (LiteSpeed Cache, Perfmatters, Hummingbird and
similar): find its JavaScript exclusion list and add
embed.js.
Widget appears but won't answer
Symptom. The launcher loads and opens and the welcome message shows, but every visitor message gets back "This agent is currently unavailable. Please check back later." instead of a real reply.
Cause. The workspace is out of credits. Replies cost credits, and when the monthly bucket plus any earned or purchased credits reach zero, the agent stops generating answers until the next reset or a top-up. The widget itself is healthy, only the reply step is paused.
Fix. Open Billing to check your balance. Buy the Extra Credits add-on for an immediate top-up, switch the agent to a 1-credit model so each reply costs less, or upgrade the plan for a bigger monthly bucket. See Understanding credits for the full breakdown.
Trouble pasting? We're here.
If the launcher doesn't appear after pasting, send us your website URL and we'll tell you exactly where to put it.