Townsmith Local Pages Engine is a location and service-area page generator for local service businesses and the agencies that build their sites. Define your services and the areas you cover, design one page blueprint in the block editor, and generate the matrix of city landing pages as real WordPres
PricingFree downloadThe WordPress.org download is free. Pro versions, add-ons or external services may cost extra.
CompatibilityRequires WordPress 6.4 and PHP 8.0.
SourceWordPress plugins · Oct 28, 2026
01 / Source details
Aboutthistool.
Townsmith Local Pages Engine is a location and service-area page generator for local service businesses and the agencies that build their sites. Define your services and the areas you cover, design one page blueprint in the block editor, and generate the matrix of city landing pages as real WordPress pages, each individually editable, never auto-published, and held to a per-page Quality Score before it goes live. It suits any business that needs a page for every city, town or “near me” area it serves, including firms working across multiple locations.
It is built for the local SEO work real businesses actually do: a plumber, electrician or HVAC firm that needs a clear page for every city and service area it covers, with genuine local detail on each one. It is the quality-first alternative to bulk page generators. It generates fewer pages, scores each one against its siblings for uniqueness, and flags thin or near-duplicate pages before they publish, which is what Google’s scaled-content and doorway-page policies actually target.
What it does
Real pages, never virtual. Generated pages are ordinary WordPress pages you own and edit in the block editor. Deactivate the plugin and they stay fully intact. Merge tokens are resolved at generation time, not at render time.
One blueprint, deterministic variation. Design a single template with merge tokens, copy variations that rotate deterministically per page, and a local content slot that starts empty on every page, because the genuinely local part is yours to write.
A Quality Score with teeth. Every generated page is scored 0–100: similarity against its sibling pages (5-word shingle comparison), local substance (filled slots, area descriptors, local imagery), and a thin-content floor. The pre-publish panel shows exactly what to fix and links to the spot, and warns before a below-threshold page publishes.
A safety check, before Google’s. A portfolio Safety Check reads every page’s score into one plain-English verdict: how many pages are safe to publish and which look like the near-duplicate “doorway” pages Google demotes. In the block editor, Twin Finder shows the exact sentences a page shares with its closest sibling, so you know precisely what to rewrite in local terms. It is guidance computed entirely on your own site, never a guarantee from Google and never a call home.
Schema that cooperates. One JSON-LD graph per page: LocalBusiness, Service with areaServed, breadcrumbs, FAQ. If Yoast SEO, Rank Math, All in One SEO or SEOPress is active, Local Pages Engine steps back and emits only the page’s own pieces, the Service wired to the host plugin’s organisation and the page’s FAQs, never a duplicate LocalBusiness or breadcrumb trail.
Hub-and-spoke linking that survives. Each service gets a hub page; each area page carries an “Areas we cover” block and a breadcrumb back to its hub. The links are baked into the saved markup, refreshed automatically as the area set changes, and keep working even with the plugin deactivated.
Safe sync. When the blueprint changes, a review screen shows exactly what would change on each page. Blocks you have edited are yours: sync never overwrites them, and a deleted block is never re-added. No silent background rewrites, ever.
Resumable background generation. Generation runs through a batched queue built for cheap shared hosting. Interrupt it anywhere and it resumes without duplicates.
Generation is unlimited: every service across every area, with no page caps.
Local Pages Engine runs entirely on your own site: no external services, no API calls, no AI generation, no telemetry. Your data never leaves your install.
Works with Elementor
The pages this plugin builds are ordinary WordPress block pages, so they coexist with Elementor and display like any other page on the site. You write and edit them in the block editor, not on the Elementor canvas.
Place a directory of your areas or services on any hub page with the [townsmith_area_links] and [townsmith_service_links] shortcodes, or drop the “LPE Area Links” and “LPE Service Links” widgets into a page you build by hand.
A guard hides the “Edit with Elementor” button on generated pages and warns you, so a page is far less likely to be converted by accident and lose its scoring, sync, schema and links.
On Elementor Pro, a single Theme Builder template with the “Townsmith location pages” display condition styles every generated page at once, so they carry your site’s design while staying block pages.
The Pro add-on
This plugin is complete as it stands: unlimited generation across every service and area, the full Quality Score, deterministic variant rotation, the pre-publish warning, schema, linking and sync. A separate Pro add-on, distributed from townsmithwp.com, builds on this plugin’s public extension points. It adds:
A reusable local-proof library for the area content slot, so genuine local detail is faster to write.
A portfolio duplicate radar and a pre-generation saturation planner, for spotting overlap before you build.
An enforceable publish gate and noindex-below-threshold, for turning the free plugin’s warnings into hard blocks.
Bulk re-scoring and sync, geo-ordered related areas, and slug updates that serve their own 301 redirects or report each move to your redirect manager.
Bulk CSV import and export, scheduled drip publishing, and portable blueprint kits.
Self-hosted conversion attribution and a signed defensibility dossier.
A multi-site command centre for agencies running this across many client sites.
The Pro add-on is optional; the free plugin needs none of it to generate, score, and publish pages.
Documentation and guides
Full documentation lives at townsmithwp.com/docs . The guides library covers the strategy side, including doorway pages and the line Google draws and how many location pages you should build .
Development
The human-readable source of the compiled files in build/ ships in this plugin’s src/ directory, alongside package.json and webpack.config.js . To rebuild: npm install && npm run build (uses @wordpress/scripts). Development happens in a private repository; the distributed zip always contains the complete, current source.
See it in action
Screenshots & previews.
The dashboard: every service across every area in one matrix. Each cell shows the page's Quality Score against a colour key, and empty cells generate the missing page in place.One blueprint in the block editor: merge tokens, copy variants that rotate per page, and a local content slot that starts empty for you to fill.The Quality screen: every generated location page scored against its closest sibling, with a plain-English list of what to fix.The setup wizard: define your business, your services and the areas you cover, then pick a blueprint.The pre-publish Quality Score panel inside the block editor: every page scored before it goes live, with the breakdown and what to fix.The blueprint sync review: change the blueprint once and see what would update on each location page, with your edited blocks kept untouched.
02 / Source details
Frequently asked questions.
How do I create location pages in WordPress?
Activate the plugin and a setup wizard opens: it collects your business details, your services and the areas you cover, then a page blueprint you build in the block editor. From the services-by-areas dashboard, generate a real, editable WordPress page for every service-and-area combination. Each page starts with an empty local content slot for you to fill and is scored for quality before it publishes, so you are building genuine city pages, not spun duplicates. You can reopen the wizard at any time from the plugin menu.
What is a service-area or location page?
A landing page targeted at one service in one place you cover, for example “Boiler Repair in Leeds” or “Emergency Electrician in Bristol”. Local Pages Engine builds the matrix of these pages from your services and areas, but leaves a local content slot empty on each so the genuinely local writing is yours.
Can I create pages for lots of cities or service areas at once?
Yes. Local Pages Engine builds the full matrix of your services across every area you cover, with no page caps, through a resumable batched queue that runs on cheap shared hosting. It stays quality-first, so you get a scored, editable page per city rather than thousands of near-identical ones.
Can I keep my existing URLs when I replace another plugin?
That is what the custom URL pattern is for. Pick it on the Settings screen, choose the one parent page every generated page should sit under, and write the slug as a template from the {service} and {area} tokens. For /locations/boiler-repair-leeds/ you would set the parent to your Locations page and the template to {service}-{area} ; for /locations/leeds-boiler-repair/ you would write {area}-{service} instead. There are no per-area hub pages to create, so 50 areas need no more setup than one. Match your old slugs and the pages keep their existing rankings with no redirects.
Two things worth knowing. The template has to keep the pages distinct: leave {area} out and every page resolves to the same slug, so the Settings screen warns you. And on the parent page itself, drop in [townsmith_area_links service="123"] to list every area page for that service, which saves building the directory by hand.
Is this a bulk page generator?
No, and deliberately so. Local Pages Engine is a quality-first take on programmatic SEO, with sibling-similarity scoring, a thin-content floor and publish gates. It is designed to keep the pages it produces defensible under Google’s scaled-content and doorway-page guidance, not to spin thousands of near-identical pages.
Does this plugin send my data anywhere?
No. Everything runs on your own WordPress install. There are no external API calls, no AI services, and no telemetry of any kind.
What happens to generated pages if I deactivate or uninstall the plugin?
Nothing. Generated pages are real WordPress pages and remain fully intact, editable, and rendering, including their internal links, which are baked into the saved markup. Uninstalling removes the plugin’s settings and queue table only (and even that can be kept with a setting).
Will it conflict with my SEO plugin?
No. Yoast SEO, Rank Math, All in One SEO and SEOPress are detected at render time. When one is active, Local Pages Engine suppresses its own meta description and emits only the Service schema piece, referencing your SEO plugin’s organisation data.
Can it overwrite content I’ve edited?
No. The moment you edit a generated block, that block is yours. The sync flow updates only untouched blocks and shows you a per-page preview before anything is applied.
Why did publishing my page get blocked?
Its Quality Score is below your threshold and the Pro add-on’s enforcement mode is switched on (this plugin only warns). The pre-publish checklist lists exactly what to fix: usually filling the local content slot, writing an area descriptor, or making the copy less similar to a sibling page.
Will location pages get my site penalised by Google?
Not for being location pages. Google’s scaled-content and doorway-page policies target near-identical pages built only to rank: many pages that read the same with a town name swapped. That is exactly what this plugin is built to prevent: every page is scored against its closest sibling, thin pages are flagged before they publish, and the Safety Check gives your whole portfolio a plain-English verdict before Google sees it.
Does it use AI to write my content?
No. This plugin contains no AI and makes no external calls: generation merges your own blueprint and copy variants deterministically, and the local content slot stays empty until a human fills it. The optional Pro add-on includes an off-by-default assistant that can reword a single sentence you select. It assists, never generates pages, and the free plugin needs none of it.
Does it work with Elementor?
Yes, with one rule: do not open a generated page with Elementor. Generated pages are ordinary WordPress block pages, so they display normally on Elementor sites using a standard page template, and they stay intact even if you deactivate the plugin. You author and edit them in the block editor, not on the Elementor canvas. Editing a generated page in Elementor converts it to an Elementor layout, which disables Sync, the Quality Score, the FAQ rich-result schema and the deactivation-safe area links for that page. The plugin hides Elementor’s “Edit with Elementor” buttons on generated pages and warns you, and it flags any page that has already been converted so you can restore it.
Which theme and template combinations are supported for generated pages:
Any block theme (for example Twenty Twenty-Four) on a standard template: fully supported, the intended setup.
Hello Elementor or a classic theme such as Astra on a standard or Full Width template: supported.
Elementor Canvas template: the page content still shows, but Canvas drops the page title and the theme’s styling frame, so it is not recommended for generated pages. Use Canvas for the hub pages you build by hand.
An Elementor Theme Builder single template with no Post Content widget: not supported, because the body is not output (the page’s schema still emits). Add a Post Content widget or exclude generated pages from that template’s display conditions.
To build an Elementor hub page that lists your area pages, use the [townsmith_area_links service="123"] shortcode or the “LPE Area Links” Elementor widget on a normal page and pick the service.
Can I put my Elementor design on the generated location pages?
Yes, if you have Elementor Pro. Use Elementor’s Theme Builder to design one “Single” template with your header, footer, hero, call to action, fonts and colours, and a Post Content widget where the page content goes. Set its Display Conditions to “Townsmith location pages” and publish the template. This plugin adds that condition, so one click applies your design to every generated page and to every future one, with no per-page setup. You never open the generated pages on the Elementor canvas yourself; the Theme Builder template wraps them automatically, so they stay ordinary block pages, and the Quality Score, Sync, FAQ schema and the deactivation-safe links keep working. If you would rather not use the condition, Elementor Pro’s built-in “Any child of” condition also works when your pages are nested under a hub (the hierarchical or area-first URL pattern). Two things to know: this needs Elementor Pro, since Theme Builder is a Pro feature, and full-width blocks can render at content width inside the Post Content widget, so check the spacing on your design.
How do I list my services or build a services directory?
Use the [townsmith_service_links] shortcode. On its own it lists every service that has a hub page, each linking to that hub, which makes a simple “our services” page. Add an area to list the services that cover one town, for example [townsmith_service_links area="123"] (open the area under Areas in the admin and its ID is in the address bar as post=123 ). Dropped on a generated location page, it lists the other services you offer in that same town, which works well as a cross-sell. There is also an “LPE Service Links” Elementor widget that does the same with an area dropdown. This is the services counterpart to [townsmith_area_links] , which lists the areas for a service.
My areas have parent areas. Can the directory group them?
Yes. Add group=”yes” to the shortcode, as in [townsmith_area_links service="123" group="yes"] , and each area is listed under the area it belongs to: your regions as headings, with their towns in a list beneath. The lists are nested, so a line of CSS such as .lpe-related-areas--grouped > ul { columns: 3 } lays them out in columns. The Related Areas block and the “LPE Area Links” Elementor widget have the same “Group under parent areas” switch, and a hub page the plugin creates for you has it on.
My blueprint is one custom HTML template. Where does the local content go?
Put [townsmith_local_content] in the template where each page’s local content should appear, for example inside your “Serving {{area}}” section. Every generated page still has a Local Content Slot below the template, which is where you write that page’s local detail in the editor, and on the page it shows at the shortcode instead. If the blueprint has no slot, generation adds one. For more than one, name the slots and use [townsmith_local_content name="history"] . The related shortcodes for one-template blueprints are [townsmith_area_links] and [townsmith_service_faqs] .
Website LLMs.txt and LLMs-Full.txt Generator is an LLMs.txt generator and llms-full.txt generator for WordPress. It helps site owners generate, manage, preview, validate, and serve AI discovery files from published public content. Use it to create structured /llms.txt and optional /llms-full.txt end
EngageDock AI is a customizable floating contact widget for WordPress websites that want more leads and faster visitor communication. It helps small businesses turn website traffic into calls, texts, emails, and callback requests from one clean contact panel. Key Features: Click-to-Call – One tap ca
Altify AI is an auto ALT text and AI ALT text plugin for WordPress images. It helps generate descriptive image ALT text for accessibility and image SEO. Use bulk image ALT text tools for your Media Library, generate featured image ALT text automatically, and scale WooCommerce image ALT updates with
The Accepted Payment Methods plugin is a straightforward, lightweight solution that enhances your website by displaying visually appealing icons of the payment methods you accept. This plugin is ideal for a variety of websites, including e-commerce platforms, service-oriented websites, and informati