Programmatic Location Pages: Scaling Without Publishing Thin Content
TL;DR: Generating a page for every service crossed with every city is the most common way local businesses waste a year. It works only when each page contains information that could only be true of that city, you publish in controlled batches, and you have a quality gate that kills pages that don’t clear the bar. Fifteen genuinely local pages beat four hundred templated ones, every time.
Table of Contents
- Where programmatic works in local, and where it doesn’t
- The data you need before generating anything
- What has to be unique per page
- Publishing cadence and index management
- Quality gates that actually catch thin output
- The math on how many pages you should build
Where Programmatic Works in Local, and Where It Doesn’t
Programmatic SEO means generating pages from structured data against a template. It’s the right approach when three conditions hold:
- There’s real, distinguishable search demand per variation. People genuinely search “water damage restoration Weaverville” as well as “water damage restoration Asheville.”
- You have data that differs per variation. Not just a place name — actual differing facts.
- You can serve the customer in each variation. You’ll send a truck there.
It fails predictably when:
- The demand doesn’t exist. Forty pages for towns of 900 people where nobody searches your service. The page can rank first for a query nobody types.
- You have nothing city-specific to say. If the only difference between two pages is a find-and-replace on the place name, you’ve published two versions of the same page and split your own signals.
- You don’t actually serve the area. Ranking in a city you won’t drive to generates calls you decline, wasting everyone’s time and eventually your reviews.
- Your site has no authority yet. A six-month-old domain publishing 300 city pages looks exactly like what it is. Earn some standing first.
The failure mode is not a penalty. It’s simpler and more disappointing: the pages get crawled, judged as duplicative, and largely not indexed. You paid for 400 pages and Google kept 40.
Want more customers from Google & AI search?
Get a free SEO audit of your site — see exactly what to fix first.
The Data You Need Before Generating Anything
Do this before you build a single template. If you can’t fill these columns, you’re not ready.
Per city, minimum viable data set:
| Field | Where it comes from | Why it matters |
|---|---|---|
| City / town name and county | Public records | Base |
| Population | Census data | Filters out places with no demand |
| Drive time from your nearest location | Maps | Determines whether you should serve it |
| Search volume for your top 3 services + city | Keyword tool or Search Console | The demand test |
| Number of jobs you’ve completed there | Your CRM or invoicing | The single most valuable column |
| Named neighborhoods or subdivisions | Local knowledge | Genuine local specificity |
| Housing stock characteristics | Assessor data, local knowledge | Drives real service differences |
| A local landmark or reference point | Local knowledge | Credibility detail |
| Nearest competitor and their weakness | Manual research | Positioning |
The jobs-completed column decides everything. A city where you’ve done 40 jobs supports a genuinely specific page: photos from those jobs, named neighborhoods you’ve worked in, real reviews from customers there, actual conditions you encountered. A city where you’ve done zero jobs supports nothing but a template.
That gives you a natural priority order: build pages for the cities where you have work history first, in descending order of job count. This is also why programmatic location pages work far better in year three of a business than in year one.
What Has to Be Unique Per Page
The test: could this sentence be true of any other city? If yes, it isn’t doing work.
Required per page — non-negotiable:
- Specific job references. “We handled a burst-pipe call in the Beaverdam area last February when temperatures dropped below 15 degrees.” That sentence can only be about one place.
- Real photos from jobs in that city. Not stock. Not the same three photos on every page.
- Reviews from customers in that city. Even two. Pull them from your GBP and attribute by first name and neighborhood.
- Local conditions that change the work. Older housing stock means galvanized pipe. A high water table means crawl space issues. Steep terrain means access problems. This is the section that most convincingly proves you actually work there.
- Specific service-area detail. Named neighborhoods, subdivisions, or landmarks — not just the city name.
- Honest response time from your nearest location. With the drive noted.
Acceptable to template:
– Your service process
– Certifications and licensing
– General FAQ answers
– Contact and scheduling mechanics
Ratio to aim for: at least 40% of the visible body content unique to that page. Below roughly 25% you’re publishing near-duplicates and should expect them to be ignored.
That constraint is deliberately hard, because it’s the thing that makes this work. It also naturally limits how many pages you can build, which is the actual point — the constraint is a feature.
Publishing Cadence and Index Management
Do not publish 200 pages on a Tuesday.
Batch size: 5 to 15 pages at a time.
Interval: two to four weeks between batches.
Why: three reasons, all practical. You get feedback — if batch one doesn’t get indexed, you learn before building batch four. You avoid the pattern of a site tripling its page count overnight. And you can maintain quality, because writing genuinely local content for fifteen cities takes real time, and anyone producing 200 in a week produced 200 templates.
Per batch:
1. Publish and confirm each page is internally linked from a relevant parent page — a service hub or a service-area index.
2. Add to the sitemap.
3. Submit two or three through URL Inspection; let the rest be found naturally, which also tells you whether internal linking is working.
4. Wait two weeks, then check: are they indexed? Any impressions?
Reading the result:
– Indexed and earning impressions → template and content depth are working. Build the next batch.
– Indexed, zero impressions after 6–8 weeks → the demand isn’t there for those cities, or the pages are too weak to compete. Reassess before continuing.
– Not indexed → Google judged them duplicative. Stop. Increase per-page uniqueness on the existing batch and re-evaluate before publishing more.
That last outcome is the one worth respecting. Not indexed is Google telling you the pages aren’t distinct enough. Publishing another eighty won’t change its mind.
Quality Gates That Actually Catch Thin Output
A gate is only a gate if it can reject. Six checks, run before publish. Any failure means the page doesn’t ship.
Gate 1 — Uniqueness percentage. Compare the page against your other city pages. Under 40% unique body content, reject. Simple text comparison tooling handles this, or a manual read against the nearest sibling page.
Gate 2 — Substitution test. Read the page and ask whether any sentence would be false if you swapped the city name. If nothing would become false, the page has no local content. Reject.
Gate 3 — Evidence test. Does the page contain at least one photo, one review, or one job reference specific to this city? No evidence, no page.
Gate 4 — Demand test. Is there measurable search volume for at least one service-plus-city query? No demand, no page. Build the page when you have work there and reasons to expect searches.
Gate 5 — Service test. Would you actually accept a job here today? If dispatch would decline it, don’t rank for it.
Gate 6 — Cannibalization test. Does this page target a query one of your existing pages already ranks for? Check Search Console. If your general service page already ranks page one for “water damage restoration [city],” a new city page may split the signal rather than add to it.
Gates 2 and 3 catch the great majority of bad pages, and both take under two minutes per page. Write them into whatever process you use, and give whoever runs the gate genuine authority to reject.
The Math on How Many Pages You Should Build
Work it from capacity, not ambition.
Start with cities where you’ve completed five or more jobs. For most single-location service businesses that’s somewhere between 8 and 25 places.
Add cities inside a 30-minute drive with meaningful population and demonstrated search volume, even without job history — but cap this group at roughly a third of your total, and prioritize building job history there.
Multiply by services only where the service genuinely differs by location. For a plumber, emergency service is location-sensitive because response time matters. Water heater installation mostly isn’t. Two location-sensitive services × 15 cities is 30 pages, which is a real six-month project done properly.
Compare that against the pitch you’ve probably heard: 15 services × 60 cities = 900 pages. The 30-page version will outperform it, cost less, and won’t leave you with 870 unindexed URLs and no way to tell what’s working.
Quick Recap
- Programmatic location pages work only with real per-city demand, real per-city data, and real willingness to serve.
- The jobs-completed column in your CRM decides your priority order and your feasible page count.
- Require at least 40% unique body content, plus a photo, review, or job reference specific to each city.
- Publish in batches of 5–15 every two to four weeks, and read the indexing result before continuing.
- Run six gates that can actually reject: uniqueness, substitution, evidence, demand, service, cannibalization.
- Thirty strong pages beat nine hundred templated ones, and cost less to produce.
Frequently Asked Questions
Is programmatic SEO against Google’s guidelines?
Generating pages isn’t. Publishing scaled content with no original value is what the guidelines address. The distinction is whether each page offers something a user couldn’t get from a sibling page.
How many city pages is too many?
There’s no fixed number. The limit is how many you can make genuinely distinct. If you can support 60 with real evidence, build 60. Most businesses can support 10 to 30.
Can I use AI to generate these pages?
For drafting structure and rewriting boilerplate, usefully. For the local specificity, no — the details that make these pages work are held in your CRM, your photo library, and your technicians’ heads. AI-generated local color is exactly the thin content that doesn’t get indexed.
Should city pages target “near me” queries?
Not directly. “Near me” queries resolve by the searcher’s location, not by page copy. Optimize your Google Business Profile and location signals for those; use city pages for explicit city-name queries.
What about cities where I want work but have none yet?
Build the page after you’ve done a few jobs there, not before. In the meantime, target the area with paid search and Local Service Ads, which don’t require the same evidence to work.
How long before city pages rank?
Typically three to six months for pages with genuine local content on a site with some authority. Faster for cities where you already have reviews and citations, slower for a brand-new domain.
Keep Reading
Want more customers from Google & AI search?
Get a free SEO audit of your site — see exactly what to fix first.