DocsIntegrationsCustom Website
Custom Website
AvailableEmbed Botvee on any website with one script tag. Works with plain HTML, React, Next.js, Vue, Laravel, Django — anything that renders HTML.
Connect it
- 1
Open Dashboard → Integrations → Custom Website
- 2
Select the AI Agent to embed
- 3
Copy the generated script
it already contains your AI Agent ID
- 4
Paste it just before the closing </body> tag on every page
- 5
Save and refresh your site
Embed Scripthtml
<!-- BotVee Chat Widget -->
<script>
(function(w,d,s,o,f,js,fjs){
w['BotVee']=o; w[o]=w[o]||function(){(w[o].q=w[o].q||[]).push(arguments)};
js=d.createElement(s); fjs=d.getElementsByTagName(s)[0];
js.id=o; js.src=f; js.async=1; fjs.parentNode.insertBefore(js,fjs);
}(window,document,'script','bv','https://www.botvee.ai/widget.js'));
bv('init', { botId: 'YOUR_AGENT_ID' });
</script>
<!-- End BotVee -->React, Next.js and Vue
React / Next.jstsx
// React / Next.js — load the widget once, after mount
import { useEffect } from "react";
export function BotveeWidget({ botId }: { botId: string }) {
useEffect(() => {
if (document.getElementById("bv")) return; // already loaded
(function (w: any, d: any, s: string, o: string, f: string) {
w["BotVee"] = o;
w[o] = w[o] || function () { (w[o].q = w[o].q || []).push(arguments); };
const js = d.createElement(s), fjs = d.getElementsByTagName(s)[0];
js.id = o; js.src = f; js.async = 1;
fjs.parentNode.insertBefore(js, fjs);
})(window, document, "script", "bv", "https://www.botvee.ai/widget.js");
(window as any).bv("init", { botId });
}, [botId]);
return null;
}Notes
- Your AI Agent ID is unique to that agent — keep it private
- Paste before </body>, not inside <head>
- Put it in your shared layout or footer template so it loads on every page
- On WordPress, use the WordPress plugin instead — the setup is simpler
Verify
The launcher should appear bottom-right within a couple of seconds, and Dashboard → Connected should show Custom Website as connected. Send a test message and confirm it appears in All Chats.
Important
The widget will not load over plain HTTP on a page served as HTTPS, and aggressive script blockers can stop it. Test in a normal private window first.