Programmatic SEO is the practice of generating a large set of pages from a structured data source rather than writing each one by hand. One template, one dataset, thousands of URLs.
It has a reputation problem, largely because it is easy to do badly. Done well, it is how comparison sites, marketplaces and directories capture demand that would be uneconomical to chase manually. Done badly, it produces thousands of near-identical pages that get filtered out of the index and drag down the rest of the domain with them.
The difference is not the technique. It is whether the underlying data actually varies.
The test that decides everything
Before building anything, answer one question:
If a reader landed on this page, would the data on it answer their question better than a general page would?
If the answer is yes, programmatic SEO is the right tool. If the answer is "well, the city name is different," it is not.
Consider two examples with identical structure:
- "Flights from Berlin to Lisbon" — real, varying data: routes, carriers, typical prices, seasonality. Every permutation is genuinely a different answer.
- "Plumber in Kettering" — if you have no plumbers in Kettering, the page is a template with a place name substituted in, and it deserves to be filtered.
The first scales. The second is what gives the practice its reputation.
What a good programmatic page contains
A page that survives is a page with something on it that exists nowhere else on your site.
- Data unique to the permutation. Prices, counts, availability, specifications, dates — something a reader could not have guessed.
- A genuinely different title and description. Generated from the data, not from the template.
- Enough internal links to be crawlable. Orphaned pages in a sitemap get crawled slowly and dropped quickly. Link permutations to each other along whatever dimension readers actually navigate.
- An honest empty state. When you have no data for a permutation, do not publish the page. Return a 404 or redirect to the parent category.
That fourth point is where most implementations fail. The dataset has 10,000 rows, 6,000 of them are thin, and all 10,000 get published anyway.
Sizing it honestly
A useful sanity check before you build: multiply your dimensions, then divide by the number of permutations you have real data for.
| Dimensions | Permutations | With real data | Publish? |
|---|---|---|---|
| 50 cities × 20 services | 1,000 | 900 | Yes |
| 50 cities × 20 services × 12 months | 12,000 | 700 | No — cut the third dimension |
Three dimensions is usually one too many. The third one rarely has data behind it, and it is what turns a good 900-page site into a bad 12,000-page one.
The maintenance problem nobody plans for
Generated pages are not write-once. The data behind them goes stale, and stale data on a page that claims to be current is worse than no page.
Whatever you build needs an answer to: what happens when a row changes, what
happens when a row disappears, and how does lastmod in the sitemap reflect
either. If the answer is "we regenerate everything monthly and hope," the
project has a shelf life.
Where automation fits
The generation itself was never the hard part — a templating loop is an afternoon of work. The hard parts are keeping metadata unique, keeping internal links coherent as the set grows, keeping the sitemap accurate, and pruning permutations that lose their data.
That is the work NOPPBO automates: pages are generated from your data with per-page metadata and schema, internal linking is maintained as the set changes, and the sitemap tracks what is actually live. See the features overview for how the pieces fit together.
Before you start
Programmatic SEO is a multiplier, not a strategy. It multiplies whatever underlying value your data has — which means if the data is thin, you are scaling thinness.
Get one page right by hand first. If that page would not rank on its own merits, a thousand versions of it will not either.
Related: How to Launch an SEO-Ready Website in Under a Minute.