How to Win Back Lapsed HVAC Customers

Inside every HVAC contractor’s CRM is a database of customers who used the service once, twice, maybe three times, and then went quiet. For an operation running 15 to 20 trucks and fielding 20 or more inbound calls a day, that database can represent hundreds of past relationships with no active follow-up attached. Some of those customers moved. Some found a competitor. But the majority went quiet for the simplest reason: nobody followed up.

That database is not a graveyard. It’s an underworked pipeline. Customers who have already trusted you with their home require less convincing than any cold lead you could buy. The trust is already established. The relationship started. The only thing missing is the next contact.

The problem for most HVAC contractors is that winning back lapsed customers is treated as a campaign, something you do once when business is slow, by manually pulling a list, sorting it, and sending messages one by one. Meanwhile, the job history sits locked in Jobber or Housecall Pro with no automated follow-up attached to it. Every week that passes without outreach costs you the warmest re-engagement window, and that window closes faster than most owners realize.

This article shows a different approach: an automated system that identifies lapsed contacts on a continuous basis and fires a tiered re-engagement sequence based on customer value, without requiring anyone to pull a list or schedule a campaign.

TL;DR

  • The opportunity: Customers who used your service 12 to 24 months ago are warmer than any paid lead. They already know your work. The barrier to rebook is lower.
  • Why manual campaigns don’t scale: List-pulling, sorting, and message-sending is time-intensive and always gets deprioritized when the team is busy, which is exactly when you can least afford to lose the pipeline.
  • The automated alternative: An AI Analyze batch that runs weekly, flags contacts with no activity in 12+ months, classifies them by value, and routes each to a tiered re-engagement sequence, high-value, medium, or low, with appropriate automation.
  • What changes: Lapsed customer re-engagement becomes a background process. High-value contacts get a personalized AI-generated message. Medium-value contacts get a seasonal SMS. Every contact gets at least one outreach without anyone having to remember to send it.
  • Setup time: One batch analysis configuration and three workflow paths, under two hours.
  • Right fit: HVAC contractors handling 20 or more inbound calls per day and running 10 or more trucks get the clearest return from this system.

How Does Automated HVAC Lapsed-Customer Re-Engagement Work?

Automated lapsed-customer re-engagement works by scanning the contact database on a schedule, flagging anyone with no activity in 12 or more months, classifying them by service history and value, and routing each contact into a tiered outreach sequence without manual list-pulling. ServiceAgent’s AI Analyze node runs this as a weekly batch, then fires the appropriate re-engagement path based on each contact’s classification.

Why Do HVAC Customers Go Quiet?

Most lapsed customers aren’t unhappy. Klutch Growth, an HVAC marketing firm that has analyzed thousands of churned customers, found that most HVAC customers stop calling not because of a bad experience but because of one thing: nobody reached out between service visits.

HVAC systems don’t fail on a predictable schedule. Customers don’t think about their equipment until something goes wrong. The businesses that stay top of mind are the ones that reach out at the right moments: before peak season, on the service anniversary, when a relevant maintenance milestone arrives. Businesses that don’t have a contact cadence in place essentially rely on the customer to remember them, and customers have a lot of other things to remember.

The seasonal nature of HVAC makes this worse. A customer who had a summer AC service may not think about their HVAC contractor again until winter. If they haven’t heard from you in six months and their furnace starts making noise, they google “HVAC near me” and start fresh. Your history with them is irrelevant at that point because you’re not in the results, another company is.

The three scenarios that create most lapsed customers are consistent:

No follow-up after the first job. A first-time customer who receives an invoice and nothing else has no particular reason to call back over any other company when the next need arises. Without a post-job contact cadence, first-time customers lapse at the highest rate.

Gap in the seasonal reminder cycle. A customer who received a spring tune-up reminder one year but didn’t receive it the following year wonders if the business is still operating. The missed reminder doesn’t just cost the tune-up, it breaks the pattern that was keeping you top of mind.

Agreement non-renewal. When a maintenance agreement expires and no one follows up on the renewal, the customer drifts. They were paying for priority access and two included visits a year. Without a renewal prompt, the relationship ends at the agreement expiry date.

In each case, the lapse is a systems failure, not a relationship failure. The customer’s need for HVAC service doesn’t go away. Only the connection to your business does.

Why Automated Re-Engagement Outperforms Manual Campaigns

Right now, most HVAC contractors handle lapsed contact re-engagement the same way: a CSR pulls a report from Jobber or Housecall Pro, exports it to a spreadsheet, sorts by last appointment date, and works through the list manually. Notes from the field stay in the technician’s dispatch board comments, never making it into a structured follow-up record. The CSR sending the message often has no visibility into the service history, so every outreach lands as a generic “we miss you” with no reference to the actual job. That approach costs an hour or two of front-office time every time it runs, and it only runs when someone remembers to schedule it.

The manual approach to win-backs is a periodic campaign: once a quarter or once a season, someone pulls the list of customers who haven’t booked recently, sorts by value, and sends messages in bulk. This works when it runs. The problem is it doesn’t run consistently.

Manual campaigns get deprioritized when the team is busy. Peak season, a wave of emergency calls, or a spike in inbound volume pushes the win-back campaign to next week, then next month. By the time someone runs the campaign, the contacts who were 14 months inactive are now 18 months inactive. The warmest window has passed.

An automated system doesn’t have this problem. The AI Analyze batch runs on schedule, regardless of how busy the office is. It identifies lapsed contacts at the right moment, when they’re 12 months out, not 18, and fires the outreach before the window closes.

The second limitation of manual campaigns is message quality. A bulk message sent to 200 contacts at once is, by definition, not personalized. Customers recognize mass outreach. A message that references their specific job type, their equipment, or the last service date reads differently, and converts differently.

The AI Generate node in ServiceAgent produces a message that draws from the contact’s service history in the CRM. It references the job from last year, notes the equipment type, and connects the outreach to a relevant seasonal moment. That specificity is what separates a message that gets a response from one that gets ignored.

Introducing the Workflow Builder

The Workflow Builder is a visual drag-and-drop canvas inside ServiceAgent where you build automated sequences that fire the moment a trigger event occurs. Each workflow starts with a trigger (the event that kicks everything off) and moves through a series of nodes (individual actions the system takes without any human involvement).

For lapsed customer re-engagement, the trigger is the application of a “Lapsed” tag to a contact, applied automatically by a weekly AI Analyze batch that scans the CRM for contacts with no appointment or job ticket in the past 12 months. The workflow then routes each contact to one of three paths based on their classification: high-value, medium-value, or standard. You build it once. The system handles re-engagement continuously in the background.

Trigger What fires What it does
contact.tagged “Lapsed” (High-Value) AI Generate → Send Email + Send SMS → Wait 7d → AI Decision → Create Task Sends a personalized email and SMS drawn from the contact’s service history, waits 7 days, then creates a CSR call task if there is no response.
contact.tagged “Lapsed” (Medium-Value) Send SMS → Wait 14d → AI Decision → Create Task Sends a seasonal offer SMS, waits 14 days, then creates a standard follow-up task if there is no response.
contact.tagged “Lapsed” (Standard) Send Email → Wait 21d → AI Decision → Inactive tag Sends a simple re-engagement email, waits 21 days, then applies an Inactive tag if there is no response.

How Does the Automated Re-Engagement System Work?

Setting Up the Lapsed Contact Identification

Before the re-engagement workflow can fire, the system needs to know who is lapsed. This happens through an AI Analyze configuration that runs as a weekly scheduled review of the contact database.

AI Analyze (weekly lapsed contact scan)

What it does: Scans all contacts in ServiceAgent for those whose most recent appointment or job ticket is older than 12 months and who do not have an upcoming appointment on the calendar. For each qualifying contact, it assesses three factors: total historical spend with your business, number of previous service visits, and whether the contact has an equipment profile in the CRM. Based on these factors, it assigns a classification: High Value (repeat customers or large past jobs), Medium Value (one or two past jobs, standard spend), or Standard (first-time customers with smaller jobs or incomplete profiles).

Why it matters: Not every lapsed customer deserves the same re-engagement effort. A customer who had two full system installations with you over five years warrants a personalized phone call or a detailed email written with their history in mind. A customer who had one $150 filter service three years ago warrants a brief seasonal SMS. The classification ensures your team’s effort is proportional to the opportunity.

What you do: Set the AI Analyze scan to run weekly, targeting contacts with last_appointment_date older than 365 days and no future_appointment. Configure the classification thresholds to match your business: for most HVAC contractors, High Value is customers with total lifetime revenue above your average job value × 3, Medium Value is one or two visits with standard spend, and Standard is everything else.

What to check: Run the scan manually for the first time and review the classification output. Spot-check five contacts in each tier to confirm the classification is consistent with your intuition about those accounts.

contact.tagged “Lapsed” (workflow trigger)

What it does: When the AI Analyze scan applies the “Lapsed” tag to a contact, this trigger fires the re-engagement workflow for that contact. The tag also applies the customer’s classification (High/Medium/Standard) as a data field that the first decision node reads.

Why it matters: The tag application is what connects the background analysis to the live workflow. Once the tag fires, the automation takes over, no human needs to initiate the outreach.

What you do: Ensure the AI Analyze batch is configured to apply both the “Lapsed” tag and the classification value to each qualifying contact before the trigger fires.

What to check: After the first scan, open a contact that was classified and confirm both the “Lapsed” tag and the classification field appear in their profile.

Node 1: AI Decision (High / Medium / Standard)

What it does: Reads the classification field on the contact and routes the workflow to the appropriate re-engagement path. High-Value contacts route to Path A. Medium-Value contacts route to Path B. Standard contacts route to Path C.

Why it matters: This is the branching point that determines the quality and channel mix of the re-engagement. High-value contacts get both email and SMS, with AI-generated personalization. Medium-value contacts get a single SMS with a seasonal offer. Standard contacts get a single email. Without this branch, every contact gets the same message regardless of their relationship with your business.

What to check: After the first scan runs and the workflow fires, confirm the activity log shows contacts correctly routed to the appropriate path.

Path A: High-Value Lapsed Customers

Node A1: AI Generate (personalized re-engagement message)

What it does: Reads the contact’s service history, job types, equipment details, last service date, technician notes, and generates a personalized message that references their specific history with your business. The output includes a subject line and email body plus a shorter SMS version of the same message.

Why it matters: High-value customers lapsed for reasons you don’t know. A generic “we miss you” message signals that you didn’t notice they were gone. A message that references their specific equipment and the work your team did signals the opposite. That specificity is what makes a high-value customer feel worth re-engaging rather than just mass-messaged.

What you do: Configure the AI Generate node with a structured output: opening line referencing the specific system type and last service year, one sentence on why now is a relevant moment (seasonal transition, service anniversary, equipment age), one clear call to action (schedule a service, reply to this email, call for a consultation). Keep it under 120 words for email, under 40 words for SMS.

What to check: After a test run, review the AI Generate output for a contact with a full service history. Confirm the job references are accurate and the message reads as personal rather than templated.

Node A2: Send Email + Send SMS (personalized re-engagement)

What it does: Sends the AI Generate output as both an email and an SMS to the contact within 2 hours of the “Lapsed” tag being applied. Email uses the full version. SMS uses the shorter version. Both include a direct link to the scheduling page or a phone number to call.

Why it matters: High-value contacts deserve both channels. Some customers prefer email. Some prefer SMS. Sending both within the same outreach window maximizes the chance of reaching them on their preferred channel without requiring you to know which one that is.

What you do: Configure the Send Email and Send SMS nodes to fire in sequence, email first, SMS 2 hours later, so the SMS doesn’t feel like spam immediately following the email. Both pull from the AI Generate output.

What to check: After a test run, confirm both messages arrive with the correct personalized content and that the scheduling link works correctly.

Node A3: Wait 7 days, then AI Decision (responded or booked?)

What it does: Pauses the workflow for 7 days after the outreach, then checks for an inbound reply, a new appointment, or any activity on the contact’s record. If yes, the workflow closes and the “Lapsed” tag is removed and replaced with “Re-engaged.” If no, routes to Node A4.

Node A4: Create Task (personal follow-up call)

What it does: Creates a high-priority task for a CSR to place a personal follow-up call, with the contact’s service history, the messages already sent, and the outreach timeline noted in the task body.

Why it matters: High-value contacts who don’t respond to two outreach messages deserve one personal touch before being marked inactive. The CSR making this call has full context and can reference both the service history and the automated messages that went out, making the conversation feel warm and informed rather than cold.

What to check: After a test with no response simulated, confirm the task appears with the correct content in the CSR queue.

Path A summary:

contact.tagged "Lapsed" (High-Value) → AI Generate (personalized history-aware message) → Send Email + Send SMS → Wait 7d → AI Decision (responded?) → Re-engaged tag (if yes) | Create Task personal call (if no)

Path B: Medium-Value Lapsed Customers

Node B1: Send SMS (seasonal offer)

What it does: Sends a single, short SMS offering a time-limited seasonal offer tied to the current time of year: a spring tune-up discount in March, a fall heating check in September, a filter replacement bundle in the off-season months.

Why it matters: Medium-value contacts don’t warrant personalized AI generation, but they do warrant relevant timing. A seasonal offer gives them a concrete reason to act now rather than later. The message is short enough to be read in a moment and specific enough to be relevant.

What you do: Configure four seasonal variants of the SMS template, tied to the month the workflow fires. Spring (March-May): “Hi [Name], spring’s here, time for your AC tune-up before the heat hits. As a returning customer, get [offer]. Book here: [link].” Fall (Sept-Nov): heating check offer. Winter/Summer: filter bundle or inspection offer.

What to check: Confirm the correct seasonal variant fires based on the month the contact was tagged as Lapsed.

Node B2: Wait 14 days, then AI Decision (responded or booked?)

What it does: Pauses for 14 days, checks for a response or booking, then routes to Create Task if no engagement.

Node B3: Create Task (standard follow-up)

What it does: Creates a standard-priority task for the CSR team with the contact details and a note that one automated SMS was sent with no response.

Path B summary: contact.tagged "Lapsed" (Medium) → Send SMS (seasonal offer) → Wait 14d → Re-engaged (if yes) | Create Task (if no)

Path C: Standard Lapsed Customers

Node C1: Send Email (re-engagement)

What it does: Sends a brief, warm email: “It’s been a while since we serviced your system. If you’re due for a tune-up or have any questions, we’d love to hear from you, here’s an easy booking link.” Simple, no-pressure, one click to act.

Node C2: Wait 21 days, then AI Decision (responded?)

If yes: remove “Lapsed” tag, add “Re-engaged.” If no: apply “Inactive” tag and remove from active re-engagement. The contact remains in the CRM but will not receive further automated outreach unless their status changes.

Path C summary: contact.tagged "Lapsed" (Standard) → Send Email (simple re-engagement) → Wait 21d → Re-engaged (if yes) | Inactive tag (if no)

What Does the Re-Engagement System Produce Over Six Months?

A continuously maintained active customer list. Instead of a database that grows with past customers and never gets cleaned, the weekly AI Analyze batch keeps the active and lapsed lists current. Contacts that rebook move from Lapsed to Re-engaged. Contacts that never respond eventually move to Inactive. The active customer list becomes a genuinely useful metric rather than a number that includes everyone who ever called you.

A predictable win-back rate. With the automated system running consistently, the percentage of lapsed contacts that re-engage within 30 days of outreach becomes measurable across seasons. You can see which paths perform better, which seasonal offers get responses, and which contact classifications re-engage most readily. HVAC contractors running this workflow see a 75% booking conversion rate on the calls the AI handles, meaning three in four re-engaged contacts who reach out end up with an appointment confirmed. That data improves the system over time.

Fewer CSR hours spent on manual list management. The weekly batch, the classification, and the outreach all run automatically. CSR involvement kicks in only at the task-creation stage, which is only for high-value and medium-value contacts who didn’t respond to automated outreach. The volume of CSR work is a fraction of what manual campaign management would require for the same coverage. HVAC operations that have replaced manual re-engagement with this workflow typically save 10 or more hours per week on front-office admin alone.

Why ServiceAgent Handles This for HVAC

The HVAC customer list is one of the most underused assets in the trade. Most HVAC contractors know they have past customers who could be re-engaged but don’t have the time or the system to do it consistently. ServiceAgent’s AI Analyze batch turns the contact database into an active re-engagement engine, running weekly in the background, classifying contacts by value, and firing the appropriate outreach sequence without any manual list management.

The difference between a one-time campaign and a continuous system is compounding. A campaign reaches whoever is on the list when it runs. A weekly batch catches contacts at the right moment, 12 months out, not 18, and keeps catching them every time a new contact crosses the threshold. Over a year, the cumulative re-engagement across all contacts adds up to a meaningful revenue line that requires no additional headcount or campaign planning.

For HVAC specifically, seasonal timing makes re-engagement particularly effective. A contact who last had an AC service 13 months ago and receives a March re-engagement SMS is reached exactly when they’re thinking about the upcoming cooling season. The weekly batch ensures that window is never missed. Visit serviceagent.ai to see how the AI Analyze batch configuration works.

Frequently Asked Questions

How long should an HVAC customer be inactive before they’re considered lapsed?

Twelve months is the standard threshold for most HVAC contractors, because a customer who hasn’t booked in 12 months has missed at least one full service cycle. Some operators use 18 months for customers in mild climates where HVAC usage is more seasonal. The key is setting a threshold that identifies contacts who have genuinely drifted, not just customers who are in the off-season window between services. If you run the AI Analyze scan and find that your 12-month threshold produces a list that includes customers who are clearly still active but haven’t needed a service yet, adjust to 15 or 18 months.

What’s the best offer to include in a lapsed customer re-engagement message?

Low-friction offers consistently outperform large discounts for win-backs. A free filter check with any booked service, a priority scheduling slot during peak season, or a 10% returning-customer discount give lapsed contacts a concrete reason to act without signalling that you’re desperate for business. Customers who left because of a pricing concern may respond better to a service bundle that adds value without reducing the price on the original service type. The AI Generate node for high-value contacts can tailor the offer framing based on the customer’s job history.

What happens if a lapsed customer calls us before the automated outreach completes?

When a lapsed contact creates any new activity, an inbound call, a booked appointment, a reply to any message, the AI Decision check at the end of each path detects that activity and closes the workflow cleanly. The “Lapsed” tag is removed and the “Re-engaged” tag is applied. If they call during the Wait/Delay window before the check fires, configure the workflow to monitor for any new contact record activity and exit the pipeline immediately when detected. This prevents a customer who called back on their own from receiving a re-engagement message that’s no longer relevant.

Is this workflow right for my size of HVAC operation?

HVAC contractors handling 20 or more inbound calls per day and running 10 or more trucks get the clearest return from this workflow. At that volume, lapsed contacts accumulate faster than any CSR can manually re-engage, and gaps in the maintenance agreement renewal cycle start costing real revenue. Smaller operations can run the same workflow with fewer nodes: the trigger logic and classification stays the same, the output volume is simply lower. The system scales with your call volume, not the other way around.

Shambhav Reviews CRM and AI-calling software for service businesses. Tests every platform hands-on before recommending it. 22 min read · Last updated July 12, 2026. View profile

Read next