Here’s what most HVAC companies do when a lead doesn’t book: call once, maybe twice, leave a voicemail, and mark the lead as cold. The homeowner wasn’t uninterested. They got distracted. The HVAC company just ran out of runway before that distraction cleared.
Unbooked leads don’t need better scripts. They need a system that keeps the conversation open at the right moments, without anyone on your team having to remember to do it.
TL;DR
- Unbooked HVAC leads fall into two categories: first-call leads who didn’t respond after initial contact, and quoted leads who went silent after receiving pricing. Each needs a different workflow.
- Path A (first-call leads) runs on a contact.created trigger with a 24-hour Wait/Delay before the first follow-up SMS, then a soft-close message at 96 hours.
- Path B (quoted leads) runs on a deal.stage_changed trigger when a quote is sent, with a 24-hour check-in and a 72-hour value reminder.
- ServiceAgent‘s Workflow Builder automates both sequences. Once configured, they run on every lead without dispatcher involvement.
- Operators running automated follow-up sequences convert 75% of AI-handled calls to booked appointments, including leads that didn’t commit on first contact.
Why Unbooked HVAC Leads Aren’t Dead?
A homeowner who contacts an HVAC company and doesn’t book is a paused lead, not a lost one.
Most homeowners requesting HVAC service or a quote are actively looking. They contact two or three companies, get prices, and then life interrupts: a work call, a school pickup, a busy weekend. The buying intent doesn’t disappear. It gets buried under daily noise.
The companies that recover these leads aren’t doing anything clever. They’re staying visible at the right moments. A message at 24 hours catches the homeowner when the urgency is still present but the distraction has passed. A message at 96 hours catches the ones who needed more time. Beyond that, the window closes.
The problem isn’t motivation. Most HVAC operators know they should follow up. The problem is that manual follow-up depends on someone remembering, and remembering breaks down the moment dispatch gets busy.
The Two Follow-Up Situations
Not all unbooked leads are in the same position, and treating them identically is one reason follow-up underperforms.
First-call leads are homeowners who called in, spoke with the AI voice agent, and either expressed interest without booking or didn’t convert on the call. A contact record was created. No appointment exists.
Quoted leads are homeowners who went further: they received an estimate, said they’d think about it, and then went quiet. A deal record exists with a “Quote Sent” status. No deal has been won.
The distinction matters because the message and timing differ. A first-call lead needs a fast, low-friction follow-up that opens a conversation. A quoted lead needs a more specific touch: acknowledge the estimate, address hesitation, and offer a next step that doesn’t feel like pressure.
Running one generic sequence for both lead types means the wrong message reaches the wrong person at the wrong moment. ServiceAgent’s Workflow Builder lets you build separate sequences for each, triggered by different events.
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 system event that initiates the sequence) and runs through a series of nodes (individual actions the platform takes automatically).
For HVAC follow-up, you build two workflows: one for first-call unbooked leads, one for quoted leads that went quiet. Each runs independently on its own trigger. Once configured, both operate without dispatcher involvement.
Path A: The First-Call Follow-Up Workflow
Path A targets leads who contacted you and didn’t book. The trigger fires the moment the AI voice agent creates a new contact record with no appointment attached.
Trigger: contact.created (no appointment booked)
What it does: The contact.created trigger fires when the AI voice agent logs a new contact from an inbound call. To target only unbooked leads, add a condition: appointment status is not “booked.” This filters out leads who converted on the first call and ensures the sequence only runs for contacts who didn’t schedule.
Why it matters: Without this condition, the workflow fires on every new contact, including ones who already booked. That generates follow-up messages to leads who don’t need them, which looks disorganized and erodes trust. The condition is a single toggle.
What happens: The trigger fires, the condition is evaluated, and the workflow advances only for contacts with no booked appointment on record.
What to check: Create a test contact via the AI voice agent: one with a booked appointment, one without. Confirm the workflow fires only for the unbooked contact. If both trigger, revisit the condition logic on the trigger configuration.
Node 1: Wait/Delay (24 hours)
What it does: Pauses the workflow for 24 hours from the contact.created timestamp before sending the first follow-up.
Why it matters: Sending a follow-up within minutes of the initial call feels automated and impersonal. At 24 hours, the homeowner’s original urgency is still present but the distraction that interrupted the booking has had time to pass. That’s the window where follow-up converts most reliably.
What happens: The workflow holds in a paused state, then automatically advances to Node 2 when the 24-hour mark is reached.
What to check: Confirm the delay starts from the contact.created timestamp, not from when the trigger was configured. Run a test and verify the node advances at the correct time.
Node 2: AI Generate + Send SMS (personalized first follow-up)
What it does: The AI Generate node pulls the customer name, service type, and any urgency signal captured during the call from the contact record, then drafts a personalized follow-up SMS. The Send SMS node delivers it immediately after generation.
Why it matters: A personalized message converts better than a template. “Hi Sarah, checking in on the AC issue you mentioned” lands differently from “Hi there, following up on your request.” AI Generate creates that personalization from data already in the contact record, at scale, without anyone writing individual messages.
What happens: A typical output: “Hi [Name], just following up on your HVAC request from yesterday. If you’re still looking to get [service type] sorted, reply here and we can get you scheduled this week.” Short, specific, one clear next step.
What to check: Run a test and confirm the service type field populates from the contact record. If service type shows as blank, check the field mapping between the AI voice agent’s contact creation and the Workflow Builder’s data scope.
Node 3: Wait/Delay (72 hours)
What it does: Pauses the workflow for 72 more hours after Node 2. If the lead responded and booked after the first message, the workflow exits. If not, it advances to the soft-close message.
Why it matters: The space between the first follow-up and the second determines whether the sequence feels like a conversation or a pressure campaign. 72 hours gives the homeowner room to respond without the second message arriving before they’ve had a chance to act on the first.
What happens: The workflow pauses, checks the appointment status condition, and either exits (if booked) or advances to Node 4.
What to check: Add an exit condition at this node: if appointment status changes to “booked” between Nodes 2 and 3, end the workflow. Without this, a lead who books after the first message still receives the soft-close.
Node 4: Send SMS (soft close)
What it does: Sends a final, low-pressure message to leads who haven’t responded after 96 total hours since first contact.
Why it matters: This message serves two purposes. For leads who missed the first SMS, it’s a second chance. For leads who are genuinely undecided, it’s a signal that you won’t chase indefinitely, and that sometimes prompts action where sustained messaging didn’t.
What happens: The node sends: “Hi [Name], just following up one last time on your HVAC request. If the timing doesn’t work right now, no problem. If you need help when you’re ready, just reply here.” No urgency. No pressure. One final opening.
What to check: Confirm this node does not fire for contacts who booked between Nodes 2 and 4. Test with a lead who books after the first message to verify the workflow exits cleanly.
Node 5: Update CRM (contact status)
What it does: Tags the contact record with a status reflecting the sequence outcome: “Follow-up complete: booked,” “Follow-up complete: no response,” or “Follow-up complete: opted out” if the lead replied with a stop request.
Why it matters: Without this tag, every contact record looks the same. The dispatcher looking at the queue the next morning can’t tell which leads went through a full follow-up sequence and which were brand new. The CRM tag creates that visibility instantly.
What to check: Open test contacts after a full workflow run and confirm the correct status tag was applied with an accurate timestamp.
Path B: The Quoted Lead Follow-Up Workflow
Path B targets leads who received a quote and went quiet. The trigger fires when a deal’s stage changes to “Quote Sent” in ServiceAgent’s CRM.
Trigger: deal.stage_changed (to “Quote Sent”)
What it does: The deal.stage_changed trigger fires when a deal record’s status updates to a specific stage, in this case “Quote Sent.” This is the moment a quote or estimate has been delivered and the prospect has not yet responded.
Why it matters: Quote follow-up requires a different cadence from first-call follow-up. The homeowner has pricing. They’re not missing information. They’re weighing the decision, comparing options, or waiting for a better time. A sequence that starts from the quote moment, not from initial contact, is timed to that reality.
What happens: The trigger fires when a staff member or automated process updates the deal stage to “Quote Sent” in the CRM.
What to check: Confirm your team updates the deal stage to “Quote Sent” consistently when estimates go out. If the trigger isn’t firing reliably, the gap is usually in deal stage discipline, not the workflow itself.
Node 1: Wait/Delay (24 hours)
What it does: Pauses the workflow for 24 hours before the first quote check-in message.
Why it matters: Sending a follow-up the same day as the quote feels rushed. 24 hours gives the homeowner time to review pricing, then positions your message at the moment the quote is still fresh but the immediate “I’ll think about it” response has had time to settle.
What to check: Confirm the delay starts from when the deal stage changed, not from when the contact was first created.
Node 2: Send SMS (quote check-in)
What it does: Sends a brief SMS referencing the quote and offering to answer any questions or walk through the scope.
Why it matters: Most quoted leads who go silent don’t have an objection. They have a question they haven’t asked. A message that explicitly invites questions removes the friction keeping them from responding. “If you have questions about the estimate or want to walk through the work” opens a door that a generic check-in doesn’t.
What happens: The node sends: “Hi [Name], just checking in on the estimate we sent for [service type]. If you have any questions about the scope or pricing, reply here and I can help. Happy to walk through anything that wasn’t clear.”
What to check: Confirm the service type field pulls from the deal record correctly. If the deal record doesn’t contain service type, add it as a field during deal creation and map it to this node.
Node 3: Wait/Delay (72 hours)
What it does: Pauses the workflow for 72 additional hours. If the lead responds and the deal moves to “Won,” the workflow exits. If not, it advances to the value reminder.
What to check: Add an exit condition: if deal.stage_changed fires again to “Won” between Nodes 2 and 3, end the workflow without sending Node 4.
Node 4: Send SMS (value reminder)
What it does: Sends a final message that shifts from quote logistics to the outcome of the work itself.
Why it matters: A quoted lead who goes quiet at the 72-hour mark has often moved past logistics questions into hesitation territory: price, timing, trust in the contractor. A message that speaks to the outcome (“your system running reliably through the season”) rather than the transaction (“the estimate we sent”) addresses a different concern.
What happens: “Hi [Name], wanted to follow up one more time on the [service type] work. We do this kind of job regularly and the difference after is worth it. If you’re ready to move forward or want to talk through any concerns, just reply here.”
What to check: Confirm this node doesn’t fire for leads who responded to Node 2 and booked. Test the deal.won exit condition before going live.
Node 5: Update CRM (deal status)
What it does: Tags the deal record with a “Follow-up complete” status and the sequence outcome: responded and booked, responded and not booked, or no response.
Why it matters: Sales reporting depends on knowing how many quotes were sent and how many converted. Without a CRM tag marking the end of the follow-up sequence, you can’t distinguish a quote that converted through the workflow from one where the homeowner called back on their own.
What to check: Pull a deal report filtered by “Follow-up complete” status after a week of live operation. Confirm the count matches the number of quotes that entered the workflow.
What to Track to Know Both Workflows Are Working?
Three numbers tell you whether follow-up automation is producing results.
Path A conversion rate: Of all contacts who entered the first-call follow-up sequence, what percentage booked within 96 hours? If this is below 20%, review the SMS copy in Node 2 and confirm the service type field is populating correctly.
Path B conversion rate: Of all quotes that entered the deal.stage_changed sequence, what percentage moved to “Won” within 6 days? Compare to your baseline quote-to-book rate before the workflow ran. Any improvement is directly attributable to the automated sequence.
Exit condition accuracy: What percentage of booked contacts exited both workflows cleanly, without receiving additional messages after booking? If booked leads are still getting follow-up messages, the exit conditions on Nodes 3 and 4 in each path need adjustment.
How ServiceAgent Is the 24/7 AI Office Manager?
ServiceAgent’s AI voice agent answers every inbound HVAC call, creates the contact record that triggers Path A, and logs the deal data that triggers Path B. Both sequences run on ServiceAgent’s Workflow Builder platform, connected to the same CRM that the AI voice agent writes to.
Operators running the full follow-up system save over 10 hours per week on manual callbacks and CRM review, because both sequences run without dispatcher involvement. Every unbooked lead enters a workflow. Every quote triggers a check-in. Nothing falls through because someone got busy.
The leads you’ve already paid to generate keep getting worked until they book or clearly opt out. ServiceAgent is where both workflows get built.
Frequently Asked Questions
How many times should an HVAC company follow up with a lead that didn’t book?
Two to three times over four to five days for first-call leads, and one check-in plus one value reminder over four to five days for quoted leads. Beyond that, conversion rates drop significantly and continued messages become intrusive. The goal of a follow-up sequence isn’t persistence for its own sake. It’s catching the homeowner in the window where they’re still actively considering the decision. That window is short, two to three well-timed messages cover it, and more messages outside that window don’t recover leads.
What should an HVAC follow-up message say?
The first message should reference the specific service the homeowner mentioned and include a clear, low-friction next step: reply here, call this number, or choose a time. Keep it under 80 words and make it sound like it came from a person rather than a system. Avoid urgency language like “limited availability” or “act now,” which reads as pressure. The second message, if needed, should either invite questions about a quote or gently close the loop. What doesn’t work: generic “just following up” messages with no context and no specific next step.
What happens if a lead replies after the follow-up workflow ends?
The reply comes into the ServiceAgent omnichannel inbox as a new conversation. The workflow is no longer active on that contact, so no automated messages fire from the sequence. A team member handles the reply manually, or you build a separate re-engagement workflow triggered by an inbound message on a contact with a “Follow-up complete” CRM status. For HVAC businesses with significant lead volume, that re-engagement workflow is worth building: homeowners who come back after going quiet convert at a high rate because they made the decision on their own terms.