Every agency competing for this search can show you a chart going up and to the right. So can a hailstorm. Before you sign anything, it is worth knowing how to tell which one you are looking at, because almost nobody selling to you will explain it.
A roofing SEO company works on what makes a roofer findable in Google: the Business Profile, reviews, service and area pages, site speed and content. Most also handle reporting. The work itself is broadly similar across agencies. What differs is what they own, who else they represent nearby, and how they report.
The short version
The services list is not where roofing agencies differ. All of them will say profile, reviews, pages, speed, content. Ask instead who else they work for in your metro, what happens to your assets the day you leave, and how they separate their results from the weather.
Roofing is one of the few trades where an outside event can produce, on its own, results that look exactly like a successful campaign. Every metric below has at least two explanations.
| What gets shown | What else could explain it | What to ask for instead |
|---|---|---|
| Traffic up sharply this quarter | A storm in your metro. Everyone selling roofs saw the same lift, including companies with no agency at all. | The same quarter compared against your own non-storm months, year over year. |
| Lead volume multiplied | Season. Roofing demand is not flat, so a rise from February to June proves the calendar works. | Leads per hundred sessions. That ratio is much closer to work actually done. |
| Ranked first for a city term | You may already have ranked there, or the term may have almost no search volume behind it. | Rank, plus the search volume for that exact term, plus a verifiable before date. |
| Reviews climbing | Your crew. If the jobs went well and someone on site asked, that happened without the agency. | Who asked, through what system, and what the rate was before they started. |
| Calls up month on month | Storm, your own canvassing, a yard sign on a busy street, or a referral wave. | Source attribution on the call records, not a total. |
| Impressions in the hundreds of thousands | Almost anything. Impressions are the easiest number on the report to move and the least connected to revenue. | Booked jobs. If that is not available yet, say so rather than substituting impressions for it. |
None of this means an agency showing you a spike is being dishonest. It means the spike does not answer the question on its own, and a good one will volunteer that before you ask.
This is the structural problem with buying roofing marketing, and it has nothing to do with whether the agency is any good.
| When you sign | What usually happens | What to do about it |
|---|---|---|
| Mid-storm, cash coming in | The easiest month to say yes and the worst month to judge anything. Whatever gets built will not have had time to show, and the results you see during the term will be tangled up with the weather. | Sign if you want, but set the review date for a quiet month, not a busy one. |
| Start of your season | You pay through the busiest months, when you would have been fine anyway, and the work matures just as demand drops. | Accept that the first season is the build and the second is the return. If that is not affordable, it is the wrong time to start. |
| Deep in the quiet months | Hardest to justify, best time to do it. Ranking earned now is in place before demand arrives. | This is the sequencing argued in roofing SEO, and it is the reason agencies rarely sell hard in the off-season. |
The practical question is not how long the term is. It is whether the term contains at least one quiet stretch where you can see what the work produces without the weather helping. A twelve-month agreement that spans a full cycle tells you more than a rolling monthly one that never does.
In some trades this barely matters. In roofing it decides whether you are the client or the competition.
Map pack results are weighted by distance from the searcher, which is why one office rarely holds a whole metro. Storm demand concentrates in specific neighborhoods rather than spreading evenly. Put those two facts together and an agency with three roofing clients across one metro is not serving three separate markets. It is allocating the same searches between them, and it cannot make all three first in the same suburb.
This is not necessarily disqualifying. Plenty of agencies run territory rules, and some are open about running several clients in one city with clear geographic separation. What matters is that you find out before signing rather than during a hail season. Three questions cover it: how many roofing clients do you have within fifty miles of me, do you offer territory exclusivity and in writing, and what happens to my rankings if a bigger roofer in my metro approaches you next year.
The answers matter less than the reaction. An agency that has thought about it will answer in a sentence. One that has not will change the subject to their process.
It would be strange to publish a page about interrogating agency results and then show you one you are supposed to accept on trust.
A local business we worked with went from 36% to 92% Google Business Profile visibility, meaning its listing surfaced for nearly every eligible local search instead of about a third of them.
Source: a LeadsFortress client engagement. Different sector to home services, and the trade case study is still in progress.
Now run the table above on it. It is not roofing, and it is not even a home service trade, so nothing about storm seasonality or crew capacity was tested. It is one engagement, not a pattern. And a profile moving from a third of eligible searches to nearly all of them says the profile was in poor shape to begin with, which flatters the work.
What it does show is that rebuilding a Business Profile end to end moves visibility further than adjusting it, which is the mechanism, and mechanisms carry across sectors better than numbers do. Our roofing case study is still in progress. When it exists we will publish it with the same caveats attached, including the ones that make it look worse.
| Asset | Should be in your name | Why it matters more in roofing |
|---|---|---|
| Google Business Profile | Yes, as primary owner | This is the storm-season asset. If somebody else holds it, you cannot change agency between seasons without risking the one thing that produces work during them. |
| Domain and website | Yes | Rebuilt service-area pages take months to mature. Losing them means starting the lead time again from zero. |
| Review history | Yes, it lives on the profile | Follows the profile. Which is the point above, from the other direction. |
| Call tracking numbers | Yes, portable | Numbers printed on trucks, yard signs and door hangers outlive any contract. A number you cannot port is a marketing spend you abandon. |
| CRM records and lead history | Yes, exportable | Past customers are a genuine roofing lead source. Losing the list loses the replacements coming due in five years. |
| Analytics and Search Console | Yes, as owner | Without history you cannot run the weather-versus-work comparison on the next agency either. |
Ask for this list before the contract, not in the exit conversation. A company that intends you to stay because leaving is painful will hesitate on at least two rows.
The Growth Score checks all five engines against your business and estimates what each gap is worth per month. It will also tell you whether visibility is the thing to buy right now or whether something cheaper is costing you more. Free, and yours whether we work together or not.
Get My Complimentary Growth Score →Related: LeadsFortress for roofing companies · Answering and follow-up