If your AI voice agent places outbound calls in the US, the law treats its voice as an artificial voice, and the call needs the called party's prior express consent. That makes the most important part of an outbound voice agent the code that runs before it dials. This article explains the rule in plain terms and sketches the gate we would build in front of any agent that calls leads.

This is engineering practice, not legal advice. The rules distinguish kinds of calls and kinds of consent, and your counsel decides which ones apply to you. The job of the code is to make whatever they decide impossible to skip.

The FCC settled what an AI voice is

In February 2024 the Federal Communications Commission issued a declaratory ruling, FCC 24-17, on AI and the Telephone Consumer Protection Act (TCPA). Its core sentence:

"In this Declaratory Ruling, we confirm that the TCPA’s restrictions on the use of “artificial or prerecorded voice” encompass current AI technologies that generate human voices."

The ruling spells out the consequence: such calls "require the prior express consent of the called party to initiate such calls absent an emergency purpose or exemption." It also points to the rules that already apply to every artificial voice message: identification and disclosure of who is calling, and, where the call is telemarketing, an opt-out the called person can use during the call. It closes by saying these requirements "are applicable to any AI technology that initiates any outbound telephone call using an artificial or prerecorded voice to consumers."

Two details matter for builders. The ruling clarifies existing rules rather than creating new ones, so nothing here is waiting on a future deadline. And it is about calls your system initiates. An agent that answers inbound calls is a different situation; check it with your counsel separately.

Three rules a voice agent has to obey

Read as a spec, the FCC's rules (47 CFR 64.1200) give an outbound voice agent three requirements.

  1. Consent before the dial. No call goes out unless there is a consent record for that number that covers this kind of call.
  2. Identify the caller at the start. The rule reads: "At the beginning of the message, state clearly the identity of the business, individual, or other entity that is responsible for initiating the call." The same section requires a call-back telephone number to be stated during or after the message.
  3. Honour an opt-out on the spot. For telemarketing calls the opt-out mechanism "must automatically record the called person's number to the seller's do-not-call list and immediately terminate the call."

None of these depend on how good the model is. They are properties of the system around the model, which is why they belong in code you can test, not in the prompt.

The gate, in code

New leads usually arrive through the CRM. In Follow Up Boss, for example, a peopleCreated webhook fires, and its guide says: "The endpoint that handles events should do an HTTP GET to the resource URI specified in the event." That GET is where the gate starts. Here is a sketch of how we would write it in TypeScript:

type Consent = { phone: string; scope: string; source: string;
  capturedAt: Date };

type Decision =
  | { dial: true; opening: string }
  | { dial: false; reason: string };

async function beforeDial(lead: Lead, purpose: string):
  Promise<Decision> {
  const phone = normalise(lead.phone);
  if (await doNotCall.has(phone))
    return { dial: false, reason: "on do-not-call list" };
  const consent = await consents.find(phone, purpose);
  if (!consent)
    return { dial: false, reason: `no consent for ${purpose}` };
  await audit.log({ phone, purpose, consentId: consent.source });
  return { dial: true, opening:
    `Hi, this is an AI assistant calling for ${BUSINESS_NAME}.` };
}

What to notice: the agent never decides whether to call. beforeDial returns either a refusal with a reason or the exact opening line, so the identification is fixed text rather than something the model may paraphrase. The consent lookup is keyed by purpose as well as phone, because consent to be called about one enquiry may not cover every later campaign. Every dial writes an audit line that names the consent record it relied on, which is the first thing anyone will ask for if a call is ever disputed.

The opt-out is the second half. Treat "stop calling me" as a tool the agent can call, not a sentence it should reply to:

const tools = {
  optOut: async (call: Call) => {
    await doNotCall.add(call.phone);
    await crm.tagPerson(call.personId, "Do not call");
    await call.hangUp();
  },
};

The model's only job is to recognise the request. Recording the number, tagging the contact in the CRM so human agents see it too, and ending the call happen in code, in that order, every time.

Where this costs you

A gate refuses calls, so your connect rate on paper goes down. Leads from old forms with vague consent language will sit in a review queue instead of being called at 9pm. That is the point, but someone has to own the queue, or it quietly becomes a list of leads nobody follows up.

Consent capture also moves upstream. The gate is only as good as the record behind it, so the web form, the lead source integration and the CRM field mapping all need to store what was agreed, when and where. On most projects that is more work than the gate itself.

Finally, this is the US federal picture. States add their own calling rules and quiet hours, and other countries have their own laws. A gate keyed by purpose and jurisdiction is easier to extend than one written around a single yes or no.

What to remember

  • Under the FCC's 2024 ruling, an AI-generated voice is an artificial voice, so outbound calls need prior express consent unless an exemption applies.
  • Put consent, identification and opt-out in code that runs around the model, and test it like billing code.
  • Log which consent record each call relied on.
  • Start consent capture at the form, not at the dialer.

We build voice agents, including On Call, our AI inside sales agent for real-estate teams. If you are planning one, book a conversation and we will help you scope the first version with the gate in place.

Sources