Twelve times the search clicks for an Oakville roofing company.
Peace of Mind Exteriors had the reviews, the showroom and a 240-page website that Google was ranking on page five. Keyo built the site, then rebuilt what was underneath it: canonicals, schema, redirects, headings and 239 landing pages brought to one standard. Monthly Search Console clicks went from 57 to a peak of 694, and the company now shows in the map pack at all 49 points of a five mile Oakville grid for roofing companies oakville.

Search Console figures are the client's own, read through the Ahrefs connector. Local Falcon scans the map pack from a grid of points around the business. The audit score comes from Keyo's crawl of the live site after remediation.
A big site with a small footprint.
Peace of Mind Exteriors is a family-run roofing and exteriors contractor with a showroom on York Street in Oakville, serving Oakville, Burlington, Mississauga, Hamilton and 21 cities across the Golden Horseshoe. A 5.0 Google rating across 144 reviews and a 5.0 on HomeStars. The reputation was never the problem.
The website was. Keyo built it in 2024 as a roughly 240-page Squarespace site covering every city and service, and by December 2024 Google was showing it at an average position of 53 with 57 clicks a month. City pages pointed their canonical tag at the homepage, duplicate business schema competed with itself, redirect chains ran through HTTP, and an embedded financing calculator was adding a second H1 to every page it sat on.
The priority term told the story. For roofing oakville, the dedicated page sat at position 25 with 19,945 impressions and a 0.25% click rate while the homepage outranked it. Three URLs were competing for the one search that matters most, and none of them was winning.
What was in the way
- Every city page carried a canonical tag pointing at the homepage
- Duplicate LocalBusiness schema, one from Squarespace and one custom, competing on every page
- Redirect chains and HTTP links inside the internal linking
- A financing calculator embed adding a second H1 to 35 pages
- Three URLs competing for roofing oakville, with the dedicated page buried at position 25
- Review counts that differed from page to page: 95+, 120+, 142 and 160+ on the same site
- A Business Profile with the wrong primary category and a schema conflict with the site
What we cleaned up before we built anything.
Two hundred and forty pages is a lot of surface area for a mistake to repeat on. Every fix was made once, at the template level, then verified across the full page list by a rendered crawl.
Canonicals, redirects and schema
City-page canonicals pointed at themselves, HTTP to HTTPS chains collapsed, and one valid LocalBusiness graph with corrected hours, map link and service area replaced the duplicate.
One H1 per page
The financing calculator embed was rebuilt so it stopped injecting a heading. The homepage and the Oakville roofing page were given different jobs so they stopped competing.
Trust proof brought to one standard
All 239 landing pages checked and corrected to the same rating and review count, including 43 nested roofing pages that were still live with the old numbers.
Business Profile set straight
Primary category set to Roofing contractor, the website field cleaned, hours confirmed, and the Squarespace business block cleared so the profile and the site stopped contradicting each other.
Pages, posts and a homepage built for the searches that book roofs.
One page per service and city, on one flat structure
Roofing, roof repair, roof inspection, metal roofing, siding, gutters, fascia and soffit across 21 cities, each at a single service-city slug and linked from the hub pages above it.
A homepage rebuilt around Oakville roofing
Trust chips, a financing calculator, twelve portfolio tiles, nine real review excerpts, an FAQ with FAQ schema and city link cards, in one self-contained code block that escapes the Squarespace grid.
Roofing guides that rank on their own
Best roofing materials for Canadian winters, roof replacement cost in Ontario, when to replace shingles, ice and water shield. Several hold the top three nationally.
Three articles a week, produced ahead
Thirteen posts a month, scheduled Monday, Wednesday and Friday, each verified live at its public URL the day after.
Reviews answered, by name
Every Google review gets a reply that names the customer, the project and the crew lead who was on it.
Three articles a week, every week.
Roofing content is produced the month before it publishes: thirteen articles, scheduled Monday, Wednesday and Friday, each with its metadata, schema and internal links checked before the slot arrives.
Scheduled is not delivered. Every page is submitted to Google the day it goes live and checked at its public URL the day after.
Search Console clicks, from 57 a month to 694.
Search Console is the client's own data: real clicks from Google, not an estimate. Peace of Mind was at 57 clicks a month in December 2024 and an average position of 53. The technical rebuild landed in June 2025. Clicks rose in nine of the next ten months, peaked at 694 in April 2026, and the average position across the whole site reached 11.5.
| Position | Search | Searches / mo |
|---|---|---|
| #7 | roof repair oakville | 200 |
| #8 | oakville roofing | 200 |
| #8 | roofing oakville | 200 |
| #4 | gutter cleaning oakville | 100 |
| #6 | gutter repair oakville | 200 |
| #9 | door installation oakville | 300 |
| #2 | wind damage repair | 150 |
| #5 | roof replacement cost ontario | 200 |
| #3 | slate roofing | 200 |
| #1 | best roofing material | 80 |
Ahrefs organic keywords, Canada, September 10, 2026. Positions are Ahrefs' last check, not a live result, and shift daily. For a roofer the map pack matters more than the organic list, which is why the grid below counts more.
Before and after, from Peace of Mind's own accounts.
Search Console figures read through the Ahrefs connector on September 10, 2026. Local Falcon grids scanned August 5, 2026. Nothing here is a mock-up.
December 2024. Fifty-seven clicks for the month across a 240-page site, with the average result sitting on page six.
April 2026. 694 clicks, ten times the impressions, and the average position on the edge of page one.

Found in 49 of 49 grid points, average rank 6.8, on a 7 by 7 grid with a five mile radius. Green is the top three.

Found in 45 of 49 grid points, average rank 5.7. Top three across south and central Oakville, where the showroom is.
Backlinks, neighbourhoods and the map pack.
The organic side is built. The gap now is authority: the top Oakville competitors hold far more referring domains, so link acquisition is the next program. Neighbourhood pages for Bronte, Glen Abbey and Joshua Creek follow, and the weekly map-pack scan for oakville roofing keeps running so a slip shows up the week it happens, not the quarter after.
If the ambition is serious, let's talk.
We review every inquiry personally and take on a handful of new engagements a year, for established businesses that are ready to invest in growth.
From $2,500/month · Established businesses · Month to month