Local Landing Pages Without Doorway Page Spam
City landing pages are one of the most effective local SEO tactics. They are also one of the most abused. For every business with a useful, honest city page, there are ten with thin templates that swap the city name and call it a day. Google calls those doorway pages, and they do not rank anymore. This guide explains the difference and how to build pages that actually work.
The short answer
A good local landing page has unique content about your actual work in that city: real examples, city-specific FAQs, genuine local context, and a clear service radius. A doorway page is a template with the city name swapped in, no unique information, and no real connection to the area. Google's guidelines explicitly prohibit doorway pages. Build one page per city you actually serve, write real content for each, and link them together honestly.
What is a doorway page?
Google defines doorway pages as pages created to rank for specific search queries but that lead users to the same destination. In local SEO, this usually looks like:
- A single template with
{City}as a variable - 50 pages that are 90% identical
- No unique content beyond the city name and a few swapped keywords
- All pages linking to the same contact form or phone number
- No real reason for the page to exist other than ranking
Example of a doorway page:
"Looking for a plumber in
{City}? We provide plumbing services in{City}and the surrounding area. Our{City}plumbers are licensed and insured. Call us for all your{City}plumbing needs."
That paragraph with "Rockford" swapped for "Belvidere" swapped for "Machesney Park" is a doorway page. Google has been penalizing these since 2015.
Here are a few more specific examples of doorway page patterns to avoid:
The near-duplicate footer trick: Some businesses write a unique 200-word intro paragraph for each city page, then paste the same 600-word "About Our Services" block at the bottom of every page. Google's duplicate content detection catches this. The unique intro does not save you if 80% of the page is identical across 30 cities.
The generated review block: A page that pulls the same five reviews onto every city page, just with the city name inserted into a template sentence ("See what our customers in {City} say"). Those reviews are not from customers in that city. Google can tell, and so can users who click through to two different city pages and see the same names.
The multiple domain doorway: Buying plumber-rockford.com, plumber-belvidere.com, and plumber-machesneypark.com, then redirecting all of them to the same homepage. This is explicitly called out in Google's guidelines as a doorway pattern. It worked in 2012. It gets penalized now.
Google's guidelines on doorway pages
From Google's Search Central documentation:
"Doorway pages are pages that are created primarily for search engines, not for human users. These pages are built to rank for specific search queries and typically lead users to the same destination."
Google specifically calls out local doorway pages as a violation:
"Having multiple domain names or pages targeted at specific regions or cities that funnel users to one page"
If you have 20 city pages that all link to the same contact page with no other unique content, you are funneling users. That is a doorway page.
How Google distinguishes doorway pages from legitimate local pages
Google does not penalize city landing pages. It penalizes pages that exist only to manipulate rankings. The distinction comes down to whether the page serves a user or serves a search query. Google's algorithms look at several signals:
- Content uniqueness: Is the page substantially different from your other city pages, or is it a find-and-replace job?
- Standalone value: If a user landed on this page directly, would it answer their question, or would they need to click through to another page to get anything useful?
- Real connection to the area: Does the page reference specific local details that could only come from actually working there?
- Proportion of unique content: A page with 100 unique words and 500 duplicated words is mostly a doorway page, even if it has some unique content.
The practical test: if you removed the city name from the page, would it still make sense? If the only thing tying it to that city is the city name itself, it is a doorway page.
Real businesses that got penalized
Google has taken manual action against doorway pages in several documented cases. In 2015, Google rolled out a doorway page algorithm update that specifically targeted pages created to capture local search traffic. Sites that relied on mass-generated city pages saw traffic drop 40-80% overnight. A well-known personal injury law firm had over 300 city pages deindexed after a manual review found they were template-generated with no unique content. A national HVAC franchise lost map pack visibility in multiple markets after Google flagged their location pages as doorway spam because each page was identical except for the city name and a swapped stock photo.
The pattern in every case: the business built pages faster than they could write real content for them. If you are generating 50 city pages in a weekend, you are building doorway pages. If you are writing one city page per week with real examples and local context, you are building legitimate local content.
What makes a local landing page good
A good city page exists because you actually serve that city and have something real to say about it. It is not a template. It is a page a human would find useful.
Real local context
Mention specific neighborhoods, landmarks, or streets. If you are a plumber writing about Rockford, you might reference:
- The older housing stock in the near-east side that needs repiping
- The new developments on the east side with different plumbing setups
- Specific neighborhoods you have worked in: Edgebrook, Churchill Grove, Haight Village
This proves you actually work there. A doorway page cannot do this because it has no real knowledge of the city.
Real examples and case studies
Include 2-3 short examples of jobs you have done in that city. Not full case studies, just a paragraph each:
"Replaced a 50-gallon water heater for a homeowner in the Churchill Grove neighborhood. The old unit was 14 years old and leaking from the bottom. New unit installed in 4 hours, same day."
This is content a template cannot generate. It is specific, honest, and useful.
City-specific FAQs
Every city has different questions. Some are universal ("Do you offer free estimates?") but some are local:
- "Do you charge a travel fee to come to Belvidere?"
- "How long does it take you to get to Machesney Park during rush hour?"
- "Are you familiar with the older homes in the Haight Village historic district?"
Write 5-8 FAQs per city page. Make them real questions you have been asked, not invented ones.
Actual service radius
Be honest about where you will and will not go. If you serve Rockford but not Freeport, say so. If you charge a travel fee beyond 20 miles, mention it. This builds trust and filters out bad leads.
Include a map or a list of specific ZIP codes you cover. This is more useful than "serving the surrounding area."
Unique title and meta description
Each page needs its own title tag and meta description. Not "Plumber in {City} | Your Company" on every page. Write something specific:
- "Plumber in Rockford, IL | Water Heater Repair and Repipes"
- "Plumber in Belvidere, IL | Drain Cleaning and Emergency Service"
The meta description should mention the city and your specific services.
What to avoid
City name swap templates
If you can generate the page by running a find-and-replace on the city name, it is a doorway page. Do not do this. Even if it ranks for a few months, Google will catch up.
Fake addresses on city pages
Some businesses put a fake address on each city page to make it look like they have an office there. This is a fast track to a GBP suspension and a manual penalty on your website. Do not do it.
Thin content pages
If your city page has 150 words and two of them are the city name, it is thin. Aim for 500-800 words of genuinely useful content per page. If you cannot write 500 words about your work in a city, you probably do not serve that city well enough to justify a page.
Duplicate content across pages
Even if you are not doing a full template swap, be careful about reusing paragraphs. If your "about us" section is identical on every city page, Google sees that as duplicate content. Write a unique intro for each.
How to structure your city pages
URL structure
Use clean, descriptive URLs:
/service-areas/rockford//service-areas/belvidere//service-areas/loves-park/
Do not use parameters or subdomains. Keep it simple.
Internal linking
Link your city pages together. Each page should link to 2-3 nearby city pages and to your main service pages. This helps Google understand the relationship between your pages and distributes link equity.
Add a service areas index page that lists all your city pages with a short description of each. You can see how I do this on my service areas page.
Schema markup
Add Service or ProfessionalService schema to each city page with the city in the areaServed field. This tells Google explicitly which areas each page covers.
How many city pages should you create?
One per city you actually serve. Not one per city you wish you served. If you regularly do jobs in 4 cities, make 4 pages. If you serve 12, make 12. Quality matters more than quantity. 4 excellent city pages will outperform 20 thin ones every time.
A template for a compliant local landing page
Here is the structure I use for city pages that rank without triggering doorway penalties. Adapt it to your business, but follow the order:
- H1 with city and service: "Plumbing Services in Rockford, IL" — not just "Our Services."
- Unique intro (150-200 words): Why you serve this city, how long, what neighborhoods you work in. Reference specific streets or landmarks.
- Services offered in this city (list with short descriptions): Not every service you offer everywhere. The ones you actually provide here.
- 2-3 real job examples: One paragraph each. Address (street only, no house number), what the job was, how long it took, what it cost if you are comfortable sharing.
- City-specific FAQs (5-8 questions): Real questions you have been asked by customers in this city. Include travel time, local code requirements, neighborhood-specific issues.
- Service area map or ZIP code list: Be specific. "61101, 61102, 61103, 61104, 61107, 61108" is better than "Rockford and surrounding areas."
- Reviews from customers in this city: 2-3 reviews where the customer mentions the city or neighborhood. If you do not have reviews from this specific city, do not fake it.
- Internal links: Link to 2-3 nearby city pages and to your main service pages. Use descriptive anchor text.
- CTA with city name: "Get a plumbing estimate in Rockford" — not just "Contact Us."
This structure gives Google unique content, local relevance, and a clear reason for the page to exist. It also gives a user everything they need without clicking elsewhere.
How to test if your local pages are compliant
Before you publish a batch of city pages, run these checks:
- The find-and-replace test: Open two city pages side by side. If you could turn one into the other by swapping the city name, you have a doorway page problem. Fix it before publishing.
- The standalone test: Read the page without any context. Does it tell you something specific about your work in that city, or could it be about any city? If it could be about any city, it is not specific enough.
- The duplicate content check: Run the page through a duplicate content checker like Siteliner or Copyscape. If more than 30% of the text appears on another page on your site, rewrite it.
- The word count check: If the page is under 400 words, it is thin. Aim for 500-800 words of genuinely useful content. If you cannot write 500 words about your work in a city, reconsider whether you need a page for it.
- The Search Console test: After publishing, monitor Search Console for manual actions. If Google flags your pages, you will see a notification in the Security and Manual Actions section. If you get flagged, remove the thin pages and submit a reconsideration request.
What to do next
If you want help building city landing pages that rank without spam tactics, I offer local SEO services for service-area businesses. You can see examples of how I structure city pages on my service areas page, or contact me if you want to talk about your specific market.