Guides
A step-by-step guide to building a multi-channel re-engagement sequence in Thoughtly — combining voice, SMS, and email to reactivate dormant leads sitting untouched in your CRM.
Last updated
Dead leads — contacts sitting in your CRMCRMThe system of record for leads, contacts, deals, and activity. Thoughtly reads from and writes to your CRM continuously. with no activity for 30, 60, or 90-plus days — represent revenue your team already paid to acquire. Most sales and marketing teams write them off. The leads pile up in a "closed-lost" bucket or an untouched list, and the acquisition cost evaporates.
But dormant does not mean dead. Across industries like insurance, mortgage, home services, and education enrollment, teams that run structured re-engagement cadences typically reactivate 8–15 percent of leads previously considered lost. The math is straightforward: these contacts already raised their hand once. Circumstances change — a competing quote fell through, a move got postponed, a semester deadline is approaching again.
This guide walks through building a multi-channel re-engagement sequence in Thoughtly that uses voice, SMS, and email together. Each step references actual Thoughtly product mechanics — Automations, the Agent Builder, Contacts and Attributes, Genius, and native CRM integrations — so you can set this up in a working session, not a quarter-long project.
Before building anything in Thoughtly, identify which leads qualify for re-engagement. This step happens in your CRM.
Create a CRM view, list, or report that filters contacts by last activity date. Common cohort breakdowns:
| Cohort | Last activity | Typical tone | Expected reactivation rate |
|---|---|---|---|
| Warm dormant | 30–59 days | "Checking in — still interested?" | 12–18% |
| Cold dormant | 60–89 days | "Things may have changed since we last spoke." | 8–12% |
| Deep dormant | 90+ days | "It's been a while — is [need] still on your radar?" | 4–8% |
Each cohort gets a different agent prompt and cadence. Do not use the same script for a 30-day lead and a 90-day lead — the context has shifted, and the message should reflect that.
Thoughtly's Conditions step in Automations can enforce these filters automatically, but starting with a clean CRM segment makes the automation simpler and more reliable.
Use Thoughtly's Add Tags to Contact or Add Attributes to Contact steps to stamp each lead with the campaign identifier (for example, reactivation-q2-2026) and cohort label (warm-dormant, cold-dormant, deep-dormant). This makes reporting clean and prevents leads from being re-enrolled in future runs.
Open the Thoughtly Agent Builder and create a new agent specifically for re-engagement. A dedicated agent keeps prompts, outcomes, and analytics separate from your inbound or speed-to-lead agents.
Use a Prompt speak node as the opening. The agent should acknowledge the prior relationship and reference something specific — the product they inquired about, the service area, or the original lead source. Pull this from Metadata passed into the call from the automation.
Example prompt: "Hi [first_name], this is [agent_name] from [company]. You reached out to us about [original_inquiry] a while back. I wanted to check in and see if that's still something you're exploring."
Define Variables in the agent to extract structured data from the conversation:
Set up Prompt-based outcomes on the main speak node to route the conversation:
Go to Agent Settings → Genius and attach your product FAQ knowledge base. When a dormant lead asks "What's changed since I last looked?" or "Do you still offer [specific product]?", the agent pulls from Genius rather than guessing. This is especially important for insurance, financial services, and education enrollment where product details change frequently.
This is where voice, SMS, and email come together. In Thoughtly, go to Automations and create a new automation.
Three trigger options work well for re-engagement:
The automation flows through these steps:
1. Loop — If using Recurring Schedule with a batch of leads, use a Loop step to iterate over the list. Map the loop to your CRM query results or a contact list.
2. Conditions (Filter) — Check that the contact has a valid phone number, is not on your suppression list, and has not already been contacted in this campaign (check the campaign Attribute you set in Step 1).
3. Call Contact — Place the outbound call using your re-engagement agent. Pass Metadata with the lead's original inquiry, cohort label, and any CRM context the agent needs to personalize the conversation.
4. Delay For — Wait for the call to complete and the post-call automation to process. A 2–5 minute delay is typical.
5. Conditions (If/Else) — Check the call outcome. If the call connected and the lead is interested, skip SMS/email — the post-call automation handles routing. If voicemail or no answer, continue to the next channel.
6. Send SMS — For no-answer or voicemail outcomes, send a follow-up text 15–30 minutes after the call attempt. Keep it short: one sentence referencing the missed call, one sentence with a CTA.
7. Delay For — Wait 24–48 hours before the email step. Do not stack all three channels in the same hour.
8. Send Email — If still no response after voice and SMS, send an email. Email works well for longer-form value propositions — a rate update, a new service offering, or a time-sensitive deadline.
"Hi [first_name], we tried reaching you about [original_inquiry]. If you're still interested, reply here or we can set up a quick call. — [company_name]"
Thoughtly's Email Campaigns feature drafts emails per lead rather than using rigid templates. The agent writes contextually based on the lead's history and the campaign prompt you provide. Configure this in Settings → Email Domains and connect the sending address to the automation's Send Email step.
Create a separate automation triggered by On Call Completed, scoped to your re-engagement agent. This automation handles everything that happens after the call ends.
Use an AI → Extract Fields step to pull structured data from the call transcriptTranscriptThe text record of a voice conversation, used for review, training, compliance audit, and search.: interest level, preferred callback time, updated phone/email, and any qualifying details the lead shared.
Use a Conditions → Switch step to route based on the extracted interest level or the agent's disposition variableVariableA named value the voice agent stores during a conversation — caller name, intent, qualifying answers — and uses to drive routing and post-call actions.:
| Outcome | Next action |
|---|---|
| Interested — ready now | Transfer already handled by agent; CRM → move to active pipeline stage; Slack → notify assigned rep |
| Interested — callback later | CRM → update next-activity date; Tag → callback-requested; Schedule follow-up call via Delay Until |
| Not interested | CRM → disposition as "Lost — declined re-engagement"; Remove from future re-engagement campaigns |
| Voicemail / no answer | Handled by the multi-channel sequence (SMS then email follow-up) |
| Invalid number | CRM → flag number as invalid; Skip SMS/email to this number |
Use the native CRM steps — HubSpot Update Contact, Salesforce Update Object, GoHighLevel Update Contact — to push call outcomes, transcripts, and extracted fields back to the lead record. Thoughtly logs the full transcript and AI-generated summary as a call activity on the contact timeline, so reps can see exactly what was discussed without listening to the recording.
For hot leads (interested and ready now), add a Slack → Send Message step to ping the assigned rep or a shared channel. Include the lead name, phone number, interest summary, and a link to the CRM record.
Configure your Recurring Schedule trigger to run only during appropriate business hours in the lead's timezone. For outbound re-engagement, most teams limit calls to 9:00 AM – 6:00 PM local time on weekdays. Thoughtly's time utilities (Get Current Time, Convert Timezone) can enforce this dynamically when leads span multiple timezones.
Before any outbound call or SMS, your automation's Conditions step should verify the contact is not on a suppression list. For regulated industries like insurance and financial services, Thoughtly supports TCPA-compliant workflows: state-specific time-of-day windows, recording-consent disclosures, and internal/external DNC scrubbingDNC scrubbingFiltering outbound dialing lists against federal and internal Do-Not-Call registries. Required for compliant outbound — Thoughtly scrubs every call.. Build these checks into the automation rather than relying on the CRM filter alone — defense in depth.
Thoughtly's SMS channel automatically honors STOP, UNSUBSCRIBE, and HELP keywords. When a lead opts out via text, the system logs the opt-out and suppresses future messages. For voice, if a lead says "don't call me again" during the conversation, use a Rule-based outcome to route to an End node and trigger a disposition update that removes them from the campaign.
Before activating the automation on a production cohort:
A 30-day lead remembers you. A 90-day lead may not. Build separate agents or use Metadata-driven prompt variations so the opening line matches how long it has actually been. Thoughtly's Agent Builder supports this — pass a cohort_label in Metadata and reference it in the Speak node prompt.
Even if it is legal in the lead's state, calling at 8:00 PM on a Saturday signals spam. Configure your schedule trigger conservatively and use timezone-aware logic for geographically distributed lists.
If you do not configure voicemail in Agent Settings, the agent hangs up silently when it detects voicemail. That is a wasted contact attempt. Write a concise voicemail script — company name, reason for calling, callback number — and enable it before launch.
Without Attributes tagging each contact with the campaign ID and cohort label, you cannot measure reactivation rate by cohort, channel, or time period. Use Add Attributes to Contact early in the automation to stamp every lead before the first call.
The re-engagement call is a temperature check, not a full qualification. Keep it to 2–3 minutes. If the lead is interested, transfer to a rep or schedule a longer conversation. If you try to qualify, pitch, and close on a reactivation call, you will lose more leads than you convert.
If a lead replies to SMS saying "just text me," do not call them again. Capture channel preference as a Variable and update the contact's Attributes so future outreach respects it. Thoughtly's multi-channel automation makes this easy — route to the preferred channel based on the stored Attribute.
Track these metrics in Thoughtly Analytics and your CRM to evaluate the re-engagement program:
| Metric | What it measures | Benchmark |
|---|---|---|
| Contact rate | Percentage of leads actually reached (live conversation) | 25–40% for outbound re-engagement |
| Reactivation rate | Percentage of dead leads that re-enter active pipeline | 8–15% overall; higher for warm cohorts |
| Channel contribution | Which channel drove the reactivation (voice, SMS, email) | Voice typically 50–60%, SMS 25–35%, email 10–20% |
| Cost per reactivation | Total automation cost ÷ reactivated leads | Significantly lower than new lead acquisition |
| Time to reactivation | Days from first re-engagement touch to pipeline re-entry | Track by cohort to find optimal timing |
| Disposition distribution | Breakdown of outcomes: interested, callback, declined, invalid | Use to refine cohort criteria and scripts |
Review these weekly for the first month, then monthly. Adjust cohort criteria, agent scripts, and timing based on what the data shows. If 90-day leads convert at less than 3 percent, it may not be worth the effort — reallocate those minutes to the 30- and 60-day cohorts.
It depends on your sales cycle. Insurance and mortgage teams often use 30 days because rates and needs shift quickly. Home services companies with longer buying cycles might wait 60–90 days. Pick a threshold, run re-engagement for a month, and adjust based on reactivation rates by cohort.
Technically, yes — but practically, avoid it unless your industry data supports it. Most B2C re-engagement performs best during weekday business hours (9 AM – 6 PM in the lead's local timezone). SMS can stretch slightly later than voice. Always check state-specific TCPATCPAUS federal law governing telemarketing calls and SMS. Thoughtly enforces consent capture, time-of-day windows, and DNC scrubbing automatically. rules for outbound calling windows.
This is common, especially with younger demographics. If a lead engages via text, continue the conversation there. Thoughtly's SMS agents support two-way conversations — the agent can qualify, answer questions, and book appointments entirely over text. Update the contact's Attribute to prefer SMS for future outreach.
Thoughtly supports internal suppression lists, automatic opt-out handling for SMS (STOP/UNSUBSCRIBE keywords), and state-specific calling windows. For regulated industries, you can add TCPA-compliant recording-consent disclosures directly in the agent's Speak node prompts. Build Conditions steps in your automation to check consent status before every outbound touch.
Use one voice agentVoice agentAn autonomous, conversational interface that interacts with humans over the phone — answering, qualifying, and routing calls without human staffing. per cohort (warm, cold, deep dormant) so the opening prompt and tone match the lead's context. SMS and email are handled by automation steps (Send SMS, Send Email), not separate agents. Thoughtly's Metadata system lets you pass cohort-specific context into a shared agent if you prefer fewer agents with dynamic behavior.
Thoughtly Lead Re-engagement Solution
Thoughtly Automations Documentation
Automation Actions and Steps — Thoughtly Docs
Attributes vs Metadata in Automations — Thoughtly Docs
Agent Builder Overview — Thoughtly Docs
Email Domains Setup — Thoughtly Docs
How to Build a Speed-to-Lead AI Agent with Thoughtly — Thoughtly Blog
How to Use SMS After a Missed Call Without Annoying Prospects — Thoughtly Blog
InsideSales.com / XANT Research: Lead Response Management Study