Agent: Voice Agent
Feeds your consented leads to your AI caller and collects the results of finished calls.
Could not copy. Use View as Markdown instead.
On this page
What it does
Every 5 minutes it does two things: it feeds your consented leads to your AI campaign, and it pulls back the results of every finished call. It never dials, never sets hours and never talks to your phone provider. AI calls are placed only by SwooshConnect's own runner.
What you need
- A connected phone account, added under Accounts in your portal.
- An AI campaign in Dialer with mode AI caller. Its id goes in VOICE_CAMPAIGN_ID when you deploy. If you have no campaign, the deploy form tells you to create one first.
Schedule
*/5 * * * *Settings
| Setting | Label in the portal | Visibility |
|---|---|---|
| VOICE_CAMPAIGN_ID | The AI campaign to feed (create it in Dialer, mode: AI caller) | Visible, chosen from your campaigns |
Tables it creates
voice_leads leads to call: phone, timezone, consent, consent_source, status
voice_call_results one row per finished call: outcome, summary, transferred, opted_out
voice_agent_state the agent's poll position; you do not need to touch itFilling your leads
Insert rows into voice_leads from a form, a CRM sync or a spreadsheet import. Each row needs:
- phone in E.164 format, for example +15551234567.
- timezone as an IANA zone, for example America/New_York.
- consent set to express or written.
- consent_source saying where the consent came from, such as a signup form.
- consent_text and consent_at are optional, but keep them if you have them.
Leads start as new. The agent sends them in batches, then marks each batch sent, with the campaign's counts of added, duplicate, do-not-call, invalid and consent-rejected contacts noted, or rejected.
Where results land
Each finished call gets one row in voice_call_results with call_id, lead_phone, contact_name, direction, started_at, ended_at, outcome, consent, transferred, opted_out and summary. It reads finished calls through the calls_log tool (GET /api/v1/connect/calls/log). Only your campaign's outbound calls are collected here. Inbound receptionist calls and other campaigns appear in the portal's Voice call log.
How to extend
Every newly finished call also calls the exported onCallFinished(result) function in supabase/functions/run/index.ts. It is empty on purpose. Add your own code there to update your CRM, send an email or book a follow-up. It runs once per finished call, right after the result row is saved.
Safety notes
See Agents for deploying, refreshing and removing.
You pay for what you connect. Nothing else.