Most roofing contractors who run direct mail campaigns have no idea if they’re working. They send a batch of postcards, wait, and then guess based on whether the phone rang more than usual. That’s not a marketing strategy. That’s hope.
Tracking ROI on roofing direct mail campaigns isn’t complicated, but it does require you to set up the right systems before the mailers go out — not after. Here’s how to do it right.
Why Most Roofers Can’t Measure Their Direct Mail Results
The typical roofing mailer campaign fails at the measurement layer before it even gets started. The contractor sends 500 postcards with a generic phone number, gets a few calls, and has no way to connect those calls back to the mailer versus a yard sign, a referral, or a Google search.
Without a closed-loop tracking system, your direct mail ROI is invisible. You might be getting a 4x return and not know it. Or you might be losing money and keep sending more mail.
The fix is to treat each roofing direct mail campaign like a separate experiment with its own trackable inputs and outputs.
Set Up a Dedicated Tracking Phone Number
The simplest starting point is a unique phone number on every campaign. Services like CallRail or even a basic Google Voice number let you route calls through a dedicated line so you know exactly which calls came from a specific mailer.
When a prospect calls that number, you know where they came from. Log every call, ask where they heard about you (even if you already know from the number), and track how many turn into estimates and how many estimates close.
This single step turns an unmeasurable campaign into one with real data.
Use QR Codes That Link to Tracked Landing Pages
A phone number gets you call data. A QR code gets you digital behavior data on top of that.
Every ShingleDrop mailer includes a dedicated landing page and QR code at no extra charge. When a homeowner scans that code, you can track how many people visited, how long they stayed, and what action they took. That data tells you how compelling your offer was, not just whether the phone happened to ring.
If you’re running roofing direct mail campaigns without a tracked landing page, you’re flying blind on digital engagement. Someone might scan your code, visit the page, and call you three days later from memory. Without the QR data, that attribution disappears.
Learn more about how ShingleDrop works from job site to mailbox.
Calculate Your Cost Per Lead and Cost Per Job
Once you have call data and landing page data, the math is straightforward.
Say you run a 500-mailer campaign at $4,850. You get 22 calls, book 14 estimates, and close 5 jobs at an average ticket of $9,000. That’s $45,000 in revenue from a $4,850 spend. Your cost per lead was $220. Your cost per closed job was $970. And your return on that campaign was roughly 9x.
Now compare that against what you spent on Google Ads or Facebook last month. Run the same math. Most roofers who do this exercise for the first time are surprised by which channel actually wins.
Track these numbers consistently across campaigns and you’ll start to see patterns: which neighborhoods respond better, which time of year drives more calls, which offer generates more estimates. That’s where the real leverage is.
Track Time-to-Call and Follow-Up Windows
Direct mail doesn’t always produce same-day calls. Homeowners hang onto mailers. They think about it. They talk to a spouse. Then they call two weeks later.
Set a 60-day attribution window for roofing direct mail campaigns. If someone calls and says they got a mailer, log it even if weeks have passed. If you’re using a dedicated tracking number, calls to that line within 60 days of the send date count as campaign-attributed leads.
This matters because roofers who close their attribution window too early undercount their results and pull back on campaigns that are actually working.
Compare Results Across Campaigns to Find What Works
One data point is a data point. Multiple campaigns give you a pattern.
After 3-4 roofing direct mail campaigns tracked this way, you’ll know: which radius sizes drive more calls, which neighborhoods have higher response rates, which mailer designs or offers outperform others. You can start optimizing based on evidence instead of gut feel.
ShingleDrop’s hyper-targeted approach — mailing within a specific radius of a completed job — already gives you a head start on targeting. You’re not mailing the whole city. You’re mailing neighbors who can literally see the work you just did down the street. See pricing and start your first tracked campaign.
FAQ
How do I know if a call came from my direct mail campaign?
Use a unique phone number on every campaign. Services like CallRail assign trackable numbers that forward to your main line. Every call through that number is attributed to that campaign. If you’re using ShingleDrop, your dedicated landing page also captures digital engagement separately.
What’s a good response rate for roofing direct mail campaigns?
Standard postcard campaigns average around 0.5% response rates. Targeted neighborhood mailers like ShingleDrop typically see 3-5%, because you’re reaching people with an active reason to care about roofing — they live next door to a job you just completed.
How long should I wait before judging a campaign’s results?
Give it 60 days. Direct mail has a longer tail than digital ads. Homeowners hold onto physical mail longer than they hold onto a browser tab. A 30-day window cuts off a significant portion of responses.
Do I need special software to track direct mail ROI?
Not necessarily. A spreadsheet with call volume, estimate count, close rate, and revenue per campaign gets you 80% of the way there. Dedicated call tracking software adds more granularity but isn’t required to start measuring.
If you’re running roofing direct mail campaigns and guessing at results, you’re leaving money on the table either by cutting campaigns that work or continuing ones that don’t. Set up the tracking system first, then run the mail. Start your order and every ShingleDrop campaign comes with a tracked landing page built in.