2026-07-28 · 6 min read

Programmatic location pages that survive a spam update

City-name-swap boilerplate gets filtered. Here is the exact data model we use so service × location pages hold their rankings.

The note

Every agency that got wiped out by the last two spam updates built the same thing: one template, a spreadsheet of city names, and a find-and-replace. Google has been able to detect that pattern since 2022.

Our model requires five unique fields per page before it is allowed to publish: a local job reference with a real address range, a neighbourhood-specific problem note (hard water, hail zone, panel age in that build era), the actual technician who covers that area, a service-area polygon rendered as a map, and the average dispatch time from the closest depot.

If any of those five are missing, the page does not build. That single rule is why our 418-page grid client kept all 418 pages through the August update and picked up 96 top-three positions.

The cost is real: it takes a 90-minute intake call per territory to collect the data. That is still cheaper than rebuilding a filtered site.

Stop paying $5K/month for nothing.

Get a site that ships. Fourteen days, fixed fee, and a number you can hold us to from month one.

Book a call - 30 min

live availability

booking.sh

resolving

> resolve timezone -> ...
> fetch availability ... 21d window

Times shown in your local zone. You'll get the audit doc before the call, not after.