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
- Train your bot. Add your website pages, price sheets, or FAQs in Dashboard → Knowledge Base. Wait for each source to show READY.
- Set up lead capture. Dashboard → Leads: pick your industry template, set your service-area ZIP codes, and add your notification email.
- 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.
- Publish and paste the snippet. Set the bot to Published, copy the snippet from Embed Widget, paste before </body>, and reload your site.
- 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