Not every HVAC call at 9pm is a true emergency. Most aren’t. The problem is that without a system to tell the difference, you’re either waking your on-call tech for a tripped breaker or leaving a homeowner with no working heat waiting until morning.
TL;DR
- Four named emergency types (No Heat, AC Failure, Gas/CO, Water Leak) each carry a severity level. Critical calls dispatch a tech tonight. High-urgency calls book first thing tomorrow. Routine calls get a confirmation and queue for normal hours.
- Manual classification fails at scale: no written criteria, inconsistent decisions after hours, no feedback loop.
- The Workflow Builder runs the triage automatically from the moment a ticket is created.
- Path A (Critical): SMS + call to on-call tech + SMS to caller, within 60 seconds. If tech doesn’t respond in 10 minutes, escalation fires automatically to your backup tech.
- Path B (High): Next-available booking confirmation SMS + morning dispatcher task.
- Path C (Routine): Confirmation SMS.
Why “Emergency” Is Doing Too Much Work
Most HVAC operators use one word for three different situations, and the word is “emergency.”
A homeowner with a gas smell is a Critical emergency. A homeowner with no AC on a 95-degree afternoon is a High-urgency call. A homeowner whose system is making a noise they’ve never heard before wants someone to call them back when it’s convenient.
All three might call after hours. All three might describe their situation with the same panicked tone. If your after-hours response treats them identically, you’re either over-dispatching your on-call tech (burning them out and inflating costs) or under-responding to someone who genuinely can’t wait until morning.
The classification problem comes before the automation question. Automate the wrong criteria and you haven’t solved anything. You’ve just made the wrong decision faster.
The Four HVAC Emergency Types and Their Severity
The US HVAC industry recognizes four primary emergency call types. Each has a default severity level that determines which triage path it triggers.
| Emergency type | Default severity | Why it matters | Triage path |
|---|---|---|---|
| No Heat | Critical (freezing temps) / High (mild cold) | Furnace failure below 35°F outdoor temp is a safety risk, especially for elderly, infants, and pets | Path A if freezing / Path B if mild |
| AC Failure | High (heatwave) / Routine (mild weather) | No cooling above 90°F with vulnerable occupants is a health risk, not just discomfort | Path A if extreme heat + vulnerable / Path B standard heatwave |
| Gas Leak / Carbon Monoxide | Critical (always) | Life-safety situation. Immediate dispatch and safety guidance regardless of time or season | Path A, always |
| Water Leak / Flooding | High | HVAC-related water issues escalate fast. Delayed response can cause thousands in property damage | Path B with same-day escalation flag |
| Electrical fault (burning smell, sparks) | Critical | Fire risk. Same response as gas leak | Path A, always |
| Routine (maintenance, quotes, noise, reduced airflow) | Routine | No time sensitivity | Path C |
The middle tier is where most triage mistakes happen. A family with no AC when it’s 98 degrees outside needs a confirmed appointment for 8am and a confirmation SMS tonight. Not a same-night dispatch, not a voicemail. Getting the severity right for each call type is what separates a functional triage system from an expensive one.
How Manual Classification Fails at Scale?
If your after-hours process relies on a human deciding what’s an emergency, you’ve got three problems.
There are no written criteria. Ask three different staff members what counts as a Critical emergency and you’ll get three different answers. One draws the line at safety concerns. Another includes any complete system failure. A third uses their gut based on how upset the caller sounds.
Classification quality degrades after hours. A staff member deciding at 6pm is different from the same person deciding at 11pm on a Friday. Tiredness pushes toward over-classification (dispatch everyone, deal with the complaints later) or under-classification (log it, someone will handle it in the morning). Neither is the right call.
There’s no feedback loop. If you’re not logging how each call was classified and what actually happened, you can’t improve. You don’t know how many calls were mis-classified. You don’t know which call types your staff consistently gets wrong.
Automation doesn’t fix bad criteria. Consistent automation of clear criteria is dramatically better than inconsistent human judgment of unclear criteria.
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 HVAC emergency triage, the trigger is a new ticket created from an inbound call. From there, the workflow reads the call, classifies it against your severity tiers, and routes it to the correct response path. Operators who run this full sequence save over 10 hours per week previously spent on after-hours callbacks, morning dispatch decisions, and manual CRM updates.
You build this once. After that, it runs on every inbound call automatically.
The Triage Workflow: Trigger, Analysis, and Decision
The triage workflow has three structural layers before it reaches the response paths: the trigger, the analysis, and the decision.
The trigger: ticket.created
Setting up the trigger
What it does: The ticket.created trigger fires the moment a new support or service request ticket is created in ServiceAgent. For HVAC operators using the AI voice agent, this happens immediately when the voice agent logs a completed call intake.
Why it matters: ticket.created is the correct trigger here because it fires at the point where you have structured data. The voice agent has already captured the caller’s issue, address, and call time. You’re starting the triage workflow with something to work with, not just a ringing phone.
What you do: Open the Workflow Builder, select “New Workflow,” and choose ticket.created as your trigger. Apply a filter for tickets with source tag “AI Voice” so this workflow only fires on calls that came through the AI agent, not on tickets your team created manually.
What to check: Create a test ticket manually with the AI Voice source tag. Confirm the workflow activates in the Workflow Builder activity log. If it doesn’t fire, check that the source tag filter matches exactly what the voice agent writes on ticket creation.
Node 1: AI Analyze
What it does: The AI Analyze node reads the ticket content, including the call transcript and any intake fields the voice agent captured, and identifies the key signals: service type, urgency language, safety indicators, and call context (including seasonal and weather-related signals).
Why it matters: The ticket at this point contains a transcript. It might say “my AC isn’t working and it’s really hot.” AI Analyze extracts what that actually means: service type is cooling, urgency language is high, no explicit safety indicator, temperature context suggests High rather than Routine.
Without this node, you’re branching a workflow on raw text. With it, you’re branching on structured, classified input.
What you do: Add the AI Analyze node after the trigger. Define what to look for: service type (cooling, heating, gas, electrical, water, maintenance), urgency signals (“no heat,” “gas smell,” “not working at all,” “really hot,” “flooding,” “unsafe”), and safety indicators (gas leak, carbon monoxide, burning smell, sparks, standing water near electrical).
Include seasonal context: configure the node to weight “no heat” calls more heavily as Critical when the transcript includes temperature references below 35°F.
What to check: Run five test tickets covering each of the four emergency types plus a routine call. Confirm AI Analyze produces a different severity output for each. If a gas leak transcript is returning the same severity as a maintenance request, your safety indicator definitions need to be more specific.
Node 2: AI Decision
What it does: The AI Decision node reads the output from AI Analyze and routes the workflow to one of three paths: Path A (Critical), Path B (High), or Path C (Routine).
Why it matters: This is the core of the triage. Every call that enters this workflow exits through one of three doors, each with a different speed and cost of response. The AI Decision node makes that routing decision consistently, based on the same criteria, at any hour, without anyone on your team being involved.
What you do: Configure three conditions in the AI Decision node. Condition 1: safety indicator present, OR heating with critical urgency and freezing temperature context, OR electrical with burning smell or sparks. Routes to Path A. Condition 2: urgency is high with no safety indicator, OR service type is water leak. Routes to Path B. Condition 3: everything else routes to Path C.
You set these thresholds once. The node applies them on every ticket from that point forward.
What to check: Test each condition with a known Critical transcript, a known High transcript, and a known Routine transcript. Confirm the correct path fires for each. If a gas leak is routing to Path B, your safety indicator definition in Node 1 is too narrow.
Path A: Critical Emergency Response
Path A fires when AI Decision identifies a safety risk or critical system failure. The sequence is fast, direct, and complete before anyone on your team is awake.
Node A1: Send SMS + Trigger Call (on-call tech dispatch)
What it does: For Critical emergencies, two notifications go to your on-call tech simultaneously: an SMS with the full job details and an automated call. The SMS carries the caller’s name, address, service description, and urgency level. The call ensures the tech is woken up even if the SMS is missed.
Why it matters: A single SMS to a sleeping tech at 2am has a meaningful miss rate. A furnace failure in freezing weather or a gas leak can’t wait 20 minutes for a notification to be noticed. SMS plus call is the correct notification tier for Critical calls. High-urgency calls (Path B) use SMS only, handled at normal hours. Critical calls use both.
What you do: Configure the Send SMS node with your on-call tech’s number and a message template: “CRITICAL HVAC: [caller name] at [address]. Issue: [service description]. Called at [time]. Call back: [caller phone].” Then add a second node immediately after that triggers a call to the same number using ServiceAgent’s outbound call capability. The call plays a brief recorded message with the same details.
What to check: Run a test dispatch at a time when you’ll actually hear the call come through. Confirm both the SMS and call fire within 60 seconds of the test ticket creation. If the call node fires but the message is silent, check the outbound call recording configuration.
Node A2: Send SMS (caller confirmation)
What it does: A Send SMS node sends the caller a message confirming their emergency has been logged and that a technician will be in contact shortly.
Why it matters: A homeowner who reported a gas smell and heard nothing back doesn’t know whether to stay in the house or call 911. This confirmation closes that loop. It also reduces repeat calls to your line while your tech is in transit.
What you do: Configure with the caller’s phone number (pulled from the ticket) and a message: “Hi [name], your HVAC emergency has been logged with [business name]. An on-call tech has been notified and will be in touch shortly. If this is a gas emergency, call 911 immediately.”
What to check: Confirm the caller’s number on the ticket is the mobile number, not a home landline. If callers are entering landlines during intake, add a “best callback number” field to your voice agent’s intake script.
Node A3: Escalation (if tech doesn’t respond)
What it does: A Wait/Delay node pauses the workflow for 10 minutes after the tech notification fires. If no response has been logged from the primary tech within that window, a second Send SMS node fires to your designated backup technician with the same job details and an escalation flag.
Why it matters: A gas leak, a furnace failure at 15°F, or a carbon monoxide concern requires a confirmed response. If your primary on-call tech is already on a job, has their phone on silent, or is unavailable, the escalation path reaches a second person automatically, without your dispatcher tracking down coverage at 2am.
What you do: Add a Wait/Delay node set to 10 minutes after Node A1. Connect it to a condition check: if no outbound response from the primary tech has been logged in the CRM, fire a second Send SMS to your backup tech’s number with the message: “ESCALATED: Primary tech unreachable. HVAC Critical at [address]. [Issue]. Please respond immediately.”
What to check: Simulate a non-response scenario: send a test Critical ticket and do not respond to the tech notification. After 10 minutes, confirm the escalation SMS fires to the backup number. If it fires immediately instead of after 10 minutes, check the Wait/Delay node’s duration configuration.
The Path A summary
ticket.created → AI Analyze → AI Decision (Critical) → Send SMS + Call (on-call tech) → Send SMS (caller confirmation) → Wait 10 min → Escalation SMS (backup tech, if no response)
Time from call ended to initial notifications sent: under 60 seconds. Escalation to backup if primary tech is unreachable: automatic at 10 minutes.
Path B: High-Urgency Response
Path B fires when AI Decision identifies significant discomfort or distress without a safety indicator. The caller needs a fast, confirmed response, but not a same-night dispatch.
Node B1: Send SMS (booking confirmation)
What it does: The Send SMS node sends the caller a booking confirmation for their next-available slot, typically the first appointment of the following morning.
Why it matters: An urgent caller who reaches voicemail and hears nothing until morning has spent the night uncertain whether anyone got their message. A confirmation sent within 5 minutes anchors the booking while the interaction is still fresh. A caller who gets a confirmed appointment time at 10pm is far less likely to call a competitor at 7am.
What you do: Configure the node to pull the next-available appointment slot from your scheduling system and send it to the caller’s number: “Hi [name], your HVAC service request has been confirmed for [time] tomorrow at [address]. A tech will be there on time. Questions? Call or text [number].”
What to check: Run a test after business hours and confirm the appointment slot returned is the correct next-available morning slot. If the scheduling integration is returning stale slots, check the calendar sync settings in ServiceAgent.
Node B2: Create Task (dispatcher briefing)
What it does: The Create Task node creates an assigned job task visible to your dispatcher first thing in the morning, with the caller’s details, the urgency level, and the confirmed appointment time.
Why it matters: Without this node, the booking exists in the CRM but no one has been assigned to it. The dispatcher arrives, reads through overnight contacts, figures out what’s scheduled, and starts allocating techs from scratch. Create Task does that work automatically: the morning starts with a prioritized queue, not a discovery process.
What you do: Configure the task with the dispatcher’s name in the assigned-to field, the appointment date as the due date, and the full job details in the task body. Add a task tag of “High: Confirm tech before 8am.”
What to check: Confirm the task appears in the correct queue the morning after a test run. Check the appointment time on the task matches what was sent to the caller in Node B1.
The Path B summary
ticket.created → AI Analyze → AI Decision (High) → Send SMS (booking confirmation) → Create Task (dispatcher briefing)
Caller gets a confirmed appointment within minutes. Dispatcher gets a prioritized task before they open their laptop. Staff involvement overnight: zero.
Path C: Routine Response
Path C handles everything that doesn’t meet the threshold for Critical or High. Maintenance scheduling, quote requests, questions about parts, callbacks for non-time-sensitive issues.
Node C1: Send SMS (confirmation)
What it does: Sends the caller a confirmation that their request has been received and provides either a booking confirmation or a next-business-day callback time.
Why it matters: A routine caller who hits voicemail and hears nothing doesn’t distinguish between “they’re busy” and “they don’t care.” A same-night confirmation, even for a routine request, signals responsiveness and reduces morning follow-up calls.
What you do: Configure two message variants. For a caller who booked during the AI voice interaction, send a booking confirmation. For a quote request or question without an appointment, send: “Hi [name], we received your HVAC request. Someone will call you back [next business day] between 8am and 10am. Thanks for reaching out to [business name].”
What to check: Run a test for each variant. Confirm tickets with a booked appointment receive the confirmation variant and tickets without receive the callback variant.
The Path C summary
ticket.created → AI Analyze → AI Decision (Routine) → Send SMS (confirmation)
One node. One message. Done.
The complete triage workflow
ticket.created → AI Analyze (service type / urgency signals / safety indicators / weather context) → AI Decision → Path A (Critical): SMS + Call to tech, SMS to caller, Wait 10 min, Escalation SMS to backup if no response. Path B (High): SMS booking confirmation, Create Task for dispatcher. Path C (Routine): SMS confirmation.
Every inbound call handled. Every caller responded to within 60 seconds. Every Critical dispatch with a 10-minute escalation backstop if the primary tech doesn’t respond.
Tuning the Classification for Your Market
The criteria that define Critical versus High depend on your geography, your on-call structure, and your customers.
Weather context. In desert markets (Phoenix, Las Vegas), no AC in summer crosses from High to Critical faster than in coastal markets where nighttime temperatures drop. Configure AI Analyze to weight the local weather context alongside the caller’s words: a “no AC” call in 110°F outdoor heat is a different situation than the same call when it’s 75°F at night.
Escalation timing. The default 10-minute escalation window in Node A3 is a starting point, not a fixed rule. If your primary on-call tech is consistently responsive, extend the window to 15 minutes to reduce unnecessary backup alerts. If your on-call rotation involves techs who cover large geographic areas, tighten the window to 7 minutes.
Emergency type boundaries. Water leak severity depends on whether the leak is active and near electrical components. Add a secondary condition to your AI Analyze configuration: water leak plus “electrical” or “panel” or “breaker” in the transcript routes to Path A, not Path B.
Three signals that your classification needs tuning: your on-call tech is dispatching for jobs that should have been Path B (tighten Critical criteria), urgent callers are waiting until morning without confirmation (broaden High signal phrases), or routine callers are escalating unnecessarily (add a secondary occupant-impact condition to the High tier).
How ServiceAgent Handles HVAC Emergency Triage?
HVAC operators who’ve deployed ServiceAgent’s 24/7 AI Office Manager run this triage workflow on every inbound call, day or night. One operator in a high-volume residential market had their AI receptionist answer 47 calls in a single month while the owner was out on jobs. $12,000 in bookings that would have gone to voicemail were captured, classified, and confirmed automatically.
No answering service. No after-hours phone tree. No missed emergency at 2am because the right person didn’t pick up.
ServiceAgent’s Workflow Builder gives you the classification logic, the three paths, and the escalation backstop in one place. You configure the severity criteria to match your market. The system handles every call from there.
If you’re currently relying on staff judgment, a call-forwarding chain, or a generic answering service to handle after-hours HVAC triage, ServiceAgent replaces all three with a consistent, automated system that works at 2am on a Saturday the same way it works at 6pm on a Tuesday.
Frequently Asked Questions
What counts as a Critical HVAC emergency vs a High-urgency call?
A Critical emergency involves a safety risk or a failure condition where delay causes direct harm: gas or carbon monoxide concerns, no heat when outdoor temperatures are below freezing, no cooling when indoor temperatures are dangerously high, or any electrical fault with a burning smell or sparking. A High-urgency call involves significant discomfort or distress without an immediate safety risk: a system failure during a heatwave, no heat in mild cold, or a household with vulnerable occupants (elderly, infants) where overnight wait is inappropriate. Everything else is Routine.
What happens if the AI misclassifies a call?
Misclassification in either direction is recoverable. If a Routine call gets classified as High, the caller gets a morning appointment confirmation and a dispatcher task, which is a slightly faster response than they expected. If a High call gets classified as Routine, the caller gets a callback confirmation for next morning. A true miss, where a Critical emergency routes to Path C, is rare if your safety indicator criteria are correctly configured. The fix is not more human review but better AI Analyze criteria. Run your first 50 calls through a manual review pass and update the node configuration based on anything the AI misses.
What happens if the on-call tech doesn’t respond to a Critical dispatch?
Node A3 handles this automatically. A Wait/Delay node pauses for 10 minutes after the initial SMS and call fire to the primary tech. If no response is logged in the CRM within that window, an escalation SMS fires automatically to your designated backup technician. You configure the backup tech’s number once in the node settings. The escalation runs without any dispatcher involvement, at any hour.
How do I adjust the emergency threshold during a heatwave or cold snap?
The threshold is set in the AI Analyze node’s configuration, which you can edit in the Workflow Builder at any time without rebuilding the workflow. During a heatwave, configure the node to route any complete AC failure to Critical rather than High, regardless of reported indoor temperature. During a cold snap, adjust the heating failure condition to lower the outdoor temperature threshold for Critical classification. Some operators maintain two saved workflow versions (standard and weather-event) and switch manually when conditions shift. Others use a date-range condition in the AI Decision node that automatically applies stricter thresholds during peak season weeks.