A 4.9-star veteran-owned roofer — spending on ads, invisible on most of the map, and unable to trace a single lead back to its source.
The credit first, because it’s earned: 4.9 stars across 289 Google reviews in Houston, and a veteran-owned operation at that. Roofing is a trade where one bad crew or one mishandled insurance claim turns into a public one-star story — holding 4.9 across nearly three hundred reviews means the work gets done right. None of this review touches the roofing.
What we audited is the public marketing setup alone — dcpinesroofing.com’s own page source plus their public Google listing, checked on August 17, 2026. Seven gaps surfaced, and every one of them sits on the routine checklist Local Service Mastery runs before a single growth dollar gets spent.

Top-three map pack at just 4% of nearby points — gone entirely at a third of them
Verified with a live map-grid scan on August 17, 2026.

What’s visible
We ran live "roofing contractor" searches from 25 points spread across a five-mile radius around the business. DC Pines reached the top-three map pack at 4% of the grid. Where the listing does rank, it averages position 8.2 — and at 32% of the checked points it doesn’t appear in the results at all.
Why it costs jobs
A homeowner staring at a leaking roof doesn’t browse page two of Google Maps — they call one of the three names the map pack puts on top. Sitting at #8 on average means DC Pines is visible-but-skipped; missing entirely at a third of the grid means whole neighborhoods never see them at all. The encouraging half: averaging single digits where they do appear means the listing already has real trust behind it. Widening that footprint is mechanical work — a fully built-out Google Business Profile plus the local signals around it — and 289 reviews at 4.9 stars is more raw material than most roofers in the radius will ever collect.
Mobile site scores 26/100 — 18.8 seconds before the page is usable
Verified with Google PageSpeed Insights on August 17, 2026.
What’s visible
Google’s own PageSpeed test gives the mobile site a performance score of 26 out of 100, with the largest piece of content taking 18.8 seconds to render on a phone.
Why it costs jobs
Roofing searches cluster around storms and leaks — urgent moments, almost always on a phone, with zero patience attached. Google’s own research has shown for years that most mobile visitors leave a page that takes more than a few seconds; nearly nineteen is several multiples past that line. And this one compounds with the paid findings below: every Google Ads click DC Pines buys lands on this same slow page, so the speed problem taxes the ad budget directly, before a single word of copy gets read.
Google Ads running with no call tracking — Google can’t see which clicks book jobs
Verified from the page source on August 17, 2026.
What’s visible
The homepage carries a live Google Ads conversion tag — someone is paying for clicks. But we found no call-tracking or dynamic-number-insertion script anywhere in the page source.
Why it costs jobs
Roofing leads pick up the phone — a homeowner with water coming through the ceiling is not filling out a contact form. Without call tracking, the ad account can’t connect those calls back to the keywords and ads that produced them, so Google Ads optimizes blind: it can’t tell a booked roof replacement from a wasted click. The fix is an afternoon of work — call tracking software (click here for the one we recommend) swaps in tracking numbers and feeds every call back into the account as a conversion. Until that exists, every budget decision is a guess.
No analytics on the site at all
Verified from the page source on August 17, 2026.
What’s visible
The same source pass found no GA4 tag and no Google Tag Manager container — the website runs with no analytics of any kind.
Why it costs jobs
Pair this with finding 3 and the picture gets stark: money is going out the door on ads, and nothing on the site measures what comes back. No analytics means no answer to which channels produce calls, which pages lose visitors, or whether the site converts better this month than last. Installing measurement is free; running paid traffic without it is paying to stay ignorant.
No click-fraud protection in front of the ad spend
Verified from the page source on August 17, 2026.
What’s visible
The page source shows the Google Ads tag but no click-fraud protection script anywhere on the site.
Why it costs jobs
Local-service keywords are some of the most expensive clicks Google sells, and a meaningful share of those clicks aren’t customers — bots, serial clickers, and competitors tapping ads to drain a rival’s daily budget. Across the accounts we’ve seen, that junk traffic typically eats 10–20% of a local ad budget while producing nothing. Click-fraud protection software (click here) blocks repeat offenders before the click gets billed. On an unprotected account, that slice of spend is simply gone every month.
A link on the homepage leads to a dead page
Verified by clicking through the homepage on August 17, 2026.
What’s visible
We click-tested the internal links on the homepage, and one returns a dead page — a visitor who taps it lands on an error instead of content.
Why it costs jobs
A dead link is a small thing with an outsized cost: the visitor who hits it doesn’t file a bug report, they hit back and call the next roofer. It also walks Google’s crawler into a wall on the company’s own domain. This is a five-minute fix — which is exactly why it should have been caught long before a stranger found it.
No Meta pixel — past visitors are unreachable forever
Verified from the page source on August 17, 2026.
What’s visible
We scanned the homepage source and found no Meta pixel — no fbq initializer, no connect.facebook.net script.
Why it costs jobs
Roof replacement is a considered purchase: homeowners gather two or three quotes over days or weeks before deciding. Without the pixel, there’s no way to show a follow-up ad to the homeowner who already visited the site and left to compare — consistently one of the cheapest, highest-converting audiences a local business can buy. Every visitor who doesn’t call on the first visit is currently gone for good.
| Hiring an agency | DIY, unaided | Local Service Mastery (LSM AI) | |
|---|---|---|---|
| Map-pack coverage across the whole service area | A "rankings are up" line in a monthly PDF, if it’s measured at all | Invisible unless you already know grid scanning exists | Scanned on a live grid, then widened point by point |
| Call tracking on paid traffic | Assumed set up at kickoff, rarely re-verified | Easy to never know it exists | Every call traced to its ad — Google learns which clicks book jobs |
| Click-fraud protection on the ad budget | Almost never mentioned — the wasted spend isn’t theirs | Invisible without watching your own click logs | Blocked automatically — junk clicks stopped before they bill |
| Mobile page speed | Flagged once in the pitch deck, rarely re-tested | Easy to never check on a real phone | Measured on a schedule, regressions caught automatically |
| Dead links & analytics actually firing | Below the radar of most retainer work | You find out when a customer mentions it | Click-tested and verified continuously — flagged before customers find them |
| Who owns the account & the data | Varies — get it in writing before you sign | You, by definition | You. In your name from day one, kept if you cancel |
These findings describe DC Pines Roofing’s own public website and public Google Business Profile, reviewed August 17, 2026 — they are not a claim about who manages their marketing; we don’t know, and make no claim either way. The "hiring an agency" and "DIY" columns describe general patterns observed across the local-service marketing industry over 15 years — opinions and generalizations, not statements about DC Pines Roofing or any named provider. Local Service Mastery is not affiliated with, endorsed by, or sponsored by DC Pines Roofing.
Local Service Mastery








