How to Build a Year-Round Roofing Pipeline (Not Just Storm Season)

Mar 31, 20267 min readBy Mailbots Team

Every roofing company has the same problem: storm season is a goldmine, and the other 7-8 months are a grind.

You spend Q2 and Q3 drowning in work. By November, the phone stops ringing. Your crew sits idle. Your best guys start looking for winter work. By February, you're wondering if you should have saved more during the busy months.

This feast-or-famine cycle kills more roofing companies than bad workmanship ever has.

Here's how to build a pipeline that generates leads every month of the year, using a system that costs less than $2,000/month and doesn't depend on storms.

Why is most roofing marketing seasonal?

The typical roofing marketing playbook:

  1. Wait for storms
  2. Door-knock and mail the affected neighborhoods
  3. Book 3 months of work
  4. Profit
  5. Slow months hit, then panic
  6. Spike Google Ads budget to compensate
  7. Pay $187/lead during the quietest months (terrible efficiency)
  8. Repeat

This is reactive marketing. You're waiting for external events to generate demand. When storms happen, you feast. When they don't, you starve.

The alternative: proactive marketing that generates leads year-round, independent of weather.

What does a 12-month roofing mail calendar look like?

Here's a month-by-month direct mail plan that keeps your pipeline full regardless of storm activity:

January: New Year Inspection Push

Target: Homes 15+ years old in your primary zip codes Volume: 500 postcards Message: "New year, good time to check your roof. Free inspections, so let's make sure you're set for whatever 2026 brings." Cost: $675

January is dead for most roofers. That's exactly why you mail now. Zero competition for attention. Homeowners are in "new year, handle my to-do list" mode.

February-March: Pre-Storm Season

Target: Homes 12+ years old in storm-prone areas Volume: 1,000 postcards (split across 2 drops) Message: "Storm season starts in [X weeks]. Your roof is [age] years old. A 30-minute inspection now could save an emergency later." Cost: $1,350

This is your most important campaign of the year. Pre-season bookings fill your March-April calendar before the storm chasers arrive.

April-May: Spring Maintenance + Radius

Target: Dual campaign, cold outreach plus radius mail from spring jobs Volume: 500 cold + radius cards from completed jobs (variable) Message (cold): Gutter/flashing/vent boot inspection offer tied to spring rains Message (radius): "We just finished a roof on your street..." Cost: $675 + radius

Spring rains create urgency for waterproofing-related issues. This isn't replacement-level work necessarily, but $500-$2,000 repair jobs keep the crew busy and build your customer base for future replacements.

June-August: Storm Response (If Applicable)

Target: Storm-affected neighborhoods (HailTrace data) Volume: As needed, 500-5,000 per storm event Message: Storm-specific inspection offer with insurance education Cost: Variable

This is your bread and butter. But the difference between you and the roofers who only do storm work: you already have a full calendar going into storm season. You're adding storm contracts on top of a healthy baseline, not depending on storms for survival.

September: Fall Pre-Winter Campaign

Target: Homes 15+ years old, especially those with known leak-prone roof types Volume: 500 postcards Message: "Winter is hard on older roofs. Ice dams, snow load, and freeze-thaw cycles. If your roof has weak spots, winter finds them. Free pre-winter inspection." Cost: $675

September is when smart homeowners prepare for winter. Your postcard catches them in planning mode.

October-November: Customer Reactivation

Target: Past customers who haven't booked in 18+ months Volume: 200-300 postcards Message: "Hey [Name], it's been a while since we worked on your roof. Want us to do a quick check before winter? We like to keep an eye on our work." Cost: $270-$405

Past customers are your highest-converting audience. A reactivation campaign to past customers pulls better than a cold list. Across all our tracked campaigns the average is 1.89% and the best was 4.39%, and a list of people who already paid you sits at the top of that range rather than the bottom.

Even if the inspection doesn't lead to a job, you've maintained the relationship. That customer will call you first when they do need work, and they'll refer friends in the meantime.

December: Referral Program Push

Target: All customers who completed a job in the past 12 months Volume: 200-400 postcards Message: "Thanks for a great year. If you know anyone who needs roofing work, send them our way and we'll give you $200 toward any future service." Cost: $270-$540

December is relationship maintenance. The referral ask costs you $200 in future credits per referral, but each referred customer has a customer acquisition cost of near zero and a lifetime value of $12,000+.

What does the full year cost?

Month(s)CampaignVolumeCost
JanuaryNew Year inspection500$675
Feb-MarchPre-storm season1,000$1,350
April-MaySpring maintenance + radius500+$675+
June-AugStorm responseVariableVariable
SeptemberPre-winter500$675
Oct-NovCustomer reactivation250$338
DecemberReferral push300$405

Annual base cost (excluding storm campaigns): ~$4,118

That's $343/month for a year-round roofing pipeline.

Add radius mail from completed jobs (50 cards per job, average 8 jobs/month = 400 cards/month = $540/month) and your total annual direct mail budget is approximately $10,600.

What does the calendar return?

Using conservative estimates (1.5% response on cold, 3% on warm, 30-40% close rate):

From cold prospecting (2,500 cards/year): 37 leads โ†’ 12-15 contracts โ†’ $156,000-$195,000

From radius mail (4,800 cards/year): 120 leads โ†’ 40-48 contracts โ†’ $520,000-$624,000

From reactivation (250 cards/year): 10 leads โ†’ 6-8 contracts โ†’ $78,000-$104,000

From referral program (300 cards + credits): 15-20 referrals โ†’ $195,000-$260,000

Total annual revenue from direct mail: $949,000-$1,183,000 Total annual mail budget: $10,600 ROI: 89-112x

Even if these numbers are wildly optimistic and you cut them by 75%, you're still looking at $237,000-$296,000 in annual revenue from $10,600 in postcards. A 22-28x return.

The Key: Consistency

The roofers who build year-round pipelines aren't doing anything complicated. They're mailing postcards every month. That's it.

No fancy marketing stack. No $5,000/month agency retainer. No complex digital funnel. Just handwritten postcards to targeted homeowners, month after month.

The consistency is what makes it work. A one-time blast gets you a one-time result. A 12-month system builds familiarity, reputation, and compound referrals.

After year one, your target neighborhoods know your name. After year two, you're the default roofer for those zip codes. That's a moat that no Google Ads budget can replicate.

Start With Month 1

Don't try to build the full 12-month calendar today. Start with whatever month you're in. Send 500 postcards to homes with aging roofs in your best zip code.

Track the responses. Measure cost per lead. Close the deals. Then do it again next month.

Mailbots.ai writes real pen-and-ink postcards. $1.35/card, per-piece delivery tracking. No monthly platform fees, no contracts. Build a roofing pipeline that works in January just as well as July.

Frequently Asked Questions

Does the calendar ever hit a volume discount?

Not as written, and that is a deliberate trade. Every drop here lands between 200 and 999 cards, which is the $1.35 tier. The $1.20 price starts at 1,000 cards in a single order, and a single order carries a single message. Consolidating January and February into one 1,000-card order would save $150 and cost you the two different messages that made each campaign work.

Where do the lists for each campaign come from?

Two places. Cold campaigns come from county assessor data filtered by year built and owner-occupied status, which is public and cheap. Reactivation and referral campaigns come out of your own job history, which is the better list and the one most roofers never export. If your invoicing software holds five years of addresses, that export is the December campaign.

How do I tell which campaign actually produced the work?

Keep one campaign per order and let the order be the unit of measurement. Every card carries a unique QR code tied to that address, so a scan maps back to a specific drop instead of to a vague good month. Tag the lead in your CRM the day the call comes in, while you still know which card it was. Nobody reconstructs this accurately in January.

Should I pause the calendar during a busy storm month?

Pausing when you are slammed is exactly what creates the February hole. The January campaign exists because you were buried in June. Storm drops are separate orders anyway, so skipping a cold drop saves $675 now and costs you a quarter of pipeline later. If capacity is the real constraint, cut the drop size rather than the month.

Ready to get started?

Real estate investors beat their printed mail 5.4x with pen-and-ink handwriting. List, message, and tracking included at one per-card price.