Local Services

Seasonal Marketing Automation: How Contractors Fill Slow Months Before Peak

May 13, 2026·13 min read

The average HVAC contractor pays $70–$150 to acquire a new lead from Google. The average plumber, $80–$200. Yet sitting in your field service software right now is a database of customers who already hired you, already paid you, and already trust you — and most of you are doing nothing with it during the four months when your phone slows down. Seasonal marketing automation is how the top contractors fix that.

Shoulder months aren't slow because there's no work to be done. HVAC demand drops roughly 50% in March, April, September, and October compared to peak summer and winter weeks. Plumbing inspection volume follows a similar curve. For most trade contractors, those four months represent a predictable cash flow problem that repeats every year — not because demand disappears, but because demand doesn't generate itself without a trigger.

The contractors running 70–80% capacity during shoulder months are not in better markets. They're not running more ads. They have a system that reaches customers proactively — six to eight weeks before the season — instead of waiting for a breakdown to force the call.

The Real Cost of a Reactive Calendar

A contractor averaging 30% capacity during shoulder months versus 70% isn't just losing revenue for four months. They're paying the full cost of fixed overhead — technician salaries, truck payments, insurance, software — against a fraction of the revenue those same months could generate.

Consider an HVAC company with four technicians billing an average of $150 per hour. At 30% utilization, each tech generates roughly $36,000 in a six-week shoulder period. At 70% utilization, the same four techs generate $84,000 — the same crew, the same time, the same fixed costs. The $48,000 difference is not a market problem. It's a calendar problem.

The second cost of reactive scheduling is acquisition. The average cost per booked appointment from Google Ads for HVAC businesses runs $70–$150. During peak season, that number climbs as competitors drive up bid prices. A contractor who fills shoulder-season capacity through database campaigns spends essentially nothing on acquisition — those customers already know the business. They just need a reason to schedule.

That's the entire premise of seasonal marketing automation: the cheapest lead you'll ever book is the customer you already have, reached at the right time with the right message, before they need emergency service.

What's Actually Sitting in Your Customer Database

Most contractors dramatically underestimate the value of their existing customer list. Every job completed is a record. Every estimate sent is a contact. Every maintenance visit is a relationship. Those records compound into a database that, segmented correctly, is the highest-ROI marketing asset in your business.

Here's what's typically sitting unused:

Past repair customers with no contact in 10–14 months. These customers had a problem, you solved it. Their equipment is now one more year older. A pre-season tune-up message — sent eight weeks before cooling or heating season — reaches them at exactly the moment they're deciding whether to schedule a check. At a 3–8% booking rate from a well-timed past-customer campaign, a 3,000-contact list generates 90–240 booked appointments, at zero acquisition cost.

Service-only customers who were never offered a maintenance agreement. These are some of your highest-value unmonetized contacts. They hired you for an emergency, you fixed the problem, and the relationship ended. An automated campaign offering them an annual maintenance plan — triggered by their last service date — converts at significantly higher rates than cold outreach because they already experienced your work firsthand.

Contacts with aging equipment data. If your technicians log equipment make, model, and install year in your field service platform, you have a filterable list of customers with systems approaching or past the typical replacement window. An 8-year-old HVAC system is a sales lead. A 12-year-old water heater is a replacement conversation waiting to happen. Customers who receive an equipment-age-triggered message from their trusted service provider — before the breakdown — respond at far higher rates than cold prospecting because you're solving a problem they're already half-aware of.

Lapsed maintenance plan members. Customers whose agreements expired without renewal are not lost. They're waiting to be asked. A seasonal re-enrollment sequence — timed to before the season when their equipment matters most — outperforms generic reactivation because the seasonal urgency is built into the message itself.

The Four Campaign Types That Move the Needle

Not all seasonal campaigns convert equally. These four consistently drive the most booked appointments for trade contractors:

1. Pre-Season Tune-Up Campaign

The highest-converting campaign for HVAC and plumbing contractors. Send it 6–8 weeks before cooling season (mid-April for most U.S. markets) and again before heating season (mid-September). The message is direct: your system is about to work hard — schedule a tune-up now and avoid the breakdown call in August.

This campaign works because it's timed to a specific concern customers already have. You're not creating demand. You're meeting it before it becomes an emergency. Keep the offer simple: a fixed-price tune-up with a clear booking link. No explanation required.

2. Equipment Age Alert

Filter your database for customers whose equipment is 8 or more years old. Send a message from the technician who last serviced the system: "Based on the notes from your last visit, your system is now [X] years old. We recommend a systems evaluation before this season — here's how to schedule a free 15-minute consult." Equipment age campaigns run on a rolling trigger, not a seasonal one, so they fire year-round as systems age into the target window.

3. Safety Inspection Campaign

Particularly effective for plumbing (winterization, water heater flush) and electrical (panel safety check before high-demand months). These campaigns tap into homeowner concern about safety rather than comfort, which drives action even from customers who feel fine about their current system performance. Price the inspection as a low-barrier entry — $59–$99 — and use the visit to identify full-service work. The inspection ticket is small. The pull-through work is where the revenue lives.

4. Maintenance Plan Enrollment for Non-Members

Any customer who had a repair or service call in the last 12 months but isn't on a maintenance agreement is a warm target. A post-service enrollment campaign — sent 30–45 days after a job where no plan was signed — converts at higher rates than an immediate cross-sell on the day of service, because customers have had time to reflect on the cost of the repair and the value of preventing the next one.

How Seasonal Marketing Automation Actually Runs

Here's the step-by-step workflow for a pre-season tune-up campaign. The same structure applies to all four campaign types.

  1. Build your segment. In your field service platform — ServiceTitan, Housecall Pro, or Jobber — filter for customers whose last AC service date falls between 10 and 16 months ago and who don't have an active maintenance agreement. Export that list to your CRM or marketing tool, or use the platform's native campaign builder if it supports one.

  2. Write a four-touch sequence. Each touch is short and specific. Day 0 is an email with the campaign offer and a direct booking link. Day 3 is an SMS with just the booking link and one sentence of context. Day 7 is an email that re-frames the offer around limited availability — schedule fills before peak season, limited slots at tune-up pricing. Day 14 is a final SMS. The sequence runs over two weeks and stops the moment someone books.

  3. Wire the booking link to your scheduler. The link goes to your online scheduling page or a form. When a customer books, the automation detects the status change or tag and pauses the sequence immediately. No one gets a Day 7 follow-up after they've already booked.

  4. Tag non-responders for the next cycle. Contacts who complete the four-touch sequence without booking are tagged and held for fall. They're not removed. In six months, the heating-season trigger fires with a furnace inspection message. A customer who ignores the spring campaign at the right price point in September often converts.

  5. Let the post-booking workflow run. Confirmation email, day-before reminder, on-the-way notification, and post-job review request all fire through your standard service delivery automation. The seasonal campaign hands off to your normal job workflow the moment a customer books.

Configured correctly, this sequence runs without intervention. A spring pre-season campaign launched once fires every April without anyone on your team scheduling it.

The Tools That Run This

ServiceTitan Marketing Pro — The most capable option for HVAC and plumbing businesses doing $1M or more. Native customer segmentation by last service date, equipment type, and agreement status. Pre-built campaign templates for seasonal tune-ups, unsold estimates, and maintenance agreement enrollment. Contractors using Marketing Pro report 27% higher membership renewal rates, a 14% increase in year-over-year revenue, and a 14% lift in repeat job rate. Best for shops with established databases and volume that justifies the platform cost.

Housecall Pro Campaigns — The right fit for businesses in the $300K–$1.5M range. The Campaigns feature lets you filter by job type and last service date, write email and SMS sequences, and track bookings from each campaign directly in the platform. Less customizable than ServiceTitan, but meaningfully easier to implement. If you're currently managing your customer outreach through a personal inbox, Housecall Pro centralizes everything at an accessible price point for a 2–5 technician shop.

Jobber + GoHighLevel — Jobber's native marketing tools are limited to basic client notifications; it's built for operations, not campaigns. But Jobber exports cleanly to GoHighLevel via Zapier, giving you Jobber's job management strengths combined with GoHighLevel's full campaign automation. The combined cost runs $200–$350/month. GoHighLevel handles multi-touch SMS and email sequences, booking link generation, contact tagging, and campaign performance reporting. For businesses that don't want ServiceTitan's price or complexity, this combination covers everything in this post.

GoHighLevel standalone — If you don't use a field service platform, GoHighLevel functions as a full CRM, campaign automation tool, and booking scheduler. You'll import your customer list manually, build the service-date segments by hand the first time, and then the campaign workflows are identical. Platform cost runs $97–$297/month depending on plan.

One note on tool selection: the platform matters less than the discipline to run campaigns consistently. A Jobber-plus-GoHighLevel setup that sends three campaigns per year outperforms ServiceTitan Marketing Pro with no active campaigns every time.

What to Track Once Campaigns Are Running

Five numbers tell you whether the system is working:

  1. Campaign open rate. Target 30–40% for a past-customer database. Below 20% signals a subject line problem or list hygiene issue — addresses may be stale, or the sender name isn't recognizable. Past-customer emails dramatically outperform cold list benchmarks because you're not competing with marketing email — you're recognized in the inbox.

  2. Booking rate per send. A well-timed pre-season campaign should convert 8–15% of recipients into booked appointments. A 500-recipient campaign at 10% is 50 booked jobs. At the average HVAC tune-up ticket of $225, that's $11,250 in revenue from a single email sequence with zero ad spend.

  3. Revenue per campaign including pull-through. Track total revenue generated by jobs that originated from each campaign, not just the initial service ticket. Tune-up visits generate pull-through repair and equipment upgrade revenue — the real campaign ROI includes work identified during the visit. A $150 tune-up that surfaces a $1,400 capacitor replacement and a maintenance agreement sale is a $1,700 outcome, not a $150 one.

  4. Cost per booked appointment vs. paid acquisition. Your database campaign cost per appointment is platform fee divided by appointments booked — typically $5–$20 per booked job, depending on database size and platform cost. Compare that directly to your paid search cost per booked appointment ($70–$250). Track both monthly. The gap makes the case for investing in campaign infrastructure over ad spend every time.

  5. Shoulder-season capacity utilization. Track billable utilization rate by month — billable hours divided by total available hours, per technician. The goal is to see your two weakest months improve by 20–30 percentage points within the first year of running proactive campaigns. If March ran at 35% last year and runs at 60% this year, the system is doing its job.

Run these numbers at the end of each campaign cycle and adjust. A 9% booking rate that climbs to 14% after improving the subject line and SMS copy is a compounding improvement — it applies to every future send against the same list size.

The Calendar Fills Before the Phone Rings

The contractors generating consistent revenue through every season didn't find a better market. They built a system that shows up in customers' inboxes before the season forces a call, and they let it run.

Your customer database grows with every job you complete. Every new customer this month is a future campaign recipient next spring — someone who already knows your name, already trusted you with their equipment, and will hire you again if you simply reach out at the right time with the right offer. The alternative is paying $70–$150 per lead to reach strangers on Google, competing on price against every contractor bidding on the same keyword, while the warm audience you've spent years building sits untouched.

A pre-season campaign takes a few hours to build and runs automatically every year after that. The ROI compounds as your database grows and as you refine campaign copy based on what actually converts.

For HVAC businesses, seasonal campaigns are the upstream complement to the demand management systems in the HVAC seasonal surge guide — they fill the calendar before surge demand peaks, so you're managing volume from a position of capacity, not scrambling for it. For jobs where a campaign generates interest but the customer doesn't immediately commit, the estimate follow-up sequence covers the automation that closes jobs that stall after the first message. And for contacts who've been completely dark for 12 months or more, the dormant customer win-back guide covers the reactivation sequence that recovers measurable revenue from a lapsed list.

SMB Automation builds seasonal campaign systems for HVAC, plumbing, and electrical contractors — including customer segmentation, campaign copy, automation setup, and integration with your existing field service platform. Most implementations are live within two weeks.

Frequently Asked Questions

Q: How far in advance should I send a pre-season marketing campaign? Send pre-season campaigns 6–8 weeks before peak demand. For cooling season, that's mid-to-late April for most U.S. markets. For heating season, mid-to-late September. This window reaches customers while they're planning ahead, before they're managing an emergency — and before competitor inboxes flood the same contacts with the same offer.

Q: What booking rate should I expect from a database campaign? Past-customer campaigns to contacts with service in the last 12–18 months produce 8–15% booking rates on well-timed seasonal offers. Colder contacts — no service in 18–36 months — produce 3–8%. A 500-recipient seasonal campaign at 10% is 50 booked appointments. At a $300 average ticket, that's $15,000 in revenue from a single sequence with zero acquisition spend.

Q: What if my customer database is small? Even a 200-contact database produces measurable results. A 10% booking rate on 200 contacts is 20 appointments — at a $300 average ticket, that's $6,000 from a single campaign. The system scales automatically as your database grows. Every job completed this week is a future campaign recipient next season.

book a free consult to map your seasonal campaign system — including customer segmentation, campaign copy, and platform setup specific to your vertical and service area.

Ready to put this into practice?

Book a free 30-minute strategy call. We will walk through your business and tell you exactly what to build first.

Book a Strategy Call →
← Back to all articles