Skip to content
Can Elmas

SEO · 8 min read

Programmatic SEO: When It Works and How to Avoid Thin-Content Traps

TL;DR

Programmatic SEO works when a repeatable search pattern has real demand and you own data that makes every page genuinely different. If only a swapped city or product name changes between pages, don't build it. Launch in small batches, noindex pages below a data threshold, track indexing per template, and prune every quarter.

· Published · Updated

Programmatic SEO works when a search pattern repeats across hundreds of variations, each variation has real demand, and you own data that makes every page answer its query better than a generic page could. If the only thing that changes from page to page is a swapped city, tool or product name, you are building an index full of thin pages, the pattern Google’s spam policies target as scaled content abuse. Below is the go/no-go test I run first, then how to build, index and prune the pages if the answer is yes.

What programmatic SEO is (and isn’t)

Programmatic SEO means generating many pages from one template and a structured dataset, each targeting a variation of a repeatable query: “[product] + [integration]”, “[category] + [attribute]”, “[service] + [city]”. The template controls layout; the data supplies what’s different.

What it isn’t:

  • Not a content shortcut. The work moves from writing pages to collecting and maintaining data. If nobody owns the dataset, the pages decay.
  • Not keyword swapping. Fifty pages that read identically apart from the city name are what Google calls doorways.
  • Not faceted navigation left open. Crawlable filter URLs are a side effect, not a strategy. Programmatic SEO means choosing which combinations deserve a page.

A go/no-go test before you build

Answer these six questions before anyone designs a template. I treat a “no” on any of the first three as a stop.

QuestionGoNo-go
Is there a repeatable query pattern with demand across many variations?Search volume or impressions spread across dozens of modifiersDemand concentrates in a handful of terms you could write by hand
Do you own data that differs per page?Catalog, product, usage, pricing or job data specific to each variationOnly the modifier name changes
Does a page satisfy the intent?Searchers want to compare, browse or evaluateThey want a quick answer, a calculator, or a brand they already know
Does the page connect to what you sell?Clear next step: trial, product, quoteTraffic with no path to revenue
Can your domain get new pages indexed?Existing pages index quickly and earn impressionsNew site, few links, existing pages stuck unindexed
Can someone maintain the data?Named owner and an update scheduleOne-off scrape nobody refreshes

The second row decides most cases. Put two draft pages side by side and strike out everything that is identical. If what remains is the modifier and a sentence or two, the answer is no, however good the keyword volume looks.

On the demand side, judge modifiers by whether they lead to revenue, not just volume; the method in keyword research for B2B SaaS applies directly.

Business models and page types it suits

B2B SaaS: integration and use-case pages

Integration pages (“[product] + Salesforce integration”) are the cleanest fit for SaaS. The searcher is often already evaluating, and each page has naturally different facts: what syncs, in which direction, which triggers and actions exist, setup requirements and plan availability.

Use-case pages by role, industry or workflow work too, but only when the product behaves differently for each. “Project management for construction” earns its page with construction-specific templates, fields and customer examples. The generic feature list with “construction” pasted in fails the side-by-side test.

Ecommerce: collection and attribute pages

For stores, programmatic pages are usually collections built from attribute combinations: “waterproof hiking boots for women”, “linen dresses under $100”. They work when the catalog has enough in-stock products for each combination and shoppers actually search that way.

Set a minimum product count before a combination becomes an indexable page, and decide what happens when stock drops below it. On Shopify, this usually means curated collections for proven combinations, while the long tail of filter URLs stays out of the index. Shopify’s default robots.txt already blocks some sort and filter patterns, and the robots.txt.liquid template lets you edit it.

Service businesses: location pages

Location pages are the riskiest of the three. Google’s spam policies list pages targeted at specific cities or regions that funnel users to one destination as an example of doorway abuse.

Build a location page only where you genuinely serve the area and have something local to show: completed jobs, a local team, area-specific pricing or permits, local reviews. Ten solid pages beat 400 thin ones.

Data sources that make each page unique

The data is the product. Before building, list the fields that will differ per page and where each one comes from.

Page typeData that makes it uniqueWhere it usually lives
SaaS integrationSynced objects, sync direction, triggers and actions, setup steps, plan availability, screenshotsProduct docs, engineering, integration catalog
SaaS use caseRelevant templates, feature configuration, customer quotes by segment, common questionsProduct team, CRM closed-won notes, support tickets
Ecommerce collectionProduct set, price range, attribute-specific sizing or care notes, reviews, FAQsProduct catalog, reviews app, returns and support data
Service locationJobs completed nearby, project photos, local team, pricing ranges, permits or regulations, local reviewsJob management system, CRM, review platforms

First-party data beats anything you can scrape. Public data every competitor can pull, such as population figures for a city, adds bulk, not uniqueness. Support tickets and sales call notes are underused: they show what each segment actually asks, which is what a page should answer.

Template design that avoids thin content

A good template separates three layers:

  1. Fixed elements that are the same on every page: navigation, core value proposition, trust signals, the conversion path.
  2. Data-driven modules that render from fields: specifications, product grids, feature tables, job lists, pricing ranges.
  3. Conditional modules that appear only when the data exists. If a page has no reviews, the review block disappears. It is never replaced with filler.

Rules I build into every template:

  • Title, H1 and meta description are built from data fields, not only the modifier
  • A minimum-data rule decides whether a page is indexable (a set number of products, jobs or populated fields); pages below it are noindexed or not generated at all
  • Each page links to its parent hub and a few related siblings, never to hundreds of siblings in a footer
  • The page answers the query near the top, not below a generic intro
  • A person reviews a sample from every batch before it ships

Where AI-generated copy fits

LLMs are useful for turning structured data into readable summaries and drafting FAQs from support tickets. They become a liability when the model’s prose is the only thing making pages different.

Google’s scaled content abuse policy covers generating many pages primarily to manipulate rankings rather than help users, whether people, AI or both wrote them. Violations can lead to a manual action, shown in Search Console’s Manual actions report, and a large block of low-value pages can weigh on the rest of the site.

The practical test: if you removed the AI-written paragraphs, would the page still be useful? If not, the AI is hiding the thinness, not solving it.

Indexing and crawl budget controls

Publishing is not the same as getting indexed. Plan the controls before launch.

  • Launch in batches. Ship the highest-demand slice first (for example, the top 50 or 100 variations), watch indexing and impressions for a few weeks, then expand. A batch that won’t index is a quality signal, not a glitch.
  • One XML sitemap per template. Search Console then shows indexing status per page type.
  • Noindex below the data threshold. Pages that miss the minimum stay live for users but out of the index. Noindexed pages are still crawled, so don’t generate thousands of them.
  • Canonicals for near-duplicates. Point filter variants and sort orders to the main collection. Canonicals are hints, so keep internal links consistent with them.
  • Robots.txt for infinite combinations. Block crawling of parameter patterns that multiply endlessly. But don’t block a URL in robots.txt and expect its noindex tag to work: Google can’t see a tag on a page it isn’t allowed to crawl.

Crawl budget is mainly a concern for very large or fast-changing sites. For most mid-sized sites the constraint is quality: Google crawls the pages and decides they aren’t worth indexing. In the Page indexing report, “Discovered - currently not indexed” (found, not yet crawled) and “Crawled - currently not indexed” (crawled, then left out) roughly separate the two problems. The technical SEO audit checklist covers the wider crawl and index checks.

Measuring, pruning and warning signs

Report on programmatic pages by template, separately from the rest of the site. Track:

  • Indexed pages as a share of submitted pages
  • Impressions and clicks per indexed page
  • Conversions (trials, add-to-carts, quote requests) from the template
  • Share of pages with zero impressions after a set period

Then prune on a schedule, typically once a quarter:

Page status after 90+ daysAction
Indexed, earning impressions and conversionsKeep; enrich the data where rankings sit just off page one
Indexed, impressions but few clicksRewrite title and meta description; check the intent match
Not indexed, thin dataAdd data or noindex; stop generating siblings like it
Competes with another page for the same queriesMerge and 301 redirect to the stronger page
No demand, no data, no conversionsRemove (404 or 410) or redirect to the parent hub

Warning signs that should pause further expansion:

  • The indexed share for a template falls batch after batch
  • Impressions on new pages spike after launch, then decline across the whole site
  • Core pages (product, pricing, service pages) lose rankings to template pages targeting the same terms
  • A manual action appears in Search Console
  • Nobody can point to a single lead or order from the pages

When I take over a program like this, the fix is usually subtraction: fewer, richer pages, a stricter threshold and a named data owner. It’s the order I follow in technical SEO and content systems work: data and templates first, volume last.

Get it built

If you’re deciding whether programmatic pages make sense for your site, or cleaning up an index that already has too many of them, get in touch. Most engagements start with a fixed-price Growth Audit, credited if we continue; see pricing for the options.

FAQ

Frequently Asked Questions

How many pages should a programmatic SEO launch start with?

Start with a small batch of the highest-demand variations, enough to see whether Google indexes and ranks them, rather than the full set. Expand only once that first batch is indexed and earning impressions.

Is using AI to write programmatic pages against Google's rules?

Not in itself. Google's scaled content abuse policy targets mass-produced pages made mainly to manipulate rankings, however they were produced, so AI copy grounded in real data and reviewed by a person is fine, while AI copy that is the only difference between pages is the risk.

Can programmatic SEO work on a brand-new domain?

Rarely at scale. A new domain has little authority or crawl priority, so thousands of template pages often sit unindexed; build a core of strong pages and links first, then add programmatic pages in batches.

How is programmatic SEO different from faceted navigation?

Faceted navigation creates URLs as a side effect of filtering, while programmatic SEO deliberately chooses which combinations deserve a page built for a search query. Most stores need both: facets kept out of the index and a curated set of combinations promoted to indexable landing pages.

Work with me

Let’s find your biggest growth lever

Tell me about your growth challenge. I’ll tell you honestly if I can help — and if I can’t, who can.

  • ✓ No obligation
  • ✓ No sales script
  • ✓ Honest feedback
  • ✓ Clear next steps