SwooshConnect

Agent: Voice Agent

Feeds your consented leads to your AI caller and collects the results of finished calls.

Made by SwooshConnectBeta
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

text
*/5 * * * *

Settings

SettingLabel in the portalVisibility
VOICE_CAMPAIGN_IDThe AI campaign to feed (create it in Dialer, mode: AI caller)Visible, chosen from your campaigns

Tables it creates

text
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 it

Filling 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.