On paper, Serenity Roofing & Construction looks like a Houston roofing company that has it all figured out. 5.0 stars across 306 Google reviews — in roofing, that is genuinely rare, and it is earned one finished roof at a time. The work is clearly not the problem here.
The marketing is. When we audited their online presence, we found six gaps quietly costing them jobs: a map-pack presence of just 12% within five miles of their location, a mobile site scoring 35 out of 100 on Google’s own speed test, no video on the homepage, no social profile links, no structured data, and 306 five-star reviews with no markup to show them in search results.
And before you think ‘that’s a roofer, I run a plumbing company’ — stop. These are not roofing problems. These are local service problems. We see the exact same leaks inside HVAC, plumbing, electrical and restoration accounts every single week, because the pattern never changes: a rock-solid reputation in the real world, sitting on top of a marketing machine nobody is actually watching. Here is every gap we found, why each one costs real jobs, and what to check in your own business today.
| Finding | What the audit found | Why it matters |
|---|---|---|
| Weak local map-pack visibility (12.0% within a 5.0-mile radius) | Live Google Places search grid scan for "roofing contractor": appears in the top-3 map pack at only 12.0% of 25 checked points around the business, average rank 11.1. | Most customers only ever see the 3-pack at the top of local search results — falling outside it across most of the checked service area means most nearby searches never surface this business at all. |
| Slow mobile site (35/100 Google PageSpeed) | Google PageSpeed mobile performance score 35/100, LCP 9.3 s. | Homeowners on phones bounce before the page loads — paid clicks included. |
| No video content on the homepage | No YouTube/Vimeo/Wistia embed found in the page source. | Video builds trust fastest and keeps visitors on the page longer — a homepage with zero video is a missed, low-cost opportunity. |
| No social media profile links found on the website | No Instagram or Facebook profile link found in the page source. | No easy path for a visitor to check recent activity or reviews on social — and no compounding organic reach being built. |
| No LocalBusiness structured data | No JSON-LD structured data at all | Structured data is how Google reads your hours, service area, phone and rating. Without it Google guesses — and competitors who publish it get the rich result instead. |
| Reviews shown but not marked up for Google | Review content on the page with no aggregateRating/review schema | Marked-up reviews can show star ratings directly in search results, which lifts click-through on a listing you already rank for — free clicks you're currently leaving behind. |
Invisible in the map pack: 12% presence in their own backyard
We ran a live map scan for ‘roofing contractor’ across a five-mile radius around Serenity’s location — 25 points on the grid. They make the top three map results just 12% of the time, with an average rank of 11.1.
Picture the actual customer. A Houston homeowner after a storm, water stain spreading on the ceiling, phone in hand. They search ‘roofing contractor’ and call one of the three roofers Google shows them in the map pack. Eighty-eight percent of the time, that is not Serenity — even with a perfect five-star rating. Most homeowners never scroll past the 3-pack, so a business sitting at rank 11 effectively does not exist for the highest-intent searches in its own service area. This is the Google Business Profile battleground, and it is won with consistent reviews, categories, photos and local pages — not with a great reputation alone.
A 9.3-second mobile site is quietly burning paid clicks
Their website on a phone scores 35 out of 100 on Google’s own speed test, and the main content takes 9.3 seconds to appear. Nine seconds on a phone is an eternity — if this were our site, we would want that closer to three.
And here is the part that should bother every owner reading this: the site carries a Google Ads tag, so campaigns are live and paying for clicks right now. A slow site is not an inconvenience — it is a direct tax on your ad spend. You buy the click, the storm-damage homeowner bounces before the page even renders, and you get nothing for the money. Swap the scene to any trade and nothing changes: a burst pipe, a dead AC in August, a garage door that will not open. Nobody waits nine seconds.
The ads are protected from fraud — but nobody is counting the calls
One thing Serenity gets right that most local advertisers miss: there is click-fraud protection on the site, so bots and competitors are not freely burning the budget. Credit where it is due.
But there is no call tracking anywhere on the site. That matters because most roofing leads do not fill out a form — they call. Without call tracking, Google cannot see which clicks turned into phone calls, and which of those calls turned into signed jobs. The algorithm learns from a tiny, skewed slice of data, and the budget drifts toward whatever produces cheap form fills instead of actual revenue. If your own site has no call tracking either, the platform we install for clients is CallRail — click here.
No video on the homepage: the cheapest trust-builder, missing
There is no video anywhere on the homepage — no YouTube, no Vimeo, nothing. Roofing is a trust purchase, one of the biggest checks a homeowner ever writes.
Sixty seconds of the owner walking a finished roof, pointing at the flashing and the cleanup, builds more trust than any paragraph of stock copy on that page — and it costs almost nothing to produce. People hire people, especially in high-stress moments. A homeowner watching water come through the ceiling wants to see a face and hear a voice before they commit.
No social links: no way to check for signs of life
Not a single link to a Facebook or Instagram profile anywhere on the site. Maybe Serenity has an active page full of recent jobs — maybe not. From the website, a visitor cannot tell.
Homeowners absolutely check social pages before they call. They are looking for recent projects, real crews, and signs the business is alive and busy. Right now there is no path to any of it, which means every visitor who wants that reassurance has to go hunting — and most simply will not bother.
No structured data, and 306 five-star reviews Google can’t show
Under the hood, the site has no structured data at all — the small block of code that hands Google your hours, your service area, and your phone number on a silver platter. Without it, Google guesses, and competitors who publish it get the richer listing instead.
And this one stings because of that perfect rating: the reviews are displayed on the site, but there is no review markup — the small bit of schema code that lets Google display star ratings directly in the search results. Three hundred and six five-star reviews, and none of it appears as stars at the exact moment someone is choosing who to click.
The proof exists. The markup that would put it in front of searchers does not.
Star ratings in the search listing lift click-through on a position you already hold — free clicks, sitting on the table. This is a basic technical check, and skipping it hands a free advantage to every competitor who bothered.
Run this 10-minute check on your own business: search your main service keyword from three different spots in your service area and note whether you appear in the top 3. Pull your site up on your phone and time how long the main content takes. Ask whoever runs your ads — in writing — whether call tracking is installed. Look for one video, one social link, and ask your web person whether structured data and review markup are in place. If any answer comes back ‘no,’ you have the same leaks this company does.
Why this keeps happening: follow the retainer
Every single item above is a basic check. Map-pack presence, page speed, call tracking, video, social links, structured data, review markup. If someone is being paid to run this marketing, they should have caught all of it in month one.
So why does it get missed? Because the traditional agency model is structurally broken. Agencies collect monthly retainers while junior staff juggle 80 accounts, and nobody actually looks. Your account gets a templated setup, an automated monthly report nobody reads, and an invoice. Meanwhile the leaks keep draining money, month after month, year after year. That is the dirty secret of the average marketing retainer: the incentive is to keep the retainer, not to obsess over your account.
The AI shift: you can own this yourself now
Here is what most owners do not know yet. With AI, these exact fixes can now run automatically. Map-pack tracking, speed monitoring, call tracking, review markup — the whole checklist runs in the background without a junior account manager ever touching it.
And with a bit of guidance, you can take control, run your marketing in-house, and own the whole thing — never depending on an agency again. That is exactly what we build at Local Service Mastery: the coaching to understand your own numbers, and the AI platform that keeps every one of these basics handled whether or not anyone is ‘managing’ your account. Real lead generation for local service businesses starts with owning the machine yourself instead of renting attention from whoever holds the keys this month.
Local Service Mastery








