Pages from data
Programmatic SEO: When Pages Built From Data Earn Their Place, and When Google Calls Them Scaled Content Abuse
The pitch arrives as a spreadsheet: three thousand rows, one template, three thousand pages by Friday. Sometimes that is a genuinely useful catalog. More often it is three thousand ways of saying nothing, and Google has written a policy with its name on it.
October 29, 2026 · 12 min read

The short answer
Programmatic SEO means generating many pages from structured data and a template, such as one page per location, product, comparison or integration. Google does not object to the method. Its spam policies forbid scaled content abuse: many pages made mainly to manipulate rankings that add little value, however they are made. Each page needs facts a searcher cannot get from its siblings.
On this page
- A template, a table and a promise of three thousand pages
- Where Google's policies meet a template page
- Locations, products, comparisons: what makes each row worth a page
- The quality bar for page one and page three thousand
- Building the set so thin rows never become pages
- AI paragraphs are the fastest way into the policy
- Reading Search Console after launch
- Should a small business try programmatic SEO at all?
A template, a table and a promise of three thousand pages
Every programmatic project has the same three parts. A data set, where each row is a thing someone might search for: a store, a part number, a pair of products, a currency. A template, which lays out a page and leaves slots for the row's fields. And a build step that pours each row into the template and publishes the result. Real estate listings, flight routes, product catalogs and software integration directories all work this way, and they are some of the most useful pages on the web.
Google is not against the technique. Its snippet documentation says that for large database-driven sites, such as product aggregators, programmatic generation of meta descriptions can be appropriate and is encouraged, as long as the results read well and vary. Our meta tags guide covers that side. What Google objects to is the use the technique is most often sold for: filling an index with pages that exist to catch searches rather than answer them.
Where Google's policies meet a template page
Three of Google's spam policies, last updated August 28, 2026, describe programmatic projects gone wrong. Scaled content abuse is the main one. Google defines it as many pages generated for the primary purpose of manipulating search rankings and not helping users, typically large amounts of unoriginal content that provides little to no value, "no matter how it's created." Google announced the policy on March 5, 2024, extending its older rule on automatically generated content to pages made by people, machines or both.
| What Google's policy lists | How a template project gets there | What keeps a project clear |
|---|---|---|
| Scaled content: generating many pages with AI or similar tools without adding value | A model writes a paragraph per row to make thin pages look full | Prose only where a person adds knowledge the data lacks |
| Scaled content: scraping feeds or search results, including synonymizing or translating them | Rows lifted from a competitor's catalog or a public listing site, lightly reworded | Data you own, license or compiled yourself |
| Scaled content: pages that make little sense to a reader but contain search keywords | Every combination of service, adjective and town gets a page | Only combinations people search for and you can serve |
| Doorway abuse: pages targeted at regions or cities that funnel users to one page | Hundreds of town pages that all end at the same form | Pages for places where something real differs |
| Doorway abuse: substantially similar pages closer to search results than a browseable hierarchy | Filter combinations published as standalone pages with no route to them | A category structure a visitor could walk through |
| Thin affiliation: product descriptions and reviews copied from the merchant | A product feed pushed straight into pages with affiliate links | Your own testing, photos, comparisons or use notes |
Google's spam policies say it detects violations through automated systems and, as needed, human review that can end in a manual action. The white hat SEO guide covers both kinds of penalty and the way back. The useful reading of this table is narrower: none of these examples is about templates. Every one is about pages that do not add anything.
Locations, products, comparisons: what makes each row worth a page
Most programmatic projects a business considers fall into one of four families. Each has a field, or a set of fields, that justifies a page, and each has a common way of faking it.
Location pages
Justified by a real place with something specific: a staffed store's hours, staff and reviews, or the jobs you have done in a town. Faked with a town name dropped into identical copy. Real stores are the subject of multi-location SEO; towns served from one base, and how many deserve a page, are covered in our service area page guide.
Product and catalog pages
Justified by specifications, stock, price, compatibility, photos and questions answered. Faked by a manufacturer's feed copied word for word, which Google's thin affiliation policy describes. The product pages guide covers the page itself.
Comparison pages
Justified when you have compared the two things: measured, tested, priced or used them both. Faked when the page is a table of each vendor's marketing claims set side by side, which tells a reader nothing the two home pages did not.
Integration, glossary and data pages
Justified by real details per row: what syncs, in which direction, on which plan, with which limits. Faked when every page says the same thing with a partner's name swapped in. Software companies face this most; see SEO for SaaS.
Notice the pattern. In every family, the useful version needs data the business actually holds, and the fake version needs only a list of keywords. That is why programmatic SEO tends to work for companies with real inventory, real locations or real records, and why it tends to fail for a business that starts with a keyword tool and works backward to the data.
The quality bar for page one and page three thousand
A template that works for the ten best rows can embarrass you on the ten worst. The bar has to hold for every page that ships, so set it as rules about the data, not as a feeling about the design. These tests are our practice, not Google's wording, but each maps to a question in Google's guide to helpful content.
- The empty-field test. List the fields that make a page useful. If a row is missing most of them, it does not become a page. Set the threshold before launch, in writing.
- The side-by-side test. Open two random pages from the set in two windows. Count the sentences that differ. If the differences fit on a sticky note, the pages are one page published many times.
- The search-again test. Google asks whether content leaves readers feeling they need to search again to get better information. Read a page as the searcher would. Could they act on it, or would they go back to the results?
- The would-you-build-it test. Google asks whether content is primarily made to attract visits from search engines. If nobody would build these pages for visitors arriving from your own navigation, they are search bait.
- The worst-row review. Before launch, a person reads the twenty thinnest pages the template produced. Those twenty are what a skeptical reviewer at Google will find first.
A template multiplies whatever is in the row, including nothing.
Depth across a set of pages is also how a site comes to be the obvious source on a subject, which our topical authority guide develops. A hundred pages that each answer something different do that. A thousand that answer the same thing do the opposite.
Building the set so thin rows never become pages
The safest programmatic sites are the ones where weak pages cannot be published by accident. That is a build decision, made before anyone writes a template.
- 1
Audit the data before the design
Count how many rows have each field filled in. A data set where most rows have only a name and a city is a list, not a site. Fix the data or shrink the set.
- 2
Write the inclusion rule
Decide which fields a row must have to earn a page, and generate pages only for rows that pass. In Next.js, generateStaticParams decides which pages are prerendered, and setting dynamicParams to false makes any other path return a 404.
- 3
Make the template conditional
Sections appear only when the row has data for them. An empty reviews block or a sentence like "No services listed" is worse than no section.
- 4
Give every page a route a person could walk
Link pages from category, state or city index pages with ordinary links, so the set forms a hierarchy instead of a pile. Our internal linking work and the XML sitemaps guide cover the plumbing.
- 5
Set titles and canonicals from the data
Each page gets a title built from its own fields and a self-referencing canonical. Near-duplicates point to the page they duplicate; our canonical tags guide explains when.
- 6
Launch a sample, then the rest
Publish a few dozen of the strongest pages first and watch how Google indexes them for some weeks before releasing the remainder. The sample tells you whether the bar is high enough.
If a row fails the rule after launch, because a store closed or a product was discontinued, remove the page and let it return a 404, or redirect it to the closest real replacement. Do not leave an empty template live with a 200 status; Google may report it as a soft 404 regardless.
AI paragraphs are the fastest way into the policy
The modern version of the thin page is not empty. It is full of fluent, generic paragraphs a language model wrote to make each row look substantial: a history of the town, the benefits of the service, a paragraph that restates the heading. Google's guidance on generative AI content, updated October 1, 2026, says plainly that using generative AI tools to generate many pages without adding value for users may violate the scaled content abuse policy.
AI that adds to a programmatic page
- Turning a row's raw fields into readable sentences that a person then checks
- Drafting a summary of data you hold, such as real review themes for one store
- Writing meta descriptions from page-specific data, reviewed before publishing
- Helping an editor find rows with contradictory or missing values
AI that only adds words
- A unique-sounding introduction for each of five hundred towns
- Invented local color for places you have never worked
- Paraphrases of the same paragraph to dodge duplicate detection
- Comparisons of products nobody tested, written from their marketing pages
The same Google page asks for accuracy checks on everything a model writes, including titles, meta descriptions, structured data and alt text, because those appear in results. Our guides to AI writing and scaling content cover the editing and the quality gates when the pages are written rather than generated.
Reading Search Console after launch
Google's index tells you quickly what it thinks of a page set, if you know which report to read. Filter the Page indexing report in Google Search Console to the folder the pages live in, and compare the counts with how many you published.
| Status | What Google's help says | What it usually means for a template set |
|---|---|---|
| Crawled, currently not indexed | Crawled but not indexed; it may or may not be indexed in the future | Google read the page and passed. Many of these in one folder points at thin or repetitive pages |
| Discovered, currently not indexed | Found but not crawled yet, typically because crawling was expected to overload the site | Google knows the URLs and has not prioritized them; more likely when thousands launch at once |
| Duplicate without user-selected canonical | A duplicate of another page, with Google choosing a different canonical | The template produced pages Google considers the same page |
| Soft 404 | A page that looks like a not-found page but returns a 200 status | Empty or near-empty rows went live |
Crawl budget is rarely the real constraint for a business site. Google's crawl budget guide is written for sites with roughly a million or more pages that change weekly, or ten thousand or more that change daily, and calls those rough estimates. Below that, a set that will not index is usually a quality verdict, not a capacity problem. Fix the pages or prune them; resubmitting the sitemap does not change Google's verdict on what is in it.
Should a small business try programmatic SEO at all?
Mostly no, and the reason is the data, not the technology. A plumber serving one metro has a few dozen services and a handful of towns; that is a site to write by hand, with long-tail SEO pages built one at a time. Programmatic methods pay when the business already holds structured information people search for: a chain with forty stores, a distributor with ten thousand parts, a marketplace with real listings, a software company with real integrations.
When it does fit, it is a build project first. Pages generated from data need a site that renders them as HTML, an inclusion rule in code and a template that knows when to stay quiet. DataCram builds custom sites on Next.js, where pages are prerendered from the data and the rules live in code, from $1,500 for a fixed-price build, from $2,500 for sites with a store, and from $575, depending on complexity, for a portal or web app, per our web design pricing. Each includes Athena CMS, whose Atlas agent watches page depth and structure and whose Ariadne agent suggests internal links, all for approval.
If a previous vendor already published a few thousand thin pages, the job is pruning and recovery, which our SEO visibility recovery work handles. Ongoing SEO programs start at $575 a month, depending on complexity, setup and budget, with no long contract, per our SEO pricing page. The free website audit is a sensible first look, and the SEO guide shows where this topic sits among the rest.
Questions owners ask about SEO
Programmatic SEO is publishing many pages from a data set and a template, so each row of data becomes a page targeting a specific search: a location, a product, a comparison, an integration. It works when each row holds information searchers need. It fails when the rows differ only by a keyword, which matches what Google's spam policies call scaled content abuse or doorway abuse.
The method is not. Google's documentation even encourages programmatic meta descriptions on large database-driven sites. The violation is the purpose and the result: many pages made mainly to manipulate rankings that offer little value, which Google's scaled content abuse policy covers however the pages are produced. Pages that each give a searcher something specific are judged like any other page.
Google does not publish a number, and volume alone is not the test. A thousand product pages with real specifications are fine; fifty town pages with swapped names are not. Set an inclusion rule for which rows earn a page, launch a sample first, and watch the Page indexing report. A rising count of crawled but not indexed pages is the early warning.
With care. Google's generative AI guidance says using AI to generate many pages without adding value for users may violate its scaled content abuse policy, and asks for accuracy checks on everything a model writes, titles and descriptions included. AI can turn real data into readable sentences. It should not invent local detail or pad thin rows to look complete.
Often, and they are where most projects go wrong. Google's doorway policy names pages targeted at specific regions or cities that funnel users to one page. Real stores with their own hours, staff and reviews deserve pages; see multi-location SEO. For towns served from one base, the service area page guide explains how many to build.
Usually because Google read them and judged them too similar or too thin. Check the Page indexing report for Crawled, currently not indexed, Duplicate without user-selected canonical and Soft 404 in that folder. Google's crawl budget guide is aimed at sites with around a million or more pages, so smaller sets rarely hit a crawl limit. Improve or remove the weak pages before resubmitting anything.
Keep reading
- Many addresses, one brandMulti-Location SEO: Profiles, Location Pages and Reviews for Every Address You RunMulti-location SEO, address by address: one verified profile each, bulk verification and store codes, location pages that are not doorways, reviews per store.
- Scripts versus searchJavaScript SEO: How Google Renders Your Pages, and Where React Sites Go BlankJavaScript SEO from Google's own docs: how rendering works, CSR vs SSR vs static, the mistakes that hide pages, and how to see what Googlebot saw.
- The list you hand GoogleXML Sitemaps: What Google Does With Yours, With Examples, Limits and GeneratorsWhat an XML sitemap does and does not do, per Google's docs: the format, the 50,000 URL limit, honest lastmod dates, index files and how to submit one.
- Owning a subjectTopical Authority: How Pillar Pages and Topic Clusters Make a Site the Obvious SourceTopical authority is an industry term, not a Google score. What Google does reward, how pillar pages and clusters work, and how to map yours.
- Two suites, one budgetAhrefs vs Semrush: Plans, Prices and Limits Side by Side, and Who Should Buy NeitherAhrefs vs Semrush compared on price, credits, rows, rank tracking, history and AI tracking as of October 2026: who should buy which, and who needs neither.
- Paid links, unpackedBuying Backlinks: What Link Vendors Really Sell, What It Costs You Later, and the Paid Options Google AllowsWhat link packages, niche edits and PBN links really are, what Google's paid-link policy says, the paid options it allows, and how to vet a link service.
- Everything in SEO GuideSee the section
Find out whether your data can carry a page set
Tell us what data you have and what pages you are considering, or have already published. We will look at it and reply with how many pages it can honestly support and what building them involves.
Which of these sounds like you? (pick any)
Rather talk now? Call (210) 346-0848.