Case Studies

Roofing SEO Case Study | Map Rankings Turned Around in 23 Days

A roofing contractor needed visibility before storm season, not after it. Here is exactly what changed the map grid in 23 days and why speed was possible in this case.

Roofing Contractor

Client

23 Days

Timeline

Roofing

Industry

Meet the Business

A roofing contractor with a full crew, proper insurance, manufacturer accreditations and a long list of finished work. Re-roofs, flat roof replacement, storm damage, gutter and fascia work, insurance jobs.

They came to us in the weeks before their busiest period with a specific, time-boxed problem: leads were arriving almost entirely through one lead-generation platform that took a cut of every job and sent the same enquiry to four competitors at once. They wanted their own pipeline, and they wanted it working before the storms.

An honest word about speed

Twenty-three days is not typical and we do not promise it. Most local SEO work shows meaningful movement between six and twelve weeks, and competitive markets take longer. This account moved quickly because the fundamentals were broken rather than missing — the business had genuine authority that was being actively suppressed by fixable errors. Repairing a blockage is faster than building from nothing.

The Challenge

The opening grid showed a listing that was effectively switched off across most of its own territory. Our first job was to find out why, because the business itself looked strong on paper.

  • A duplicate Google listing was cannibalising the real one. An old, unclaimed profile from a previous address was still live, splitting reviews and signals between two entries and confusing Google about which was current.
  • The primary category was wrong. The listing was set to a general construction category rather than Roofing Contractor, which excluded it from the searches that mattered most.
  • The address on the listing did not match the website or the directories. Three variations were in circulation after a move that was never fully propagated.
  • Storm damage and insurance work were invisible. The highest-value, highest-urgency service the company offered had no page and no service entry anywhere.
  • Proof existed but was unpublished. Hundreds of job photographs sat on phones. The website showed six stock images.

None of these are slow problems. They are all problems that can be corrected in days, and every one of them was holding the listing down.

What We Actually Did

Week One: Remove the Blockages

  • The duplicate listing was found, claimed and merged into the live profile, consolidating the review history and ending the split. This alone is frequently the single biggest unlock on an underperforming listing, and it is invisible unless somebody goes looking for it.
  • Primary category changed to Roofing Contractor, with secondaries for Flat Roof Contractor, Gutter Cleaning Service and Siding Contractor.
  • One canonical address, phone and business name agreed and pushed out across every directory, with the stale variants corrected or removed.
  • Service area rewritten as a named list of towns rather than a radius.
  • Every service entered with its own description, storm damage and insurance claims included and given prominence.

Week Two: Publish the Proof

  • Job photography, finally uploaded. Around 120 images from real jobs went onto the listing and the site — before, during and after shots, at properties in the towns being targeted.
  • A storm damage page built for urgency: what to do in the first hour, how the insurance process works, what a temporary make-safe involves, and how fast a crew can attend.
  • Service pages for each roof type rather than one combined page, so a search for flat roof replacement could match a page about flat roof replacement.
  • Accreditations and insurance made visible on every page. In roofing, trust signals are conversion mechanics, not decoration.
  • A review push to recent customers, concentrated on jobs completed in the target towns.

Week Three: Consolidate

  • Service schema with a named area served applied across the service pages — never LocalBusiness markup on a page that is not a physical premises.
  • Speed and mobile work. Roofing enquiries peak on phones immediately after bad weather, often on a poor connection. The site had to load in seconds.
  • Google Posts started, weather-led, with make-safe advice during the first storm of the season.
  • Call tracking installed so the client could see, for the first time, where enquiries were actually coming from.

The Results

The two grids below were run from the same set of search points, twenty-three days apart. Nothing about the company changed in between — same crew, same prices, same van. What changed is what Google could see.

640080297 3370983676390864 4421824012119347353 n
The same search points, 23 days apart. Left: at the start. Right: after the duplicate listing was merged, categories corrected and proof published.
23 daysBetween the two grids
1Duplicate listing found and merged
~120Real job photos published
Why the duplicate listing mattered so much

Two live profiles for one business split every signal between them — reviews, photos, clicks, calls. Google has to guess which one represents the real company, and while it is guessing, neither ranks properly. Merging them does not add anything new. It simply stops the business competing with itself.

Before and After

MeasureAt the startAfter 23 days
Google listings for the business2 (one stale duplicate splitting signals)1, merged and verified
Primary categoryGeneral constructionRoofing Contractor
Address variants in circulation31
Storm damage / insurance contentNone anywhereDedicated page and listed service
Real job photos published0 (6 stock images)Around 120
Source of leadsAlmost entirely a paid lead platformOwn pipeline running alongside it

Services Provided

  • Local SEO and duplicate listing resolution
  • Google Business Profile rebuild
  • Citation cleanup and NAP consolidation
  • High-intent service page content
  • Photo asset production and publishing
  • Call tracking and reporting setup

What the Client Said

I had no idea there were two of us on Google. Nobody had ever mentioned it in four years. Getting that sorted plus actually putting our own photos up did more in three weeks than the lead platform did in a year — and I own this one. Owner — roofing contractor

Key Takeaways

Fast results come from removing blockages, not from working harder

This account moved in 23 days because the business already had authority that was being actively suppressed — a duplicate listing, a wrong category, three addresses. Clearing that is fast. Building authority that does not yet exist is not, and any agency promising the first timeline for the second job is selling you something.

Always check for duplicate listings first

Old addresses, previous owners, a franchise that once operated from the unit. Duplicates are common, invisible from the front end, and quietly expensive. It is the first thing worth auditing on any underperforming listing.

Your photos are the asset you already own

Every roofing crew has thousands of job photos sitting on phones. Published, they are proof, freshness signals and conversion material all at once. Unpublished, they are nothing.

Owning the pipeline changes the economics

A lead platform sends the same enquiry to four contractors and charges each of them for it. A map listing sends one enquiry to one business. The second kind compounds; the first kind is rent.

Is something suppressing your listing?

Duplicates, wrong categories, mismatched addresses. These are quick to find and quick to fix — if someone looks. We will look, free.

  • A duplicate and consistency audit across the directories
  • A visibility grid across your service area
  • A prioritised list of what is fixable this month
  • No contract, no obligation
Book a free strategy session Our pricing is published here.

Ready to Achieve Similar Results?