Everything in the box

Vroxy is one <script> tag. What your visitors get is a chat widget that already knows your product. What you get is the transcript, the questions nobody could answer, and a way to fix both.

Answers from your own words

The bot answers out of a knowledge base you control, not a generic model guessing about your product. Write docs in Markdown, paste a URL and let the scraper pull the page in, or push the whole corpus through the API from your build pipeline. Publish and unpublish individually — a draft is invisible to the bot until you say so.

A per-workspace system prompt sets the voice. A glossary teaches it your vocabulary, so “seat” means what your pricing page means by it and not what the model assumed.

Tools that reach into your app

Docs answer questions about your product. Tools answer questions about the visitor’s account.

Define one in the dashboard: a URL template with {placeholders} the model fills in. A link tool builds a deep link and hands it over. A fetch tool also calls it server-side and reads the result back into the answer, so the bot can tell someone their order shipped instead of telling them where to go look.

Every tool carries an access level — public, user, or admin. The level is checked against the visitor’s verified identity at the moment the tool runs, not just when the model is told the tool exists.

A human, the moment one is better

The bot stands down as soon as an operator types. No competing replies, no bot cheerfully contradicting your support lead mid-thread. Hand back when you’re done and it picks the thread up with full context.

Visitors can ask for a person outright, and the request lands in your dashboard and on your phone.

Files, screenshots, and the actual bug

Visitors attach images and documents by picking, pasting, or dropping them. So do operators. Uploads start the moment a file is attached and show real progress, so nobody watches a frozen Send button.

When a description isn’t getting there, an operator can request a screenshot. The visitor sees a consent prompt, and nothing is captured unless they press Share.

Know who you’re talking to

Call identify() from your own app and the conversation carries a name, an email, and any metadata you attach. Sign the claim with your workspace secret — our SDKs do it for you — and the identity becomes verified, which is what gates the tools that matter. An unsigned claim is one browser console call away from “I’m an admin”, so it never grants anything.

Errors, reported by the page itself

The widget reports its own JavaScript errors, and our SDKs report your server’s, grouped by fingerprint in your dashboard. The support ticket and the stack trace finally live in the same place.

Made for the people answering

Full-text search across every transcript, message body included, with the matching line highlighted. Live visitor list. Team rooms for the conversation about the conversation. Roles from operator to owner, plus individual grants when someone needs exactly one more thing. And an operator app for your phone, so the handoff request doesn’t wait for somebody to open a laptop.

Yours to shape

Brand color, logo, display name, greeting, and which model answers. The widget detaches into a floating window, docks back, drags where the visitor wants it, and remembers. It renders inside a Shadow DOM, so your CSS and ours never meet.

Start free · Read the docs