Widget
One script tag on a tenant’s own site. A visitor asks a question without an account first, and it is answered before anyone is asked to read it.
The launcher is on this page
Bottom-right corner, reading Chat with support. It is the real build, running in this page’s document inside a shadow root — the same file a tenant loads, carrying the same Snippet. Ask it something the help centre covers, like how do I change my billing contact?
What happens when you send one
- The sessionThe Widget mints an anonymous session against the API, judged on this page's origin against the tenant's allowlist. No account, no email, no password.
- The TicketYour message opens a real Ticket, on the same queue a human agent works from. Nothing about it is a simulation.
- The Turnnivara-ai retrieves from the tenant's own help centre, and a gate decides whether what came back is worth answering with. If it is, the answer types itself in.
- Or a personIf the gate is not confident, nothing is guessed at you. The Ticket goes to the staff queue with a note explaining why, and you are told a person has it.
What a tenant pastes
Two values and nothing else to do. The tenant id is public by design — it grants nothing on its own, because the request is judged on the origin, which no script can forge.
<script
src="https://nivara-web-nextjs.vercel.app/widget/widget.js"
data-tenant-id="5eed0000-0000-4000-8000-000000000001"
defer
></script>On somebody else’s page
This page is served from the application’s own origin, so it cannot demonstrate the one thing the Widget most needs to be true: that it works, and stays contained, on a site nobody here controls. That is what the demo host is for — a genuinely foreign origin carrying a deliberately hostile stylesheet, where the Widget is judged the way a tenant’s visitor would judge it.
Open the demo host