REIGN

22 min read · 4,460 words

Local Business Directory SEO: Location Pages, Schema and Maps

Reign featured image: local business directory SEO with location pages, schema and maps

Local directory SEO comes down to one rule: every page you ask Google to index must give a searcher something they cannot get from the next page. For a business directory that means category and location pages with real introductions, listings with content only the owner or a member could write, clean URLs, valid structured data where Google allows it, and sitemaps that list only pages worth ranking. Google’s spam policies treat mass-produced, near-identical pages as abuse, so this is the line between a directory that grows and one that gets filtered.

The Google statements below were read on Google Search Central in October 2026. Google updates these pages, so check the linked source before you rely on a detail.

In this guide

  • What makes directory SEO different from ordinary SEO
  • What Google says about scaled content, doorway pages and thin pages
  • How to structure URLs for listings, categories and locations
  • How to build category and location pages that are not thin
  • How to make each listing unique
  • Which schema applies to a directory, and which does not
  • Sitemaps, pagination, filters and duplicate content
  • Review content and what Google allows
  • Maps without slowing the page down
  • Claim flows that improve your content for free
  • A step-by-step build with Reign
  • Questions people ask

Why is directory SEO different from normal SEO?

A directory is a page factory. One listing type, a few hundred categories and a few hundred places can produce tens of thousands of URLs from a single template. That is its strength and its main risk.

A normal site publishes a page because someone had something to say. A directory publishes a page because a combination of two database values exists. “Dentists” crossed with “Leeds” becomes a page whether or not there is anything useful to put on it. If the page shows three listings and a heading, you have made a page for the search engine, not for the person.

Three jobs follow from that. Decide which combinations deserve a page at all. Make each page that survives actually useful. Keep the rest out of the index so they do not drag the whole site down.

Local searches also carry an intent a general article does not. A person typing a trade and a town wants a short list of real options, with contact details and some evidence of quality. Your pages should deliver that fast. Our guide to the difference between local and organic SEO covers how those two worlds differ for a single business. A directory sits on the organic side, but it borrows local signals such as addresses and reviews.

What does Google say about scaled content and doorway pages?

Google names both problems in its spam policies, and a careless directory can trip either. Scaled content abuse is “many pages generated for the primary purpose of manipulating search rankings and not helping users.” Doorway abuse is “when sites or pages are created to rank for specific, similar search queries.”

Google’s examples of doorway abuse include “having multiple domain names or pages targeted at specific regions or cities that funnel users to one page” and “creating substantially similar pages that are closer to search results than a clearly defined, browseable hierarchy.” Read the last one twice. A directory of near-identical “plumbers in [town]” pages that differ only by the town name fits it closely.

The scaled content policy says the problem is “large amounts of unoriginal content that provides little to no value to users, no matter how it’s created.” The same page lists “using generative AI tools or other similar tools to generate many pages without adding value for users” as an example. Google’s separate page on generative AI content says AI is “particularly useful when researching a topic, and to add structure to original content,” and adds that it is “critical to manually factcheck and review all AI-generated content” before publishing.

So the test is not whether a machine touched the text. The test is whether each page adds value. A location page with a locally relevant introduction, real listings and useful filters passes. A template with the city name swapped does not.

Two more policy lines matter to directories. Thin affiliation covers pages where descriptions “are copied directly from the original merchant.” If you import listings from another source and publish the source’s text unchanged, you are in that territory. And user-generated spam, such as spammy posts and comments, is something Google says site owners are often unaware of. Open submission forms attract it, so moderate before listings go live. Our community moderation guide covers the queue and rules side.

Google’s guidance on helpful content points the same way. It asks whether the content gives “substantial value when compared to other pages in search results,” and warns against producing many topics in the hope that some will rank. A directory that lists every business in every town with no depth is exactly that pattern.

How should you structure URLs for a directory?

Use readable words, hyphens and a shallow hierarchy that mirrors how people browse. Google’s URL guidance recommends “readable words rather than long ID numbers,” hyphens instead of underscores, and as few parameters as possible.

A clean structure looks like this:

  • A category page: /dentists/
  • A location page: /locations/leeds/
  • A category-by-location page, only where it earns its place: /dentists/leeds/
  • A listing page: /listing/smith-and-co-dental/

Pick one pattern and keep it. Changing URL patterns later forces redirects across thousands of pages, and every redirect chain loses a little time and trust. If you are moving from another plugin, our post on GeoDirectory alternatives walks through migrating listings and URLs without breaking links.

Watch three details. Google treats upper and lower case as different URLs, so make your server resolve one version only. Do not put session IDs in URLs. And do not let filters produce a new indexable address for every combination, which is covered in the sitemap section below.

A note on plugin differences. Some directory plugins store categories and locations as WordPress taxonomies, which gives you archive pages by default. Others use their own tables and templates. Whichever you use, open a category URL and a listing URL on a test site and read the address. If it contains an ID or a parameter, look for a permalink setting before you build anything else on top of it. The plugin pages we checked say little about this: GeoDirectory’s page mentions SEO permalink settings and Yoast SEO and All in One SEO fixes in its changelog, Directorist’s page describes built-in schema support and Yoast SEO compatibility, and Business Directory Plugin’s page lists SEO plugin compatibility. None of those lines tell you what your own URLs will look like, so test.

How do you build category and location pages that are not thin?

Give each page a real introduction, a clear reason to exist and something a visitor can use. A page is thin when removing the listings would leave nothing worth reading. A page is useful when the introduction, the filters and the supporting detail would still help a visitor if the listings changed.

Start with a decision rule for which combinations get a page. A reasonable rule: a category-by-location page is created and indexed only when it has at least a set number of approved listings, and you write that number down. Below it, the page stays out of the index and out of the sitemap, and visitors reach those listings through the category page or search. There is no magic number. Choose one your content can support and raise it if pages feel empty.

Then fill the pages that pass. Here is what a good location page contains:

  • A short introduction written by a person who knows the area, naming the neighbourhoods or districts and the kind of businesses found there.
  • Filters that suit the category, such as opening hours, services offered or accessibility, so the page is a tool and not a list.
  • Featured or recently updated listings with enough text to judge them.
  • Links to neighbouring locations and related categories.
  • A few questions people ask about choosing this kind of business in this place, with straight answers.

The introduction does the heavy lifting. Two or three paragraphs of genuine local knowledge separate your page from every competitor generating the same grid. If you use AI to draft intros, treat the draft as a rough start, correct the facts, and add something only you know, such as a note from a member who lives there. Google’s own advice on automation is to check accuracy before publishing and to be open about how content is made.

What if you have 400 locations and cannot write 400 introductions? Do not. Start with the 20 where you have the most listings, write those well, and let the rest earn pages as they grow. A smaller index of strong pages beats a large index of weak ones, and the weak ones can sit unindexed until they are ready. That is the opposite of a doorway page.

For deeper background on handling many places from one site, see how to do local SEO for multiple locations.

How do you make every listing page unique?

A listing is unique when it carries information that exists nowhere else on your site. Imported business names and addresses are the starting point, not the content. The text, photos and details that make the page worth indexing have to come from somewhere.

There are five sources, and a healthy directory uses all of them:

  1. Required fields at submission. Ask for a description with a minimum length, services offered, opening hours, a photo and a website. A form that accepts a name and a phone number produces pages with nothing on them.
  2. Category-specific fields. A restaurant listing needs cuisine and a menu link; a dentist needs treatments and whether new patients are accepted. These fields give each page its own vocabulary and are what people search for.
  3. Reviews and owner replies. Genuine reviews add fresh, specific text over time. Owner replies add more.
  4. Photos. Original images with sensible alt text, supplied by the owner or members.
  5. Editorial touches. A line from your team, a verified badge, a “last checked” date.

Put a floor under quality. Hold back listings that fail minimum standards from the index, either by leaving them in a draft state or adding a noindex tag until the owner fills in the gaps. A listing with a 12-word description and no photo is a weak page, and a directory full of them is what Google’s thin-content language describes.

Do not copy descriptions from the business’s own site or from another directory. That is the thin-affiliation pattern in Google’s wording, and it also puts you in a duplicate-content fight with the original.

If your directory sits inside a community, members can fill gaps no import can. A member who writes “the staff were quick and the waiting room was quiet” has added unique text and evidence of real experience. Our guide to adding business reviews and ratings to your community covers that side.

Which schema applies to a directory page?

Mark up each business as a LocalBusiness on its own listing page, with the most specific subtype you can, and mark up reviews only within Google’s rules. Google’s LocalBusiness documentation requires address and name. It recommends geo with at least five decimal places, openingHoursSpecification, telephone, url and priceRange.

Structured data is code on the page that describes it in a format search engines read directly. Google’s example format is JSON-LD in a script tag. Several points matter for directories:

  • One entity per physical location. Google says each location should be its own LocalBusiness, using the most specific subtype available, such as Restaurant or Store.
  • Markup goes on the page about the business. Google says LocalBusiness markup can appear on any page, but a page about the business is more appropriate. A category page with twenty businesses is not that page.
  • Review properties are limited. aggregateRating and review are listed as recommended only for sites that capture reviews about other local businesses. A directory with real member reviews of listed businesses is that kind of site. A business marking up its own reviews is not.
  • Marked-up content must be visible. If you mark up an aggregate rating, users should be able to see it on the page.
  • Validate before launch. Google recommends the Rich Results Test.

Eligibility is not a promise of a rich result. Google says you must follow its guidelines “to be eligible to appear in Local Business rich results,” and it decides what to show. Mark up for accuracy and treat any visual result as a bonus.

Does your directory plugin output this? Check, because plugin pages disagree on how much they say. Directorist’s page describes “built-in Schema Markup support.” Business Directory Plugin’s page mentions Schema.org markup in connection with its premium ratings and reviews feature. GeoDirectory’s page does not mention schema. Listora’s public pages describe schema only for job listings. In every case, paste a listing URL into the Rich Results Test and read what comes out. If a plugin gives you no schema or incomplete schema, an SEO plugin or a small custom function can add LocalBusiness markup from your listing fields. Our best practices for optimizing community sites includes more on technical SEO for sites with lots of dynamic pages.

What should go in the sitemap, and how do you handle pagination?

List only the URLs you want indexed, give every paginated page a crawlable link, and keep filters out of the index. These are the rules Google publishes, and a directory breaks them easily.

Sitemaps

Google’s sitemap documentation says a single sitemap is limited to 50MB uncompressed or 50,000 URLs, with larger sites split into several files and combined under a sitemap index. Use full, absolute URLs. Google says it ignores priority and changefreq. It uses lastmod only “if it’s consistently and verifiably” accurate, and the date should reflect a significant change to the page, not a footer update.

The practical setup for a directory is one sitemap per content type: listings, categories, locations and category-by-location pages. That layout lets you see in Search Console which type has indexing problems. Submitting a sitemap is, in Google’s words, “merely a hint,” so a sitemap is not a substitute for internal links.

Leave out unapproved listings, expired listings you have set to noindex, empty archives and any category-by-location page below your minimum. Our guide on creating robots.txt and a sitemap covers the file basics.

Pagination

A category with 600 listings needs pages. Google’s pagination guidance says to “give each page a unique URL,” link pages with <a href> so Googlebot can follow them, and not use the first page of the sequence as the canonical for the rest. It also says Google “no longer uses” rel="next" and rel="prev". Fragments, the part of a URL after a hash sign, are ignored, so #page=2 does not work.

Infinite scroll and “load more” buttons are risky for the same reason. Google generally follows links in href attributes and does not click buttons. If your theme or plugin loads listings only through a button, make sure a plain paginated version exists behind real links.

Filters and duplicate content

Search filters can produce an endless supply of URLs. Google’s faceted navigation guidance says filter parameters can “generate infinite URL spaces,” which leads to overcrawling and slower discovery of the pages you care about. Its options are to disallow filter parameters in robots.txt, or to point filtered URLs to the unfiltered version with a canonical. It calls the canonical and nofollow approaches “generally less effective in the long term” than robots.txt.

If you do want some filtered pages indexed, such as “open now” or a specific amenity people search for, treat them as deliberate landing pages. Use standard & separators, keep filter order consistent, and return a real 404 when a combination has no results. Google says do not redirect those to a generic error page.

For duplicates in general, Google’s consolidation guidance ranks the tools. Redirects are “a strong signal,” rel="canonical" is “a strong signal,” and a sitemap is “a weak signal.” All three are signals, not commands, and Google decides which pages are duplicates. Use consistent URLs in your menus, internal links and sitemaps so the signals agree. Typical duplicate sources in a directory are a trailing-slash variant, a www and non-www pair, parameterised sort orders, and the same business imported twice. The last one is the worst. Run a duplicate check on name, address and phone before listings go live.

How should you handle review content for SEO?

Collect real reviews from real users, show them on the page, and mark them up only as Google’s review guidelines allow. Reviews are the best source of fresh unique text on a listing, and they are also where a directory can get into trouble.

Google’s review snippet guidelines say pages where the reviewed business controls its own reviews are not eligible for the star feature, even if the reviews arrive through a third-party widget. They also say not to “aggregate reviews or ratings from other websites,” and not to rely on editors to compile local business ratings. Fake or undisclosed incentivised reviews are prohibited, and Google recommends accepting only ratings that include a review comment and author name. Violations can lead to a manual action.

For a directory, that gives you a clear design brief:

  • Reviews come from logged-in users, not from the business or from scraped sources.
  • Each review has an author name and a comment, not only stars.
  • Rating summaries on a page are visible to visitors, and the numbers match the markup.
  • You moderate for fake and incentivised reviews and say so in your rules.

Owner replies are allowed and useful, since they add text and show the listing is cared for. Do not let an owner delete or edit a customer’s review. Our post on building a Yelp-style review site goes deeper on structure, fake review defence and disputes.

How do you embed maps without hurting speed?

Lazy-load the map so it does not download until the visitor scrolls near it, and show a static preview or a plain address first. A map is a heavy third-party embed, and a directory page can carry one for the listing, one for related places and one on the archive.

For iframe-based maps, add loading="lazy" to the iframe. The web.dev guide on iframe lazy loading says it “defers offscreen iframes from being loaded until the user scrolls near them,” calls it well supported across major browsers, and gives examples of savings on embeds such as YouTube, where it cites around 500KB on initial load. A map embed is a different payload, so measure your own pages instead of assuming the same figure.

Practical rules that apply to any plugin:

  1. On archive and category pages, load map scripts after the list renders. Visitors read the list first.
  2. On a listing page, put the map below the first screen of text. The address and phone number should be plain text in the HTML, not only inside the map.
  3. Do not render one map per listing in a grid. Use one map for the whole result set with clustered pins.
  4. Always give the map a fixed height in CSS so the page does not jump when it loads.
  5. Test with PageSpeed Insights or your browser’s performance panel, on a phone connection, with the map on and off.

Search engines read text, so the business address, phone number and opening hours must exist in plain HTML as well as in the map. If the only place an address appears is inside a script-rendered map, you lose both users on slow connections and a clear local signal.

Listora’s public pages describe a clustered map of results with “Near Me” and radius search, with filters kept in the URL so a result set can be shared or refreshed. Check the product page for which map options need a paid licence. Whatever plugin you use, ask the same question: does the page still work when the map script has not loaded?

How can claim flows improve your directory’s content?

A claim flow turns owners into your content team. When an owner proves they run a business, they get the right to edit, and an owner with edit rights will fill in hours, services, photos and a proper description faster and better than you can. That fixes the thin listing problem at the source.

Design the flow with SEO in mind:

  1. Show a claim prompt on weak listings. A visible “Is this your business?” button on listings with short or missing descriptions is the best place for it.
  2. Verify properly. Ask for proof such as a business email on the listing’s domain, a phone callback, or a document, and have an admin approve. A claim flow with no check lets a competitor rewrite a listing.
  3. Ask for the fields you need on approval. The first screen after a claim should be a checklist: description, hours, photos, services. Do not let the owner leave with the listing still thin.
  4. Send a reminder. A reminder email that names the missing fields gives owners a reason to come back.
  5. Mark claimed listings. A verified badge gives searchers a reason to trust the page. You can also sort verified listings higher in your own results.
  6. Keep the history. If a claim is disputed or transferred, log who changed what.

Listora’s public page says owners can claim a listing with proof, an admin approves it, and ownership transfers without leaving duplicates to merge. Other plugins have claim features too. GeoDirectory has a Claim Listing Manager add-on and Business Directory Plugin lists Claim Listings among its premium modules. Check each product page for what is included. Our post on what makes a directory worth running covers claims and paid slots from the business side, and our directory plugin comparison shows which plugins offer them.

One caution. If paid listings let businesses buy visibility, keep the quality bar on the page itself the same for everyone. A paid listing with no content is still a thin page.

How do you build a search-friendly directory with Reign, step by step?

Reign is the design layer: it controls how archive pages, listing pages and your header, colours and dark mode look, with no code. The directory plugin holds the listings and the SEO plugin holds your metadata. Here is a build order that puts SEO first. Our general directory build guide covers the surrounding setup.

Step 1: Decide your structure on paper

List your categories, your locations and the combinations you expect to publish. Write the minimum-listings rule for category-by-location pages. To confirm it worked, you should be able to count how many pages the rule would create before you build anything.

Step 2: Install your theme and directory plugin

Install Reign and a directory plugin such as Listora, which is made by Wbcom like Reign, or one of the others compared in our directory plugin roundup. Set permalinks to a clean structure. To confirm it worked, open a category and a listing and check the addresses use words, not numbers or parameters.

Step 3: Set required fields

Make the description, hours, category-specific fields and at least one photo required. To confirm it worked, submit a test listing with a short description and check the form refuses it.

Step 4: Write the first category and location introductions

Write real introductions for your top categories and top locations. To confirm it worked, read one aloud. If it could describe any town, rewrite it.

Step 5: Check schema

Run a listing through the Rich Results Test. Fix missing address and name first, then add geo, hours and phone. To confirm it worked, the test should show a LocalBusiness item with no errors.

Step 6: Configure sitemaps and indexing rules

Split sitemaps by type, exclude pages under your minimum, and disallow filter parameters in robots.txt. To confirm it worked, open the sitemap and compare its count with the number of pages you meant to index.

Step 7: Lazy-load maps and test speed

Add lazy loading to map embeds, set map heights, and test a listing page on a phone connection. To confirm it worked, the address text should appear before the map loads.

Step 8: Turn on claims and reviews

Enable the claim flow, add a claim prompt to short listings and set the reminder emails. To confirm it worked, claim a test listing from a second account and check the owner is led to the missing fields.

Step 9: Submit and watch

Add your sitemaps in Search Console. In the weeks that follow, read the Page indexing report. A rising count of “Crawled, currently not indexed” or “Duplicate” pages is Google telling you which templates are thin. To confirm it worked, the number of indexed pages should track your sitemap count over time.

Questions people ask

Do category and location pages hurt directory SEO?

Not by themselves. Thin and near-identical ones do. Google’s doorway abuse examples include substantially similar pages targeted at specific cities, so each page you index should have its own introduction, useful filters and enough listings to be worth visiting.

Is AI-written content on directory pages allowed?

Google says generative AI is fine for research and structuring original work, but generating many pages without adding value may violate its scaled content policy. If you use AI, fact-check the output, add local detail only a person would know, and publish fewer, better pages.

Do I need schema markup on a directory?

You do not need it to rank, but LocalBusiness markup on each listing page makes the details machine-readable, and it is the route to being eligible for local rich results. Follow Google’s required properties, address and name, and validate with the Rich Results Test.

How many listings should a page have before I index it?

There is no official number. Set your own minimum, write it down and apply it everywhere. Pages below it can stay live for visitors but out of the index and the sitemap until they grow.

Can businesses mark up their own reviews on a listing in my directory?

Google says pages where the reviewed business controls its own reviews are not eligible for the star feature. Reviews on your directory should come from users, be visible on the page, and carry an author name and comment.

If you are planning a directory that is built to be found, Reign gives you the design layer, and the plugin choice above gives you the listings. Start with the structure and the content rules, then the code. Our member directory guide is the next read if people, not businesses, are what you list.

Reading
22 min · 4,460 words
Published
Oct 22, 2026
Shashank Dubey
Reign contributor

Writing about WordPress communities, BuddyPress, BuddyBoss, LMS plugins, and the business of paid communities.

Keep reading

More from the Reign blog

Browse all posts on community, WordPress, BuddyPress and the studio of plugins behind Reign.

What customers say on Trustpilot

Swift and expert coding!

Swift and expert coding by Kerit to apply a personalised display adjustment on the Reign Theme for a media plugin that was not fully supported at the moment.

RussellGB