How to Run a Lead Reactivation Campaign With AI Calls: List, Cadence and Stop Rules


A lead reactivation campaign calls people who already know you, such as leads who went quiet and customers who stopped buying, on a fixed cadence with clear rules for when to stop, so an old list turns into booked conversations without anyone being called too often or by two people at once.
A list of thousands is too big for reps to dial by hand and too valuable to burn in one afternoon. The hard part is not the call script but the design around it: who goes on the list, how many attempts each person gets, what stops the calls, and who owns the lead at any moment.
People who gave you their number and some sign of interest, then went quiet. Good candidates:
Set a dormant window with two edges: recent enough that they remember you, old enough that no rep is still working them. Start with the most recent group, then work further back.
Export only what the agent needs, one row per person:
| Column | Why the agent needs it |
|---|---|
| Phone number (E.164) | The only required field for a batch call |
| First name | Opens the call personally |
| Last contact date | "We last spoke in March" proves this is not a cold call |
| What they asked about | Lets the agent say what has changed since |
| Reason lost, if known | Lets the agent ask whether that reason still applies |
| CRM record ID | Passed as metadata so results write back to the right record |
In a Retell batch call, every column other than the phone number and a few reserved fields becomes a dynamic variable the agent can use, such as {{last_contact_date}}.
Before the list goes anywhere, confirm what consent each group carries. The FCC has confirmed that AI-generated voices count as "artificial" voices under the TCPA, so these calls generally need the called party's prior express consent, and the FCC's rules set a higher bar, prior express written consent, for telemarketing calls to mobile numbers that use one. A past purchase does not settle that question on its own. Check each list with your counsel; the TCPA guide for outbound AI calls covers what to ask. This is not legal advice.
Filter twice: once with data before calling, then with the calls themselves.
Before calling, remove duplicates by phone number, numbers marked do-not-call, anyone booked or in an open deal, anyone a rep owns, and anyone without the consent the call needs.
The calls do the second pass. Define a selector field in post-call analysis, for example reactivation_outcome with the values interested, not now, not a fit, wrong person and do not call. Every connected call is transcribed and tagged, so the list that goes back to reps holds only the people worth a conversation. Each batch reports calls sent, picked up and successful, and you can filter call history by batch to compare one list against another.
One call a day plus a text after each missed call, for a short run, then a pause. A common starting pattern:
| When | What happens | Only if |
|---|---|---|
| Day 1 | AI call | Not booked, not owned by a rep, not do-not-call |
| Day 1, after the call | Text: "Sorry we missed you, we'll try again tomorrow" | Call unanswered or reached voicemail, and the person agreed to texts |
| Each business day after that | Same call and text | Still unreached and still eligible |
| End of the run you set | Stop and mark "paused" | Never reached |
| Several weeks later | One more short run | Still paused, still eligible |
Retell has no automatic redial, so plan who places each attempt. Two documented patterns work:
last_conversation_timestamp is too recent. Every outbound call counts as a conversation, including unanswered ones, so this cooldown covers dial attempts too.Vary voicemail by attempt. A batch CSV can set override agent id per row, so early attempts can use an agent that hangs up on voicemail and the last attempt can use one that leaves a short message. Spread attempts out, because carriers can mark a number as spam when it makes many short calls in a short period. Verified numbers and branded caller ID help people recognize who is calling. Keep calling hours inside the law too: federal rules bar telephone solicitations before 8 a.m. or after 9 p.m. at the called person's location, and state rules can add their own limits, so check them with counsel.
Trigger it from the call result. Two options:
dial_no_answer or voicemail_reached. The model writes the text, so give it a short, fixed instruction, because an unanswered call has no conversation to draw on. Place a test call that goes unanswered to confirm it fires.call_ended and call_analyzed webhooks. On those, call the Create Outbound SMS API.Send from your own number with SMS enabled. That requires A2P 10DLC registration on a US number and consent to receive texts. Retell's shared SMS-approved numbers only send a preset template during a live call, so they do not cover this step. When someone replies STOP, Retell marks the contact do-not-call.
Write the stop rules before the first batch:
| Outcome | Rule |
|---|---|
| Booked a meeting | Stop. Exclude from every batch for a cooldown window you set |
| Asked not to be called | Stop for good. With do-not-contact handling on, the agent confirms once, ends the call and flags the contact |
| Not a fit or wrong number | Stop and record why |
| Interested but not now | Stop this run. Set a follow-up date in the CRM |
| Run ended with no answer | Pause, then decide on one more run |
One trap: the do-not-call flag only blocks calls where something checks it. Create Phone Call checks it when you pass honor_internal_dnc: true. Batch calls do not check it, so filter flagged contacts out of every export. Federal rules also require honoring a request to stop, made by any reasonable means, within 10 business days, so make sure opt-outs from email, text and calls all reach the same suppression list.
Give every lead one owner at a time, recorded in a CRM field. For example, a reactivation_owner field with the values ai, rep and none:
Post-call functions keep the field current. They run after each call and can update the contact or create a task in HubSpot, Salesforce, Microsoft Dynamics 365, GoHighLevel or Zoho CRM, or add a tag in GoHighLevel, each gated on the outcome. One caution: pre-call functions run before an outbound call dials, but they load context rather than decide whether the call happens, so the lock check belongs in the export or your scheduler, not in the agent. The CRM-to-voice AI workflow covers the writeback in detail. If a person calls back, contact memory gives the agent a short brief of earlier conversations, so it knows what was agreed.
Each channel does its own job, and all of them read the same status field. In Retell, the agent handles calls, voicemails and texts. Email stays in your marketing or sales engagement tool, and a personal voicemail from a rep stays with the rep. A sample three-week sequence for lapsed customers:
A booking or a stop request in any channel ends the sequence everywhere. The offer is your decision; the agent only says what you write. The win-back campaign template and the lead reactivation campaign template are starting scripts.
Ask who handles it now. On business lists, staff turnover can leave records pointing at someone who has left. Add three extraction fields, new_contact_name, new_contact_phone and new_contact_email, and tell the agent to ask for them politely when the person is gone. Create a new CRM record from the result rather than overwriting the old one, and check consent for the new person before anyone calls them.
Run your most recent dormant group through this design first and read the outcomes before scaling. Retell batch calling runs the calls inside the windows you set, post-call functions write each outcome back to your CRM, and the database reactivation use case shows how teams set it up end to end.
See how much your business could save by switching to AI-powered voice agents.
Total Human Agent Cost
AI Agent Cost
Estimated Savings
A Demo Phone Number From Retell Clinic Office

Start building smarter conversations today.




