Free tool
Website widget generator
Build the embed snippet attribute by attribute and see what each one changes. Everything happens in your browser - no key is sent anywhere.
Dashboard → Agent → Website/Deploy → API access. It stays in this page; nothing here is submitted to a server.
Shown as speech bubbles before the conversation starts.
Appended to the built-in transparency notice. The notice itself stays - it is what Article 50 of the EU AI Act asks for.
Preview - a mock of the widget chrome
Opening hours?
Book an appointment
YOUR COMPANYAI assistant
AI assistantYou are talking to an AI assistant. Just speak in your own language.
SpeakWrite
Layout and wording follow the real runtime, but this is a static mock - it does not connect to anything and cannot validate your key.
Your snippet
Without data-key the runtime logs an error and renders nothing. The snippet below has a placeholder in its place.
<!-- bitpull AI agent - https://bitpull.ai -->
<script src="https://bitpull.ai/widget/template.js"
data-key="YOUR_AGENT_API_KEY"
data-lang="en"
data-color="#2962ff"
data-teasers="Opening hours?|Book an appointment"
defer></script>Where it goes
- Plain HTML: immediately before
</body>. - WordPress: theme footer, or a header-and-footer snippet plugin.
- Shopify:
theme.liquid, before the closing body tag. - Webflow: project settings → custom code → footer.
- Next.js / Nuxt: a
deferscript in the body, not in the head.
Voice needs HTTPS
Browsers block microphone access on plain http origins. On a local development server, localhost counts as secure - a LAN IP does not, which is the usual reason the voice mode works on a laptop and not on the phone next to it.