Embedding on your site
One script tag. The chatbot bubble appears on any site you control. Brand-themed, mobile-friendly, latency-tolerant.
The snippet
Open Agents → pick a live agent → "Embed" tab. Copy the snippet and paste it before the closing </body> tag on any page where you want the bot:
<script async
src="https://app.seldonframe.com/embed.js"
data-agent="agt_abc123"
data-position="bottom-right">
</script>That's it. The bubble appears in the bottom-right corner. Click it to open the chat panel. The panel pulls the agent's brand colors, name, and avatar from the workspace.
Customization
The embed accepts data attributes for common tweaks:
data-position—bottom-right(default),bottom-left,inline(mounts wherever the script is placed instead of floating).data-greeting-delay— milliseconds before the bot proactively greets a visitor.0= on load.-1= never auto-greet.data-context— a JSON object the agent gets at conversation start. Useful for passing the current page URL, the visitor's known email if they're logged in, or campaign UTM params.
<script async
src="https://app.seldonframe.com/embed.js"
data-agent="agt_abc123"
data-position="bottom-right"
data-greeting-delay="8000"
data-context='{"page":"/services/furnace-repair","utm":"google-ads"}'>
</script>SeldonFrame-hosted pages
No snippet needed
your-workspace.app.seldonframe.com or your custom domain), the chatbot is wired automatically. You just toggle it on/off in Pages → Settings.Custom domains and CSP
If your site has a strict Content-Security-Policy, you'll need to allow app.seldonframe.com as a script source and connect source. Minimal example:
Content-Security-Policy:
script-src 'self' https://app.seldonframe.com;
connect-src 'self' https://app.seldonframe.com wss://app.seldonframe.com;
frame-src 'self' https://app.seldonframe.com;What conversations are recorded
Every message round-trip is logged to Agents → Conversations. The agent's identity, the visitor's anonymous session ID (or known email if you passed one in data-context), the message text, the tool calls, the eval-time validators that fired — everything is queryable.