Skip to main content
The web agent puts a floating Call + Chat launcher on any website. Visitors can chat in text with an assistant you control, or start a live voice call in the browser - no phone needed. It is a single <script> tag: no build step, no dependencies, works on any site (WordPress, Shopify, plain HTML, React - anything that can include a script). Every conversation is saved and readable in your dashboard, so a visitor who types “call me back on 07700 900123” is never lost.
One phone number = one web agent (one brain, one knowledge base, one conversation inbox). The visual design lives in the embed snippet, so the SAME number can wear different designs on different websites - all their chats land in the one inbox for that number.

Quick start

1

Open the dashboard

Go to Web Agent in your dashboard and press Create web agent.
2

Configure

Pick the agent, the number, a display name, optional quick questions, and a design + colour.
3

Set the web instructions

Press Set up agent and write the web-chat instructions (this is the ONLY knowledge the web agent uses - see below).
4

Copy the code

Press Get code and paste the snippet before </body> on the website. Done.

Script attributes

Everything about the widget is controlled by data-* attributes on the script tag.

Designs

Eight launcher designs are available. The design is only the clothing - the number is the brain, so switching designs never changes what the assistant knows or where conversations go. All designs open the same chat panel: a centred modal (bottom sheet on mobile) with a gradient header in your colour, a “Talk to us live” voice-call card, the chat, your quick questions, and the composer.

How the chat behaves

  • Knowledge: the web agent answers ONLY from the number’s web instructions (web_prompt). It does not use the voice agent’s call prompt. Empty instructions = a safe minimal fallback that tells visitors to call the business. Cap: 5,000 tokens (about 20,000 characters).
  • Greeting: when the panel opens, the assistant sends one live greeting (“Hi there! How can I help you today?”) after a short typing animation.
  • Memory: the visitor’s browser keeps the conversation and sends the last 20 messages with each request, so the assistant remembers context within and across visits on the same browser.
  • Booking: the web agent cannot book, cancel, or change appointments. It tells visitors to call for those - the voice agent handles booking.
  • Failed replies: network or server problems show a polite retry message; the visitor’s page is never affected.

Web calls (voice in the browser)

The chat panel’s “Talk to us live” card starts a real voice call in the browser - same AI, same knowledge, same billing as a phone call to that number. Web calls must be enabled per number first. See Web calls for the toggle API and full behaviour.

Conversations in the dashboard

Every chat is stored and shown at Dashboard -> Web Agent:
  • One inbox per number. All websites using that number feed the same inbox - the design used does not matter.
  • Visitor identity: visitors are anonymous. Each browser gets a stable id, shown as a friendly number like Visitor 4821. The same browser stays the same visitor across visits (id lives in the browser’s localStorage). A different browser, device, or private window is a new visitor - that is normal for anonymous web chat.
  • If a visitor leaves a name or phone number in the chat, it is right there in the messages - that is how you capture leads.
  • Order: newest conversation first. Click any visitor to read the full thread (visitor left, agent right).
  • Retention: conversations are kept for 90 days, then deleted automatically every night. There is no manual delete - the retention window is the lifecycle.

Managing by API

Developers can manage the web agent per number without the dashboard. Set / update / clear the web instructions (and optionally SMS instructions) via the phone-numbers API:
Send "web_prompt": "" to clear. Over 20,000 characters returns web_prompt_too_long. The chat endpoint the widget calls (public, no API key - it is what the embed uses):
Response:
  • history is the running conversation (user / assistant roles), newest last. Send the last 20 messages.
  • session_id is any stable per-visitor string. It groups messages into one conversation in the dashboard. Omit it and the chat still works, but the conversation is not stored.
  • Failures return { "ok": false, "reason": "..." } with HTTP 200 - reasons include unavailable (no credit or number not found) and server_error.

Pricing

Web agent billing is pay-as-you-go from the same credit balance as your call minutes - one balance, everything deducts from it: Free credit is spent first, exactly like calls. When the balance reaches zero, the widget politely tells visitors chat is unavailable instead of replying free. Because chat spends the shared balance, your “minutes remaining” figure shrinks slightly as chats happen - the dollar credit shown on the Billing page is always the source of truth.

Privacy and limits

  • Visitors are anonymous - no cookies are set by Nixflex, no tracking across websites. The visitor id lives only in that browser’s localStorage for that site.
  • Conversation content is stored for 90 days for the business owner, then deleted automatically.
  • Web instructions cap: 5,000 tokens. Chat memory: last 20 messages.
  • The widget script is served from https://nixflex.com/button.js and updates automatically - embeds never need re-copying for improvements.

FAQ

Yes. Paste the same number’s snippet on any number of sites - different designs and colours per site if you like. All conversations arrive in that number’s one inbox.
No - one number = one set of web instructions. Different knowledge needs a different number.
They used a different browser, device, or a private/incognito window. Anonymous web chat identifies the browser, not the person - the industry-standard behaviour.
Edit them in the dashboard and copy a fresh snippet, or edit the data-chips attribute directly on the site. Chips live in the embed, not on the server.
No. Calls, SMS, and web chat are three independent channels with three independent prompts on the same number.