Janore
Embed

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.

Loader snippet
<!-- 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.

What the loader gives you

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.

Customization

6 attributes cover 95% of what you'll want to tweak.

AttributeDefaultAllowed
data-positionbottom-rightbottom-right · bottom-left · top-right · top-left
data-accent#f59e0bAny hex — drives button + focus ring
data-radius22Panel corner radius in px (4–32)
data-localeautoauto · en · fr · es · ar · de · it · pt · nl
data-launchertruefalse to hide the floating button (open via JS)
data-greetingOverride 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.