Powsoo / Guides / How to capture email addresses on a Vapi voice agent

How to capture email addresses on a Vapi voice agent

Updated 2026-07-13
Vapi ships an email formatter that is on by default. It rewrites @ as “at” and . as “dot” so the agent reads an address back in a way the caller can follow. The formatter changes how the agent speaks, not what it captured. If speech-to-text heard “jon” for “john” or dropped a hyphen, the agent reads back the wrong address confidently, and the caller has to catch that single wrong character by ear. Long addresses, company domains, and non-native speakers push that miss rate up. To confirm by sight instead, render the transcribed address on an on-screen card the caller taps: the agent calls powsoo_show_card with the value, the caller taps Confirm or edits one character, and Powsoo fires a webhook with the final address. The caller reads instead of listens, so a wrong character is obvious at a glance.

What Vapi gives you

Vapi ships an email formatter that is enabled by default. It rewrites @ as “at” and . as “dot” so the agent speaks an address the caller can follow. This runs inside Vapi’s voice formatting pipeline before text-to-speech.

The formatter changes output, not input. It has no view of what the caller actually said, so a mis-transcribed address is still mis-transcribed. And spoken email is one of the hardest cases: standard voice AI transcribes an address correctly only about 53% of the time, with more sophisticated approaches reaching around 74%. The standard advice is to prompt the agent to read the value back and ask the caller to confirm. That helps, and it still leaves the caller verifying a character string by ear.

Add on-screen confirmation with Powsoo

If the caller is on a web session, you can confirm by sight. Powsoo layers a visual card onto your existing Vapi agent. Vapi support is coming soon; when it lands the flow will be:

  1. Connect your Vapi account in the Powsoo dashboard.
  2. Add one <powsoo-voice> web component and one versioned script tag to the page.
  3. Add a powsoo_show_card tool to the agent. When the agent has an email to confirm, it calls that tool with the transcribed value.
  4. A card renders in the browser. The caller taps Confirm or edits one character.
  5. On confirm, Powsoo fires a webhook with the field name, the value, and the call session ID.

Want it today? Powsoo already works with Retell using the same tap-to-confirm pattern. Vapi support will not replace the agent: it keeps running the conversation, and the card handles the one field where a single wrong character costs you the lead.

Related

Frequently asked questions

Does Vapi capture emails accurately out of the box?

Vapi's email formatter is on by default and makes the agent read addresses back intelligibly. It does not verify what was captured. The caller still has to notice a wrong letter spoken aloud and correct it, which is where long or unusual addresses fail.

How do I confirm the email visually on a Vapi call?

Connect Vapi to Powsoo, drop in the <powsoo-voice> web component and script tag, and have the agent call powsoo_show_card with the transcribed email. A card renders in the browser; the caller taps Confirm or Edit; Powsoo fires a webhook with the final value.

What about phone-only Vapi calls with no screen?

A pure PSTN call has no browser to render into. For those, use an SMS fallback: the agent texts a one-tap link so the caller confirms the address on their phone.

Five minutes to zero spelling errors.

Go from zero to live confirmation cards in under five minutes.
No migration required.

Get started Read the docs