One snippet. Live in 30 seconds.
Drop a single <script> tag into any site and the Janore floating chat assistant goes live. SSR-safe, themeable, RTL-aware, lazy-loaded, zero host-CSS bleed.
<!-- Janore embed loader — drop in <head> or before </body> -->
<script
src="https://janore.com/v1/embed/<your-assistant-id>.js"
async
data-position="bottom-right"
data-accent="#f59e0b"
data-locale="auto"
></script>Replace <your-assistant-id> with the UUID from your dashboard. The loader stays cached at the CDN edge — visitors after the first one pay 0 round-trips.
Engineered for production sites — not a demo.
- Lazy-loaded, zero perf hit
Loader is 3.4 kB gzip + async; the chat panel itself only fetches once the visitor opens it. No render-blocking, no layout shift, no CLS.
- RTL + 8 locales out of the box
Auto-detects visitor locale (en · fr · es · ar · de · it · pt · nl). RTL flips for Arabic. Override with `data-locale="fr"` or pin per route.
- No host-CSS bleed
The chat panel renders inside an iframe so your site CSS never leaks in and our CSS never leaks out. Z-index conflicts: impossible by design.
- Themeable via 12 CSS variables
Pass `data-accent`, `data-radius`, `data-font` — or the full 12-variable manifest for full white-label control. Per-page theme overrides supported.
- Works on every framework
Plain HTML, WordPress, Shopify, Webflow, Framer, Wix, Squarespace, Next.js, Nuxt, Astro, Remix, SvelteKit, vanilla JS — if it can render a <script> tag, it works.
- CSP-friendly + nonce-aware
Loader honours `Content-Security-Policy` nonces. Works with strict CSP setups (`script-src 'self' 'nonce-XXX'` ✓). Doesn't `eval()`, doesn't inject inline styles.
6 attributes cover 95% of what you'll want to tweak.
| Attribute | Default | Allowed |
|---|---|---|
| data-position | bottom-right | bottom-right · bottom-left · top-right · top-left |
| data-accent | #f59e0b | Any hex — drives button + focus ring |
| data-radius | 22 | Panel corner radius in px (4–32) |
| data-locale | auto | auto · en · fr · es · ar · de · it · pt · nl |
| data-launcher | true | false to hide the floating button (open via JS) |
| data-greeting | — | Override the assistant's first-message greeting |
For full white-label control (12 CSS variables, custom launcher icon, programmatic open/close, host-page event hooks) see the embed docs →
Ready to ship?
Sign in, create an assistant, copy the snippet — your site has a live multilingual AI in under 5 minutes.