| Audience | Recommended approach | Best for |
|---|---|---|
| No-code / CMS user | Copy-paste snippet | WordPress, Wix, Webflow, Squarespace |
| Front-end engineer | Manual JS initialization or ESM Module | Custom websites, SPAs, advanced theming |
| React / Vue / Svelte dev | Same as front-end engineer (framework-agnostic) | Modern web apps |
Copy-Paste Snippet
HTML
- Drop it anywhere inside
<body>— the widget auto-mounts in place. - Responsive: stretches to the width of its parent container.
- All CSS lives in Shadow DOM — no style leakage.
Manual JS Initialization
For more control over when and where the widget loads. This approach lets you:- Load the widget inside modals or dynamic content
- Pass runtime configuration (country from URL params, custom labels, etc.)
- Integrate with your existing JavaScript build process
HTML
Set
data-autoboot="false" to prevent the widget from starting before you call init() manually.ESM Module
For modern development workflows with bundlers and build systems:- Dynamic imports for code splitting
- No npm dependencies or build step required
- TypeScript-friendly with proper module resolution
JavaScript
The ESM build is identical to the CDN version — same API, same events, same theming options.