⚡ New: free forever plan — 1 AI receptionist, 50 chats/mo · no card needed
Documentation

Install in one snippet

Publish your bot, copy its snippet from the dashboard, paste it before the closing </body> tag. Done.

<!-- Mazingi chat widget -->
<script
  src="https://your-app-domain.com/api/widget.js"
  data-chatbot-id="YOUR_PUBLIC_CHATBOT_ID"
  async>
</script>

The full install, start to finish

  1. Train your bot. Add your website pages, price sheets, or FAQs in Dashboard → Knowledge Base. Wait for each source to show READY.
  2. Set up lead capture. Dashboard → Leads: pick your industry template, set your service-area ZIP codes, and add your notification email.
  3. Test in the playground. Ask real customer questions and say "I need a quote" to rehearse the lead flow. Playground sessions never create real leads.
  4. Publish and paste the snippet. Set the bot to Published, copy the snippet from Embed Widget, paste before </body>, and reload your site.
  5. Send yourself a test lead. Chat as a visitor on your live site and request a quote — the lead should hit your email and dashboard within seconds.

Bookings & the outbound webhook

Add your services under Dashboard → Bookings → Services & settings and flip the Bookings toggle on your bot — it then quotes your real prices and takes appointment requests you confirm with one click. To push bookings and leads into other tools, paste a webhook URL (a Zapier or Make "catch hook" works as-is). Every event POSTs JSON like this:

{
  "event": "booking.requested",   // booking.confirmed | booking.declined |
                                  // booking.completed | lead.captured
  "sentAt": "2026-08-06T14:03:22.000Z",
  "workspaceId": "…",
  "booking": {
    "id": "…",
    "status": "requested",
    "serviceName": "Gel Manicure",
    "servicePrice": "$45",
    "serviceDurationMinutes": 30,
    "preferredTime": "Friday around 2pm",
    "name": "Dana Reyes",
    "phone": "215-555-0186",
    "email": "",
    "notes": "",
    "conversationId": "…",
    "createdAt": "…"
  }
}

lead.captured events carry a lead object with the captured fields instead of booking. Delivery is fire-and-forget with a 10-second timeout — a slow endpoint never delays a visitor's chat.

Where's my chatbot ID?

  • Dashboard → Embed Widget
  • Every published bot has an ID starting with pb_
  • Safe to expose — grants chat only, never dashboard or API access

CSS isolation

  • Renders inside a Shadow DOM container
  • Your theme can't break the chat window
  • The widget can't affect your page styles

Lock it to your domain

  • Per-bot domain allowlist in Embed Widget settings
  • Other origins rejected server-side
  • Built-in rate limiting against abuse
Troubleshooting

Common setup questions