WAWaxiomatic

We open-sourced our chat widget

25 May 2026 · 2 min read · by Founder

#open-source#chat-widget#community

The Waxiomatic chat widget — the floating WhatsApp button you drop on any customer-facing site to route visitors into your inbox — is now MIT-licensed and lives on GitHub. The full source is in apps/widget/src/index.ts; the production bundle is hosted from our CDN at the same URL it's been at since launch.

Three reasons we did this.

Trust through audit. Customers paste a <script> tag from us onto their pricing page, their homepage, their checkout flow. That script runs in the same origin as their site, can read cookies, can touch the DOM, can post to wherever it wants. Open-sourcing means any prospective customer (or their security team) can read every line before installing — no dark patterns, no data exfiltration, no surprises. We always knew what was in the bundle; now everyone else can know too.

Distribution. The widget is small (~10KB gzipped) and framework-free. Customers who like the patterns can fork it for their own bundlers, copy chunks into their existing in-house widget, or use it as a reference for building integrations into other tools. The two-day Hacker News thread that introduced Plausible Analytics' open-source code generated more enterprise leads than their first year of paid ads. We'd take that trade.

Honest engineering. When the code is in the open, we have to keep it clean. Today our widget reads UTM params, respects host allow-lists, sends impression events via Beacon (with a fetch+keepalive fallback for browsers that block sendBeacon), parses business hours in the widget's configured timezone via Intl, and renders an offline email form when out-of-hours. None of that is fancy — but it has to be readable, because it's all in the repo.

Two practical things if you're integrating.

If you're embedding on your own site: copy the snippet from your dashboard at /dashboard/widgets/[id]. We pin the bundle URL by version so a future breaking change won't silently rewrite the widget on every customer's page.

If you're forking: the only API surface is data-waxiomatic-widget-key on the script tag plus an optional window.WAXIOMATIC_WIDGET_API_BASE for self-hosted deployments. The widget hits two endpoints — GET /widget/config/<key> and POST /widget/events — so you can re-host the bundle against your own Waxiomatic backend if you want to.

Star the repo if it's useful; PRs welcome.