All posts
3 min readsupportguidesuse-cases

Voice AI for Customer Support Websites

A support agent that resolves requests instead of deflecting them — answering from your own content, taking action, and handing off to a human when it should.

By Voxide

Voice AI for Customer Support Websites

Most support bots are deflection tools. They exist to stop a ticket being created, and everyone involved knows it. The customer types a question, gets three article links, and goes looking for the "talk to a human" button.

A support agent that can act is a different proposition.

Answer from your content, not from guesswork

Attach your help centre, policy pages and product docs as a knowledge base. Relevant passages are retrieved and injected as context, so answers come from your actual refund window and your actual shipping rules — not from a plausible-sounding invention.

This is the floor, not the ceiling. Retrieval alone still leaves you with a bot that talks.

Let it resolve things

The step most support bots skip is doing the work:

ai.register({ lookupOrder: { description: "Look up an order by its reference number.", params: { reference: { type: "string", required: true } }, handler: async ({ reference }) => { const order = await api.getOrder(reference); return { status: order.status, eta: order.estimatedDelivery, carrier: order.carrier, }; }, }, resendReceipt: { description: "Email the receipt for an order to the account holder.", params: { reference: { type: "string", required: true } }, handler: async ({ reference }) => api.resendReceipt(reference), }, startReturn: { description: "Start a return for an item on a delivered order.", params: { reference: { type: "string", required: true }, itemId: { type: "string", required: true }, reason: { type: "string" }, }, dangerous: true, handler: async (args) => api.createReturn(args), }, });

"Where is order 4821" now returns a real status and a real date. "Send me the receipt again" is done before the sentence finishes. These are the requests that make up the bulk of support volume, and they are all lookups your API already supports.

Know who you are talking to

ai.setUser({ userId: user.id, email: user.email });

This identifies the end user so context persists across sessions, and lets your handlers scope every lookup to that account. Combine it with middleware so an order reference from the conversation can never reach an order the signed-in user does not own:

ai.use(async (ctx, next, cancel) => { if (ctx.action === "lookupOrder") { const owns = await api.userOwnsOrder(user.id, ctx.args.reference); if (!owns) return cancel("I can only look up orders on your account."); } await next(); });

Treat conversational input as untrusted, always. Your server-side checks stay exactly where they were.

Hand off honestly

The measure of a good support agent is what it does when it is out of its depth. You describe the escalation policy in plain English — when to stop trying and offer a person. The agent recognises the boundary, offers to connect the visitor, and once they accept, files a support request to your inbox, an email address or a webhook with the conversation attached.

The customer does not repeat themselves, and the human starts with the full context. Details in human handoff.

Escalate early on anything involving money the agent cannot verify, an account it cannot access, or a visitor who is clearly frustrated. A fast handoff is a better outcome than a clever deflection.

What gets stored

Support conversations are dense with personal data. Emails, phone numbers, card numbers, national IDs and IBANs are removed from transcripts before they are written — not masked afterwards, removed. Names and addresses are what sensitive: true is for on individual parameters.

That means the transcript attached to a handoff is safe to read, and your own dashboard is not quietly accumulating a pile of customer PII. See privacy and redaction.

Voice, or text, or both

The same agent serves both tabs of the widget. Voice suits frustrated customers on a phone who do not want to type an order number; text suits an office, a noisy room, or anyone who would rather not speak. You are not choosing — you are registering capabilities once and letting the customer pick the channel.

Related reading: add a voice chat widget to your website and voice AI use cases.

Keep reading