$300 a Click vs $15 a Door: A Calgary Roofer's CAC Math After a Hailstorm
When Calgary hail hits, Google CPCs for roofing spike to $15–$40 and CPLs blow past $300. Here is the unit-economics breakdown of what door hangers cost per closed job by comparison.
When the July 2025 Stampede storm dropped hail through NW Calgary and tagged $164 million in insured property losses in a single evening, the Google Ads auction for "roof repair Calgary" moved inside four hours. Contractors who had standing campaigns watched their CPCs go from $11 to $28 overnight. Some paused spend entirely. Others raised daily budgets into the hundreds and watched CPLs climb past $300 without a corresponding lift in close rate.
This post does the math on both channels — Google paid search and GPS-tracked door hangers — on a per-closed-job basis. Not per click. Per closed job. That is the number that tells you whether your acquisition spend is rational.
What you actually pay Google for a roofing lead in Calgary
Start with the click. WordStream's 2025 construction/contractor vertical benchmarks put the average Google CPC for roofing at $10.70 nationally. Calgary runs materially higher — the pool of certified contractors bidding the same keywords is dense, and storm events create demand spikes that push CPCs to $15–$40 within hours of the weather event.
The CPL spread above is not a worst-case scenario. It comes from the same benchmarks used in LocaliQ's 2025 home-services report and from conversations with Calgary roofing operators in our network. It reflects a 5–10% landing page conversion rate — which is approximately what you get when a homeowner who just typed "hail damage roof" lands on a roofing homepage that was not built specifically for that search intent.
Conversion rate is the multiplier that kills Google math in roofing. Clicks are expensive. But what turns a $10 average click into a $200 CPL is a 5% conversion rate. The auction is priced on the assumption that you convert — and if your page does not convert at or above that rate, you are subsidizing competitors who do.
What the same money costs on a door hanger
StreetDrop's per-zone price for a Calgary zone is $349 flat — design, print, and GPS-tracked delivery of 4,000 door hangers included. Based on the live roofing accounts in our network, a post-storm drop in an impacted postal code generates 12–30 inbound calls in the first 14 days.
| Metric | Conservative | Aggressive |
|---|---|---|
| Inbound calls per zone | 12 | 30 |
| Close rate (offer-dependent) | 30% | 50% |
| Closed jobs | 3.6 | 15 |
| Spend | $349 | $349 |
| Cost per closed job | $97 | $23 |
At the conservative end — 12 calls, 30% close — you are paying $97 per closed job. At 30 calls and 50% close, that drops to $23. Neither number is a best-case fantasy. The difference between conservative and aggressive outcome is almost entirely offer quality: a hanger that leads with "free hail inspection, no obligation" outperforms one that leads with a 10% off coupon in this specific call-to-action context.
For comparison, if you are paying $200 CPL on Google and closing at 30%, your cost per closed job on search is $667.
Why the close rate gap favours hangers in a post-storm context
The Google CPL number understates the disadvantage because it ignores what the lead looks like when it arrives. A homeowner who finds your ad through a "hail damage Calgary" search is also in the same tab with three competitor ads, a Local Services tile, and two organic results. The lead you receive from Google is a lead who comparison-shopped before they called.
A homeowner who calls from a door hanger received your piece, held it, put it on the counter, and called when they were ready. They are not in a parallel comparison session. The typical door-hanger caller has already made a provisional decision to call you specifically — which is why close rates on inbound-from-hanger calls in trades run 30–55%, versus 15–25% for cold paid-search leads in the same verticals.
That close-rate differential compounds the already-wide per-lead cost advantage.
The one-job payback calculation
For a Calgary full replacement — conservative ticket of $8,000, industry average closer to $12,000–$15,000 — the math on one closed job looks like this:
At a $12,000 average ticket and a 40% gross margin (consistent with a well-run owner-operated Calgary roofing company), one closed job generates $4,800 in gross margin. The zone cost $349. That is a 13.8× gross margin return on a single zone from a single closed job. You need a single closed job out of every 4,000 hangers to be well ahead on margin. You should be closing 3–10 from a well-targeted post-storm zone.
This is why the roofing playbook on StreetDrop's industry page opens with "one closed roof pays the campaign back 30 times over." That is not marketing math. It is what you get at an $8,000 ticket on a single zone when costs are fully loaded.
Where Google still earns its spend
This post is not making the case that Calgary roofers should zero out their Google budget. Two channels where search still outperforms door delivery in roofing:
- Branded campaigns. If a homeowner remembers your name from the hanger and searches it, you need to own that result. Branded CPCs are $1–$4 and conversion rates are 20–40%. That budget is a table stake.
- Google Local Service Ads (LSA). LSA's pay-per-lead model with a capped rate and Google's guarantee badge is a different product from auction CPC. If your LSA CPL is under $80 with a 25% close rate, it is competitive with door hangers on the per-job math. But LSA inventory in Calgary for roofing post-storm is often exhausted within hours of the weather event.
The argument here is specifically about non-branded, open-auction paid search in the storm-response window — which is where the $300+ CPL benchmarks live.
How to run both channels in parallel
The most effective post-storm acquisition structure we see from Calgary roofing operators combines:
- Door hanger drop (StreetDrop): deployed in the impacted postal codes within 48 hours, targeting the physical addresses where the storm scored
- Branded Google campaign: capped at $50–$100/day to capture name-search intent generated by the hangers
- LSA: if your roster rating and Google verified status are in good standing, re-enable LSA for the storm window at the maximum daily cap
The door hanger generates the awareness. The branded search campaign captures the homeowners who saved the hanger, forgot the phone number, and Googled the business name. You need both, but you need to know which is doing the heavy lifting — and in the storm window, the hanger is doing it at a fraction of the cost.
Watch a live Calgary route
Live GPS proof — opens the StreetDrop portal demo.
Every StreetDrop zone produces a GPS breadcrumb trail you can overlay against your inbound call log. That lets you close the attribution loop: the streets walked correlate to the calls received, and you can verify the spread between channels on your own books inside one billing cycle.


