Real Estate Speed-to-Lead AI: TCPA Checks Before You Dial

On this page
Search for real estate AI calls TCPA guidance and you mostly find vendor pages promising compliance. This post is for the product and engineering team behind the dialer. You run a real estate CRM or lead-gen platform. Your AI agent calls new web leads within minutes and runs nurture calls for hundreds of agents. Here are the checks your software must enforce before it dials and during the call. You also get the data behind each check, a Python dial gate, an opt-out test set and exposure math.
Rules verified October 16, 2026. Sources: the FCC's AI voice declaratory ruling, 47 CFR 64.1200 and the FTC's Telemarketing Sales Rule. This is engineering guidance, not legal advice. Have counsel review your consent language and state coverage.
For the whole lead flow, start with our AI for real estate leads testing playbook. General outbound checks live in outbound voice agent testing. This post covers only the TCPA layer.
Why speed-to-lead AI is a TCPA problem first
Speed to lead is the whole pitch. A buyer fills a listing form at 9:14 p.m. and your agent calls at 9:16 p.m. That is why teams buy speed to lead real estate AI.
The law does not care how fast you were. TCPA real estate claims turn on three facts instead. Did you have consent? Was the number on a list? What time was it where the person lives?
In February 2024 the FCC settled the AI question with Declaratory Ruling FCC 24-17. It was released February 8, 2024. The TCPA's "artificial or prerecorded voice" limits now "encompass current AI technologies that resemble human voices." Voice cloning is covered too. The FCC also noted that a live agent in the loop "does not negate the clear statutory prohibition."
So AI voice calls need consent, in two tiers.
Prior express consent: the called party agreed to be called at that number. It covers informational AI calls to wireless numbers, such as an appointment confirmation.
Prior express written consent: a signed agreement that "clearly authorizes the seller" to make artificial-voice telemarketing calls. It names the phone number and says consent is not a condition of purchase. E-signatures count (47 CFR 64.1200(f)(9)).
A speed-to-lead call that offers a showing, a valuation or an agent's services is telemarketing. Plan for written consent on every one.
Courts also stopped deferring. In June 2025, McLaughlin Chiropractic v. McKesson held that district courts need not follow the FCC's reading of the TCPA (Faegre Drinker). Build to the strict reading.
What the rules require, as of October 2026
The real estate AI calls TCPA picture has eight moving parts. The status column is the part that keeps changing.
| Rule | What it requires | Source | Status, Oct 2026 |
|---|---|---|---|
| AI voice is artificial voice | Consent before AI calls; written consent for telemarketing | FCC 24-17 | In force since Feb 2024 |
| One-to-one consent | Consent limited to one identified seller per form | FCC 2023 order | Vacated Jan 24, 2025; FCC later removed it |
| National DNC | No telephone solicitations to registered numbers; use data no more than 31 days old | 64.1200(c)(2), 310.4(b)(3)(iv) | In force |
| Internal DNC | Honor requests within 10 business days; keep them 5 years | 64.1200(d)(3) | In force |
| Revocation of consent | Any reasonable method; honor within 10 business days | 64.1200(a)(10) | In force; "revoke all" amended Sept 2026 |
| Calling hours | 8 a.m. to 9 p.m. at the called party's location | 64.1200(c)(1), 310.4(c) | In force |
| Identification | Name the entity at the start; callback number; opt-out mechanism | 64.1200(b), (d)(4) | In force |
| Reassigned numbers | Safe harbor if you query the FCC database and it errs | 64.1200(m) | In force |
Two rows need more detail.
One-to-one consent is gone, but "the seller" is not. The FCC adopted the one-to-one rule in December 2023. The Eleventh Circuit vacated it on January 24, 2025, in Insurance Marketing Coalition v. FCC, minutes after the FCC postponed it (Steptoe). The court held the FCC exceeded its authority. The FCC then formally deleted the rule text in 2025. But written consent must still authorize "the seller" by definition. A portal form that says "you agree to hear from our partner agents" is a weak record for the agent who calls. Store the named seller.
Revocation rules moved twice this year. The 10-business-day limit has applied since April 11, 2025. The "revoke all" part was waived until January 31, 2027 (Kelley Drye on DA 26-12). Revoke all means one opt-out stops all robocalls from that caller. Then on September 30, 2026, the FCC adopted FCC 26-67. For informational calls, an opt-out may now apply only to that category. For telemarketing, one opt-out still revokes consent to all future telemarketing from that caller (Squire Patton Boggs). The order takes effect 30 days after Federal Register publication. That had not happened as of mid-October 2026. For a speed-to-lead dialer, the safe design is simple: one opt-out blocks every marketing call for that seller.
State mini-TCPA laws that tighten the window
Federal law is the floor. Several states go further, and they presume location from the area code.
- Florida. Fla. Stat. 501.616(6) bars solicitation calls before 8 a.m. or after 8 p.m. in the called person's time zone. It caps calls at three per 24 hours on the same subject, "regardless of the phone number used" too. The Florida Telephone Solicitation Act, 501.059, requires written consent for automated or recorded sales calls. It presumes a call to a Florida area code reached a Florida resident. Licensed real estate agents are exempt from most of Florida's telemarketing act, but 501.604 keeps the hours and cap in 501.616(6) for everyone.
- Oklahoma. The Oklahoma Telephone Solicitation Act took effect November 1, 2022. It sets an 8 a.m. to 8 p.m. window and three calls per 24 hours, with $500 per violation (Manatt).
- Maryland. The Stop the Spam Calls Act took effect January 1, 2024. Same window, same three-call cap, and a private right of action (Kelley Drye).
Real estate cold calling rules also vary by recording law. California Penal Code 632 bars recording a confidential call "without the consent of all parties" (Justia). If your agent records every call for QA, disclose recording at the top of the call in every state. That is cheaper than routing by state.
The consent record your software must store
Most TCPA defense comes down to one question: can you produce the consent? Treat it as a data model, not a checkbox. Store these fields per lead, per seller:
| Field | Why it exists |
|---|---|
| `seller_id` | Written consent must authorize the seller who calls |
| `scope` | AI voice, telemarketing, SMS; each listed in the consent text |
| `consent_text_version` | The exact disclosure the person saw |
| `captured_at`, `source_url`, `ip`, `form_id` | Proof of when and where |
| `phone_as_entered` | The number the person typed, unmodified |
| `signed_written` | True only for an e-signed written agreement |
| `opt_out_events[]` | Every revocation, any channel, with timestamp |
| `rnd_checked_at`, `rnd_result` | Reassigned Numbers Database proof |
One common shortcut fails here. An established business relationship (EBR) includes an inquiry made in the three months before the call. An EBR takes a call outside the "telephone solicitation" definition, which matters for DNC. It does not appear in the written-consent rule for artificial-voice telemarketing. A web inquiry may let a human agent call a DNC-listed number. It does not authorize the AI voice to make a marketing call. Do not let the EBR flag open the AI dial path.
This is also where do not call real estate disputes start. It is the core of real estate AI calls TCPA risk in a CRM. Agents import old sphere lists and expired listings into the CRM. Those rows have no consent record. Your gate should treat them as "human dialing only," never AI.
The pre-dial gate checklist
Run eight checks, in order, on every dial, not once per lead. Opt-outs, DNC data and the clock change between calls.

| # | Check | Rule | Data source | Fail action |
|---|---|---|---|---|
| 1 | Consent record exists | 64.1200(a)(2), (a)(3) | Form capture log | Block |
| 2 | Seller and AI voice in scope | 64.1200(f)(9) | Consent text version, `seller_id` | Block |
| 3 | No opt-out since consent | 64.1200(a)(10) | Opt-out events, all channels | Block |
| 4 | Not on internal DNC | 64.1200(d) | Suppression list, 5-year retention | Block |
| 5 | National DNC clear, or signed consent | 64.1200(c)(2), 310.4(b)(3)(iv) | Registry download no more than 31 days old | Block (stale data: hold) |
| 6 | Number not reassigned | 64.1200(m) | FCC Reassigned Numbers Database | Hold, then block on "yes" |
| 7 | Inside local calling window | 64.1200(c)(1), state laws | Lead's address time zone | Hold until window opens |
| 8 | Under state call cap | Fla. 501.616(6), OK, MD | Call log, last 24 hours | Hold |
Check 5 runs against your latest National Do Not Call Registry download. Order matters for cost. Checks 1 to 4 are local lookups. Check 6 costs a database query, so run it only when the earlier checks pass.
The Reassigned Numbers Database takes a number plus the date you got consent. It answers yes (disconnected since then), no, or no data. Carriers must hold a disconnected number at least 45 days before reassigning it. A call minutes after the form needs no query. A nurture call 60 days later does.
The registry costs money too. From October 1, 2026, the FTC charges $85 per area code after five free ones. The annual cap is $23,425 per entity (FTC).
Python: validate a dial queue before the AI calls
This is a simplified gate. It assumes consent, DNC and RND data are already joined onto each lead. It returns DIAL, HOLD or BLOCK with a reason. Log that reason with the call ID. That log is your evidence later.
from datetime import datetime, timedelta, timezone
from zoneinfo import ZoneInfo
STATE_RULES = { # stricter state windows and caps (verify before use)
"FL": {"start": 8, "end": 20, "max_24h": 3},
"OK": {"start": 8, "end": 20, "max_24h": 3},
"MD": {"start": 8, "end": 20, "max_24h": 3},
}
FEDERAL = {"start": 8, "end": 21, "max_24h": None}
DNC_MAX_AGE = timedelta(days=31)
RND_MAX_AGE = timedelta(days=30) # internal policy, not a legal number
def window(state):
return STATE_RULES.get(state, FEDERAL)
def check(lead, client_id, now, dnc_snapshot_at):
c = lead.get("consent")
if not c:
return "BLOCK", "no consent record"
if c["seller_id"] != client_id or "ai_voice" not in c["scope"]:
return "BLOCK", "consent not in scope for this seller or AI voice"
if any(t >= c["captured_at"] for t in lead["opt_outs"]):
return "BLOCK", "opt-out on file after consent"
if lead["internal_dnc"]:
return "BLOCK", "internal do-not-call list"
if now - dnc_snapshot_at > DNC_MAX_AGE:
return "HOLD", "national DNC snapshot older than 31 days"
if lead["on_national_dnc"] and not c["signed_written"]:
return "BLOCK", "on national DNC without signed written consent"
last_rnd = lead.get("rnd_checked_at")
if now - c["captured_at"] > RND_MAX_AGE and (not last_rnd or now - last_rnd > RND_MAX_AGE):
return "HOLD", "query Reassigned Numbers Database first"
if lead.get("rnd_result") == "yes":
return "BLOCK", "number disconnected since consent"
zones = lead["candidate_tzs"] or ["America/New_York", "Pacific/Honolulu"]
rule = window(lead["state"])
for tz in zones: # every plausible zone must be inside the window
hour = now.astimezone(ZoneInfo(tz)).hour
if not rule["start"] <= hour < rule["end"]:
return "HOLD", f"outside {rule['start']}:00-{rule['end']}:00 in {tz}"
if rule["max_24h"]:
recent = [t for t in lead["calls"] if now - t < timedelta(hours=24)]
if len(recent) >= rule["max_24h"]:
return "HOLD", f"{rule['max_24h']}-call/24h state cap reached"
return "DIAL", "all gates passed"We ran it on seven sample leads at 00:30 UTC on October 17, 2026, which is 8:30 p.m. Eastern:
+14155550101 DIAL all gates passed
+18505550102 HOLD outside 8:00-20:00 in America/New_York
+12125550103 BLOCK consent not in scope for this seller or AI voice
+13035550104 BLOCK opt-out on file after consent
+14055550105 HOLD outside 8:00-20:00 in America/New_York
+12105550106 DIAL all gates passed
+13015550107 HOLD query Reassigned Numbers Database firstThree design choices are worth copying.
1. Unknown time zone means strictest zone. The Oklahoma lead had no location. The gate tested Eastern through Hawaii and held the call. Florida's 850 area code spans Central and Eastern time, so that lead carries two candidate zones. It must clear both.
2. A National DNC hit is fine only with signed written consent. The California lead is on the registry but signed. It dials.
3. The first call skips the RND query. Consent was three minutes old. The Maryland nurture lead, 45 days old with no query on file, is held.
For production, count Florida's cap across all your numbers, not per caller ID. Keep the rule table in config so counsel can change it without a deploy.
Calling windows and the time zone trap
The federal window is 8 a.m. to 9 p.m. at "the called party's location" in local time. That means the person's location, not the number's. Mobile numbers move with people. A buyer relocating from Miami to Los Angeles keeps a 305 number.

A dialer that reads time zone from the area code calls at 10:30 a.m. Eastern. It is 7:30 a.m. in Los Angeles.
There is a second twist. Florida law presumes a 305 number belongs to a Florida resident. So that lead may carry Florida's 8 p.m. cutoff and three-call cap while living in Pacific time. The safe rule: apply the stricter state rule from the area code and the local window from the actual location. The intersection is your window.
Get the actual location from the lead: the property searched, a "moving from" field, or the call itself. If ASR hears "Pasadena" as "Pensacola," that write-back is wrong. That speech error has a compliance cost.
In-call checks the AI agent must pass
The gate decides whether to dial. The agent's script and runtime decide what happens once the line connects.
Identify at the start. An artificial-voice message must "state clearly the identity of the business" at the beginning (64.1200(b)(1)). Telemarketing calls also give the caller's name, the entity, and a phone number or address (64.1200(d)(4)). The TSR adds prompt disclosure that the call is a sales call and what is being sold (310.4(d)).
Offer an automated opt-out fast. Artificial-voice telemarketing must offer an opt-out within two seconds of the identification, under 64.1200(b)(3). Using it must record the number on the do-not-call list and end the call. An AI agent can satisfy this with a spoken or key-press opt-out. Test that it is offered on every call, including after the caller interrupts the greeting.
Disclose call recording. If you record, say so before the conversation starts.
Honor "stop" in any words. A caller may revoke consent by "any reasonable method" under 64.1200(a)(10). For texts, keywords like "stop" and "unsubscribe" are reasonable per se. On a voice call, plain speech counts, in phrasings no keyword list contains.
Treat "wrong number" as a consent event. It means the consent belonged to someone else. Block the number for that seller and flag the lead record.
For disclosure tests across regulated industries, see our policy and guardrail test cases.
What a speech error corrupts downstream
The voice call is the front door to a workflow. Capture, then a system action, then confirmation, then write-back. In TCPA terms, five speech errors corrupt the record silently.
1. A missed opt-out. The caller says "stop calling me." ASR hears "take me off your lease." The intent model routes it to a rental question. No suppression row is written. Day 3, day 7 and day 14 nurture calls all go out.
2. Opt-out heard but not written back. The agent says "I'll remove you." The tool call times out. The CRM never gets the flag. The caller heard a promise. Your database did not.
3. Consent source not logged. The agent books a showing from an imported sphere contact. The booking writes a "lead" row with no consent record. The next nurture campaign picks it up.
4. Wrong time zone written back. The caller says where they live. ASR mangles the city. Future calls follow the wrong clock.
5. "Wrong number" heard as "not now." The agent schedules a callback to a stranger.

Accent and dialect make this worse. A 2020 PNAS study tested five commercial ASR systems on 19.8 hours of interviews. It found an average word error rate of 0.35 for Black speakers versus 0.19 for white speakers. An opt-out detector that reads only transcripts will miss more for some caller groups. Our word error rate guide explains how to measure that split.
The opt-out detection test set
Build this set once. Run it on every prompt, model or ASR change. Each phrasing is a separate test call, played as audio, not typed text.
| Group | Example phrasings | Expected action |
|---|---|---|
| Direct | "Stop calling me." "Take me off your list." "Put me on your do-not-call list." | Opt-out, confirm, end call |
| Indirect | "I already bought a house, lose my number." "Don't call this number again." "Who gave you my number? No more calls." | Opt-out |
| Keyword | "Unsubscribe." "Opt out." "Cancel." | Opt-out |
| Mid-pitch barge-in | Caller says "stop" over the agent's second sentence | Opt-out within the same turn |
| Wrong number | "There's no Maria here." "Wrong number." | Block number for this seller |
| Spanish | "Ya no me llamen." "Quítenme de su lista." "No me vuelvan a llamar." | Opt-out |
| Ambiguous | "Stop. Actually, what's the price?" | Confirm before continuing; log both |
| Negative controls | "Can we stop by the open house?" "Don't stop, keep going." | Continue; no opt-out |
Run each phrasing under four conditions at minimum. Use clean audio, street noise, a car speakerphone and a strong accent. Our STT background noise testing guide covers how to set noise levels.
Use these pass rules:
- Opt-out recall: 100% on direct and keyword phrasings; zero misses allowed.
- Write-back: every detected opt-out produces a suppression row within the call, verified by querying the list, not the transcript.
- False positives: under 5% on negative controls. A false opt-out costs a lead, not a lawsuit, so tilt toward caution.
- Runs: at least three runs per phrasing per condition. Speech pipelines are not deterministic.
Teams skip this because it means hundreds of calls per release. Evalgent generates these scenarios from the agent's prompt and flows. It calls the agent over PSTN, SIP or WebRTC. Caller profiles set accent, pace, interruptions and background noise, and Spanish is supported. It judges from the audio, not only the transcript. A "lease" mishearing shows up as a failure with evidence.
Worked math: what one gap costs
Statutory damages make small error rates expensive. The TCPA gives $500 per violating call under 47 U.S.C. 227(b)(3), up to triple if willful or knowing. DNC claims under 227(c)(5) allow "up to $500" and require "more than one telephone call within any 12-month period."
Formula: exposure = affected leads × calls per lead × $500 (× up to 3 if willful)
All inputs below are illustrative assumptions, not data from any platform. Picture a CRM serving 150 brokerages with 30,000 new web leads a month. Each lead gets one speed-to-lead call plus five nurture calls in 30 days.
| Scenario | Affected leads | Calls each | Calls | At $500 | At $1,500 |
|---|---|---|---|---|---|
| Consent form version missing AI-voice language, 2% of leads for one month | 600 | 6 | 3,600 | $1,800,000 | $5,400,000 |
| Opt-out detector misses 4% of 900 monthly opt-outs | 36 | 4 more | 144 | $72,000 | $216,000 |
| Area-code time zone wrong for 1% of leads, 10% of their calls early | 300 | 0.6 | 180 | up to $90,000 | up to $270,000 |
The consent row dominates because it multiplies by every call. One bad form deploy beats a year of missed opt-outs. That is why check 2 compares the consent text version, not just a "consented" boolean.
Real estate AI calls TCPA exposure is not hypothetical. In April 2024, NAR reported a class action against a large brokerage over an agent's calls. The brokerage denied wrongdoing. In February 2026, a class action alleged a mortgage lender made "synthetic or prerecorded voice" calls without written consent. Both are allegations, not findings.
How to test TCPA controls on an AI dialer before each release
Run this real estate AI calls TCPA test suite for every prompt, model, ASR or form change. It pairs with our go-live checklist for each new customer's phone agent.
1. Snapshot the rules config. Version the state table, windows and caps. A test run records which version it used.
2. Run the gate on a synthetic queue. Hit every BLOCK and HOLD reason at least once. Include stale DNC data, an RND yes, split-zone area codes and a fourth Florida call in 24 hours. Assert the exact reason string.
3. Diff consent text versions. Any new form version must list the seller and the AI voice scope. Fail the build if a form ships without a version ID.
4. Run the opt-out test set as audio. All phrasing groups, four conditions, three runs each. Check suppression rows, not transcripts.
5. Test the in-call disclosures. Confirm identity in the first turn, the opt-out offer and the recording notice. Repeat with the caller barging in on the greeting.
6. Test write-back failure. Force the CRM tool call to time out after an opt-out. The agent must retry or queue the suppression and must not keep pitching.
7. Replay production calls. Pull a weekly sample of real calls with an opt-out or "wrong number" in the audio. Confirm each produced a suppression row within 10 business days, ideally within the call.
Step 7 is ongoing monitoring, not a release gate. Evalgent's production monitoring takes pushed call recordings, transcribes them and maps them to scenarios. It flags policy failures and tool-call failures with fix recommendations. A missed opt-out is often both. See how to monitor voice agents in production and our voice agent compliance audit guide. Qualification errors are covered in is your real estate AI mis-qualifying buyers and sellers.
Frequently asked questions
Do AI voice calls to real estate leads need written consent?
AI voice calls to real estate leads need prior express written consent when they market a service. Booking a showing or offering a valuation counts. The FCC treats AI voices as artificial voices. Written consent must be signed, electronic signatures included, name the phone number and authorize the seller. Purely informational calls need prior express consent.
Is an AI voice an artificial voice under the TCPA?
An AI-generated voice is an artificial voice under the TCPA. The FCC's February 2024 ruling, FCC 24-17, says the limits cover "current AI technologies that resemble human voices." Voice cloning is included. A human monitoring the call does not change that. Every consent, identification and opt-out rule for artificial-voice calls applies.
Is the one-to-one consent rule still in effect?
The FCC's one-to-one consent rule is not in effect. The Eleventh Circuit vacated it on January 24, 2025, in Insurance Marketing Coalition v. FCC, and the FCC later removed it. Written consent must still clearly authorize the seller who calls. A form naming only "partners" gives a weak consent record.
How often do you have to scrub the Do Not Call list?
National Do Not Call Registry data must be no more than 31 days old on the day of each call. That keeps the safe harbor. That rule sits in 16 CFR 310.4(b)(3)(iv) and 47 CFR 64.1200(c)(2). Most dialers refresh weekly or daily. Internal DNC requests must be honored within 10 business days and kept five years.
How fast must you honor a stop calling request?
A stop calling request must be honored within ten business days at most. See 47 CFR 64.1200(a)(10) and (d)(3). Software should do it within the call. As of October 2026, an FCC proposal asks whether to shorten the deadline. For telemarketing, one opt-out revokes consent for all future marketing calls from that seller.
What hours can you call real estate leads?
Federal rules allow solicitation calls from 8 a.m. to 9 p.m. in the called person's local time. Florida, Oklahoma and Maryland end at 8 p.m. and cap calls at three per 24 hours. Use the lead's actual location for the clock, and apply the stricter state rule when the area code points elsewhere.
How much is a TCPA violation per call?
A TCPA violation for an unconsented artificial-voice call carries $500 in statutory damages per call under 47 U.S.C. 227(b)(3). Courts may triple that to $1,500 for willful or knowing violations. Do Not Call claims allow up to $500 per call and need more than one call in 12 months. Class actions multiply these numbers.
Does the Reassigned Numbers Database protect AI callers?
The FCC's Reassigned Numbers Database gives a safe harbor only if you query it and it wrongly answers no. Calling without querying gives no protection. A speed-to-lead call minutes after the form rarely needs a query. Nurture calls weeks later should query first, and a "yes" should block the call.
The bottom line
Speed to lead only pays when every AI dial passes consent, DNC, reassigned-number, clock and cap checks first. The costliest failures are silent, like a misheard "stop" that repeats on every call until you test for it.
Related Articles

How to automate voice agent testing: synthetic callers vs manual QA
Learn how ai test automation replaces manual QA for voice agents. Compare synthetic callers vs human testers, with a 5-step framework to scale without hiring.
Read more
AI Agent Testing vs Voice Agent Testing: What General Tools Miss for Voice
AI agent testing measures text outputs. Voice agent testing measures behaviour through an acoustic pipeline. Five failure categories general tools miss.
Read more