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 assistant

You 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.

paste before </body>
<!-- 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 defer script 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.