01What programmatic SEO actually is
Programmatic SEO is generating a set of pages from a shared template and a data source, where each page targets one variation of a combinatorial query — “[city] + [service],” “[product] vs [product],” and similar patterns.
Done right, this is just a scaled version of the same logic behind any topical map: each template instance is one node in the map, scoped to a query that real users search and that the underlying data genuinely supports with a distinct, useful answer. Done wrong, it’s the same template stamped out for every mathematically possible combination, regardless of whether anyone would search for it or whether the page says anything the others don’t.
02Legitimate uses: genuinely combinatorial query networks
Programmatic SEO works when the query network is actually combinatorial — real search demand exists at each combination, and the data source can make each page substantively different.
03The thin-content failure mode
Thin programmatic content happens when a template is stretched to every combination the data allows, rather than scoped to where a distinct page is actually justified.
The tell is interchangeability: if you could swap the variable in a page’s H1 with a different value from the same list and the rest of the page would read identically, that page isn’t answering a distinct query — it’s a mail-merge. Search engines increasingly treat clusters of near-identical pages as a single low-value signal rather than many pages of authority, which means over-generation doesn’t just fail to help, it can actively dilute a domain’s standing on the topic.
04How to scope a template inside a topical map
Treat each programmatic template as one node type in the map, and apply the same core/outer and brief discipline to it that any other page gets.
| Question | What it decides |
|---|---|
| Does search demand exist at this combination? | Whether the page should be generated at all |
| Does the data support a distinct answer here? | Whether the page is substantive or a mail-merge |
| Where does this template sit in the map — core or outer? | Which pillar page it should link to and from |
| Is this page linked from its core section? | Whether it avoids becoming an orphan — see internal linking best practices |
This is also where the automation question from SEO automation applies directly: generating the pages at scale is mechanical, but deciding the template’s scope — which combinations earn a page — is a judgment call that has to be made before generation starts, not fixed after the fact.