Start the conversation

Voice calls powered by the same AI as your SMS campaigns.

Outbound calls initiated by the platform, inbound calls handled in real time. The AI reads the conversation, speaks via Polly, and routes the contact — all through TwiML webhooks with no telephony infrastructure required.

TwiMLindustry-standard webhook protocol — no proprietary SDK
~40 wordsAI message limit for voice — calibrated for spoken delivery
Polly.AmyTTS voice — includes 1s pause before speaking
Same AIidentical pipeline to SMS — context, directives, and guardrails
How voice calls work

Outbound calls initiated. Inbound speech captured. AI responds.

When a voice call is initiated, the platform calls Twilio's API with an answer URL that includes the AI's first message as a URL-encoded parameter. Twilio speaks it via TTS and opens a Gather listener. When the contact speaks, the transcript posts to the gather webhook and the full pipeline runs inline — the AI reads the conversation, decides what to say, and returns the next TwiML response.

  • Outbound call initiated via Twilio calls.create — answer URL carries the opening message
  • Polly.Amy TTS with a 1-second Pause before speaking — natural call opening
  • Gather element captures speech-to-text — transcript posted to gather webhook
  • Full pipeline runs synchronously — AI decision before the next TwiML response
  • Terminal directives (END, BOOKED) return TwiML with no Gather — call ends naturally
  • All voice messages sanitised before TTS — markdown, URLs, and HTML stripped
Voice call flow
  1. 1
    Outbound initiated
    Twilio calls.create with answer URL + encoded message
  2. 2
    Answer TwiML
    Pause → Say (Polly.Amy) → Gather listener opens
  3. 3
    Contact speaks
    STT transcript posted to gather webhook
  4. 4
    Pipeline runs
    Full AI pipeline — compliance, context, AI call, persist
  5. 5
    Next TwiML
    AI message spoken + Gather (or terminal — no Gather)
  6. 6
    Call ends
    Terminal directive returns Say-only TwiML, Twilio closes
Voice-specific behaviour

The same AI. Tuned for spoken delivery.

Voice conversations have different constraints to SMS — shorter messages, no re-reading, spoken booking links. The platform injects a voice instructions block into the system prompt that overrides SMS defaults for every voice campaign.

40-word message limit

Voice responses are capped at approximately 40 words — calibrated for a natural spoken exchange. Contacts can't re-read a voice message, so the AI keeps responses concise and avoids packing in multiple questions.

How it works: Enforced via voice instructions block injected into the system prompt — applies to every voice campaign automatically.

Booking links sent by SMS

When a booking link needs to be delivered during a voice call, the AI sends it as a separate SMS to the contact's phone number rather than reading the URL aloud. URLs spoken over a phone are useless.

How it works: Voice instructions block instructs the AI to send booking links by SMS — no manual campaign configuration required.

Message sanitisation

Before any message is passed to a Say element or encoded into an answer URL, the platform strips markdown, bold markers, URLs, HTML spans, and other non-speech characters — so the AI never accidentally reads formatting syntax aloud.

How it works: Sanitisation runs on every voice message before TTS delivery — the contact only hears clean, natural speech.

Idempotent by CallSid

Every voice call is identified by its CallSid. If a gather webhook delivers a CallSid that already exists in the message table, the pipeline exits without creating a duplicate record — the same idempotency guarantee as SMS MessageSid.

How it works: Duplicate call handling checked before processing — a recovered worker cannot process the same call twice.

Want to add voice to your
outbound campaigns?

We'll show you how the voice channel works alongside SMS in a single campaign.