Programmatic SEO Case Study: Pages, Traffic and What Failed

Most programmatic SEO content falls into two camps: lists of famous examples (Zapier, Wise, Tripadvisor) and warnings about thin content. What’s missing is a plain account from someone who built the pages, watched the traffic, and had to explain the numbers to a boss. This is that account: what we shipped, what the data showed, and what we’d undo.

Note: figures in [brackets] are placeholders. Replace them with your own Search Console and analytics numbers before publishing.

The project in brief

The goal was to capture long-tail search demand for [a service/product category] by generating landing pages from a structured dataset rather than writing each by hand. The site ran on WordPress, with a custom post type, a template, and a dataset of [number] rows imported through a CSV pipeline.

The starting position: a domain with [DR/DA] authority, roughly [X] organic sessions a month, and about [X] hand-written pages. The programmatic target was [X] pages built around one repeatable pattern: [service] in [location].

Why this pattern? Keyword research showed [X] distinct modifier combinations with combined monthly volume of about [X], almost all of it with fewer than 50 searches per keyword. No single page was worth writing by hand. Together, the cluster was worth more than our entire blog.

What we built

The dataset. Each row held a location, a set of attributes (pricing range, count of providers, typical turnaround), and a short list of related entities. We sourced [X]% from our own first-party records and the rest from public sources.

The template. Every page had a unique H1, an intro paragraph assembled from three or four data points, a comparison table, an FAQ block, and internal links to the three nearest locations and the parent category page.

The rollout. We did not publish everything at once. We launched [X] pages in week one, checked indexing, then released in batches of [X] each fortnight.

The numbers

Month Pages live Indexed Impressions Clicks
1 [X] [X] [X] [X]
3 [X] [X] [X] [X]
6 [X] [X] [X] [X]
9 [X] [X] [X] [X]

The pattern in our data, and in most honest write-ups of this approach, was not a smooth curve. Impressions rose quickly, indexing lagged, and clicks arrived late and concentrated. By month nine, [X]% of clicks came from [X]% of the pages. The rest produced impressions and almost nothing else.

That concentration is the first thing to internalise: programmatic SEO does not give you [X] pages that each bring a little traffic. It gives you a small group of winners, a large middle that does nothing, and a tail that may hurt you.

What failed

1. We published pages with no real difference between them

The template changed the location name and a few numbers, but for roughly [X]% of locations the underlying data was nearly identical. Search Console showed a large share of those URLs under “Crawled – currently not indexed” and “Duplicate, Google chose different canonical.”

The lesson: uniqueness must come from the data, not the template. If two rows would produce near-identical pages, they should be one page, or neither should exist.

2. We ignored crawl budget and internal linking depth

Our first version linked to neighbouring locations through a flat footer list. Pages sat [X] clicks deep, and Googlebot’s crawl stats showed it spending time on parameter URLs and pagination instead of the pages we cared about.

Fixing it meant hub pages by region, a proper XML sitemap split by batch, and removing [X] low-value URLs from the crawl path. Indexing of the remaining pages improved from [X]% to [X]% within [X] weeks.

3. We measured the wrong thing

For the first quarter, our dashboard tracked pages published and impressions. Both looked healthy. Neither mattered. What mattered was clicks per indexed page and conversions per thousand sessions, and those told a much less flattering story: programmatic traffic converted at [X]% against [X]% for our hand-written pages.

Traffic from a “[service] in [small town]” query is often early-stage and low intent. We had optimised for volume and not checked whether volume was worth having.

4. A core update punished the weakest segment

In [month], a Google update coincided with a drop of [X]% in programmatic clicks, while hand-written pages were flat. We can’t prove causation, and nobody outside Google can. But the timing, and the fact that pages with the thinnest data fell furthest, matched what many practitioners reported.

We responded by noindexing the bottom [X]% of pages by data quality, consolidating [X] near-duplicates, and adding genuinely local information to the survivors. Recovery took about [X] months and was partial.

5. Nobody owned maintenance

Data goes stale. Prices changed, providers closed, and pages kept showing last year’s figures. Stale data is both a user problem and a trust problem, and we had no scheduled refresh. We now treat the dataset as a product with an owner and a monthly review.

What worked

  • Staged rollout. Batches let us catch the duplicate-content problem at [X] pages instead of [X].
  • First-party data. Pages built on our own records outperformed pages built on scraped or public data by a wide margin: [X] clicks per page against [X].
  • A strong comparison element. Pages with a useful table or calculator earned more engagement and links than pages with text alone.
  • Removing weak pages did not reduce total traffic. It slightly raised average position for the rest.

What I’d do differently

  1. Start with 50 pages, not 5,000. Prove that the pattern indexes, ranks and converts before scaling it.
  2. Set a quality gate per row. If a row lacks a minimum amount of unique data, no page gets generated.
  3. Define success before launch. Pick the metrics (indexed rate, clicks per page, conversion rate) and a threshold at which you stop.
  4. Plan for pruning from day one. Building the noindex rule is easier before the pages exist.
  5. Budget for human review. Sample [X] pages per batch and read them as a visitor would.

Is programmatic SEO worth it?

It can be, but only under specific conditions: you have proprietary or hard-to-collect data, the query pattern has real commercial value, and your site has enough authority to get new pages indexed. Without those, you are generating pages that search engines have little reason to keep.

The honest summary of our results: [X] pages produced [X] clicks, but [X]% of the value came from [X] pages. The programme paid back its cost after [X] months, mostly because of the winners, and in spite of the failures above.

If you are planning one, treat the first launch as an experiment, publish the failures to your team as readily as the wins, and let the data decide whether you scale.

Aadithya
Aadithyahttps://technologicz.com
A Aadithya is a content creator who publishes articles, thoughts, and stories on a blog, focusing on a specific niche. They engage with their audience through relatable content, multimedia, and interacting with readers through comments and social media.

Related Articles

Popular Articles