AI Outbound Calling: How It Works, What It Costs, What's Legal

Kaushal
Kaushal Subedi

November 2 2026

Guides

AI outbound calling is when a voice agent dials a list of people and holds a real two-way conversation with each one toward a goal you set: call back a lead who asked for a quote, confirm tomorrow's appointment, or ask a customer one follow-up question, then log what happened. On echowin, outbound calls cost $0.20 per minute plus $10 a month for the number the agent calls from (as of November 2026). In the US, the FCC treats AI-generated voices as "artificial" under the TCPA, so you need the person's prior express consent before your agent dials, and prior express written consent if the call is sales or marketing.

Below: how a campaign runs, what it costs, the federal rules in plain words, and the API call to start one. We shipped outbound campaigns in echowin's API and MCP server in October 2026, so the details come from how our own dialer works.

How does AI outbound calling work?

An outbound campaign has four parts:

  1. An agent. The same agent you configure for inbound calls: instructions, voice, knowledge base and tools (calendar booking, transfers, SMS, webhooks).
  2. Campaign instructions. What this agent should do on these calls: the goal, what to say first, and what counts as done.
  3. A contact list. Phone numbers, plus each person's name and any custom fields you want the agent to use ("quote_amount", "appointment_time", "last_service").
  4. Calling hours. The days and times the dialer is allowed to call, in one time zone.

When you start the campaign, the dialer works through the list one contact at a time, only inside the calling hours, from the agent's own phone number. Before each call the agent gets the campaign instructions plus that person's name and fields, so it can say "Hi Maria, you asked for a quote on four tires on Saturday" instead of reading a script. After the call you get the call record with its transcript, and the contact's status in the campaign (completed, failed with a reason, or cancelled).

One design choice is worth knowing: echowin has no "dial this number now" endpoint. Every outbound call comes from a campaign contact, because a call placed outside a campaign reaches the person with no goal. Calling one person is a one-person campaign.

What can an outbound voice agent actually do on a call?

Anything your agent can do on an inbound call, aimed at people who are expecting to hear from you:

  • Lead callbacks. Someone fills in your quote form; your workflow adds them to a campaign and the agent calls back with their details in hand.
  • Appointment confirmations. Confirm the time, or book a new one with the calendar tool (Google Calendar, Outlook, Square or Wix) when they can't make it. The calendar tools book appointments but don't cancel them, so send the change to your own system by webhook to clear the old slot.
  • Follow-ups customers asked for. "Call me when the part arrives." "Check in after the first service."
  • Short structured check-ins. One or two questions, with the answers saved to the contact and posted to your CRM by webhook.
  • Handing off to a person. The agent can transfer a call when the person wants to talk to someone. On echowin, the transferred part of a call is billed at half rate.

Where it fits badly: cold calls to consumers who never asked to hear from you. That's mostly a legal question, covered below.

How much does AI outbound calling cost?

On echowin, as of November 2026:

ItemPriceNotes
Building and testing the agentFreeBuild, configure and test before you pay anything
Phone number$10/month per numberThe agent calls from its own number
Outbound call minutes$0.20/minuteOn every plan, including monthly minute bundles (their lower rates apply to inbound calls); each call is billed in whole minutes, rounded up
Transferred portion of a callHalf the per-minute rateOnly the part after the transfer

echo.win/pricing is the canonical page and lists the extras (premium voices, SMS).

A worked example. These numbers are illustrative, not a benchmark. Say 300 people asked for a quote this month, 180 of them pick up, and the average call runs 2 minutes 10 seconds. Each call bills as 3 minutes because of the per-call rounding, so that is 540 minutes × $0.20 = $108, plus $10 for the number: $118 for the month. Two things move that number more than anything else: how many people pick up, and how tight the agent's script is. A call that runs 2:10 costs the same as one that runs 3:00, so trimming the opening is worth more than trimming the goodbye.

Developer platforms like Vapi and Retell price differently: a platform fee per minute, with the speech, model and telephony costs added or passed through depending on what you plug in. You get more control over each layer and more invoices. Our side-by-side pages for echowin vs. Vapi and echowin vs. Retell go line by line.

Is AI outbound calling legal?

Yes, when you have consent and follow the calling rules. In the US, the rules come from the Telephone Consumer Protection Act (TCPA) and the FCC's rules at 47 CFR 64.1200. This is a plain summary as of November 2026, not legal advice; talk to a lawyer before you call anyone at scale.

  • An AI voice is an "artificial voice." In its February 2024 Declaratory Ruling (FCC 24-17), the FCC confirmed that AI-generated voices fall under the TCPA's rules for artificial or prerecorded voices. A voice agent call is treated like a robocall for consent purposes, however natural it sounds.
  • Calls to cell phones need prior express consent. Any artificial-voice call to a mobile number needs it, emergencies aside. If the call is telemarketing or includes an advertisement, you need prior express written consent.
  • Telemarketing to home landlines needs written consent too. An artificial-voice call to a residential line that advertises or sells needs prior express written consent.
  • Say who is calling. At the start of the call, state the business's name, and during or after the call give a phone number people can reach you on.
  • Give a way to opt out. For telemarketing calls with an artificial voice, the rules require an automated, interactive opt-out the person can use during the call, and the number goes on your do-not-call list.
  • Honor opt-outs quickly. People can revoke consent by any reasonable method ("stop calling me" counts), and you have to honor it within 10 business days.
  • Telephone solicitations: only between 8 a.m. and 9 p.m. in the called person's local time, and never to numbers on the National Do Not Call Registry unless an exception applies.

State laws can be stricter than the federal rules on hours, frequency and consent. If your list crosses state lines, check each state you call into.

The practical upshot: an outbound voice agent fits callbacks, confirmations and follow-ups with people who gave you their number and asked to hear from you. Cold-calling a purchased consumer list with an AI voice is the use case the 2024 ruling was written to stop.

What echowin handles and what stays on you

echowin's dialer does thisYou still own this
Calls only inside the campaign's calling hours (default 9:00 to 20:00, Monday to Saturday, in the agent's time zone)Collecting consent and keeping the record of it
Skips invalid, duplicate and already-added numbers, and any number marked do-not-callChecking your list against the National Do Not Call Registry and your state's rules
After each outbound call, reads the transcript and marks the contact do-not-call if they asked not to be called again, so later campaigns skip themWriting the opening: who is calling, why, and how to opt out
Refuses to start a campaign that has no time zone for its calling hoursSplitting your list by time zone (see the gotcha below)

The time zone gotcha. A campaign's calling hours apply in one time zone. The federal 8 a.m. to 9 p.m. window is in the called person's local time. If your list covers New York and Los Angeles, a campaign set to Eastern time can call LA at 6 a.m. Split the list into one campaign per time zone.

How to build an outbound calling campaign

  1. Build the agent for free at echo.win and test it on your own number. Give it the tools it needs on these calls (calendar booking, transfer to a person, a webhook to your CRM).
  2. Attach a phone number ($10/month). The agent calls from it, so it's the number people see and call back.
  3. Turn on outbound calling. It's enabled per team by echowin: ask support through echo.win/contactus. Until then, creating or starting a campaign through the API returns a 403 that says so.
  4. Create the campaign in the dashboard (Configuration → Outbound), through the API, or from Claude Code or Cursor through the echowin MCP server. Here is the API call:
POST https://echo.win/api/v1/campaigns
X-API-Key: YOUR_API_KEY
Content-Type: application/json

{
  "agentId": "YOUR_AGENT_ID",
  "name": "Tire quote callbacks: November",
  "instructions": "Say you're calling from Main Street Auto about the tire quote they requested. Confirm the size and the quote amount from their fields, offer to book an install time, and transfer to the shop if they want a person. If they ask not to be called again, apologize and end the call.",
  "timeZone": "America/Denver",
  "callingHours": { "start": "09:00", "end": "18:00", "days": ["mon", "tue", "wed", "thu", "fri"] },
  "contacts": [
    {
      "to": "+13035550142",
      "firstName": "Maria",
      "fields": { "tire_size": "225/65R17", "quote_amount": "$612" }
    }
  ]
}
  1. Add the rest of the list. Send POST /campaigns/{campaignId}/contacts with up to 100 contacts per request, up to 5,000 per campaign. Skipped numbers come back with their index and the reason (invalid_number, duplicate, already_in_campaign or do_not_call). Contacts can only be added while the campaign isn't running: pause it first if it is.
  2. Start it with POST /campaigns/{campaignId}/start. The start fails with a clear error if the agent has no number or the balance can't cover a minute.
  3. Follow it. GET /campaigns/{campaignId} gives the count of contacts in each status (pending, running, completed, rejected, failed, cancelled), and GET /campaigns/{campaignId}/contacts shows each person's status, failure reason and calls. POST /campaigns/{campaignId}/pause stops new dials, and a call already in progress finishes.

From an MCP client, the same steps are the tools create_campaign, add_campaign_contacts, start_campaign, pause_campaign and get_campaign. call_contact calls a single person by creating a one-person campaign and starting it. The two tools that dial are marked destructive, so MCP clients that honor that hint ask before placing a real call.

To wire this into n8n, Make or Zapier, use an HTTP request step: when a form submission or CRM stage change comes in, create a one-contact campaign with the lead's details and start it. Add a post-call workflow to send each call's summary back to your CRM by webhook.

Who this is for, and who it isn't

A good fit: operators who call people who asked to hear from them (quote callbacks, appointment confirmations, service follow-ups) and want to wire those calls into their own CRM and workflows. If you already run an inbound agent on echowin, outbound uses the same agent, tools and billing.

Not a good fit:

  • High-volume sales floors. echowin's dialer calls one contact at a time per campaign. If you need parallel dialing for a team of human reps, a power dialer built for sales teams (Orum, Nooks) fits better.
  • Teams that want to control every layer. If you want to choose and tune your own speech, model and telephony providers, a developer platform like Vapi or Retell gives you more knobs.
  • Cold calling consumers. No platform setting fixes missing consent. If your list is people who never asked to hear from you, start by building a way for them to ask.

FAQ

Does the agent have to say it's an AI?

The federal rules require the call to identify the business at the start. Some states have their own disclosure rules for automated or AI callers. Our advice is to say it plainly in the first sentence of your campaign instructions ("This is the scheduling agent for Main Street Auto").

What happens if nobody answers?

If the call rings out, is busy or is rejected, the contact is marked failed with the carrier's reason and the dialer moves on to the next person. A call that never connects or reports back is marked failed as unreachable after about two and a half minutes. echowin doesn't redial on its own. Filter the contacts list by failed status to see who wasn't reached and why, and add them to a new campaign later if that fits your consent.

There is no answering-machine detection, so a call that voicemail picks up counts as answered: the agent talks to the voicemail and the minutes are billed. Tell the agent in the campaign instructions what to do then (for example, leave one sentence with your callback number and hang up).

Can I start a call from my CRM when a new lead comes in?

Yes. Have your workflow create a campaign with that one contact and start it, either by API or with the MCP call_contact tool. The call still waits for the calling hours, so a lead that comes in at 11 p.m. gets called the next morning.

What happens when someone says "stop calling me"?

The agent should end the call politely (put that in its instructions). After every outbound call, echowin also checks the transcript, and if the person asked not to be called again, their contact is marked do-not-call so later campaigns skip that number.

You can build and test the agent for free before you pay for a number or a minute: start free at echo.win.

Kaushal
Kaushal Subedi
CEO / Co-Founder
I like tech, motorcycles and nature, and a few other things.
Author
Pioneer BlogPioneerBlog
Presented by

We dig into what actually works — practical insights on using AI to grow your business, with zero fluff. Drop your email and we’ll send the good stuff straight to you.

Subscribe to our blog

Pioneer Blog Logo
Get started

Ready to build your
AI agent?

Join thousands of businesses automating their operations with echowin.