On-Page SEO

Template-level on-page SEO: fix once, apply to 40,000 URLs

Why page-by-page on-page SEO cannot keep up on large sites, and how to write title, heading, internal link and schema rules at template level instead.

Published July 24, 2026 8 min read

Downtown office towers viewed from street level, representing enterprise search competition

A page-by-page on-page retainer optimizes twenty URLs a month. A catalog site has forty thousand. At that rate the first pass finishes in a hundred and sixty years, by which time the product range has changed several times.

The unit of work is wrong. On any site above a few hundred pages, on-page SEO is a template exercise, and the deliverable is a rule rather than a list.

What “template level” actually means

Instead of writing forty thousand title tags, you write the pattern that generates them, and one deploy corrects every URL that uses it.

A weak default pattern:

{Product Name} | {Store Name}

A pattern carrying more information:

{Product Name} {Key Attribute} | {Category} | {Store Name}

The specifics depend entirely on the vertical and on what people actually search. The point is that the decision is made once, tested against a sample, and applied everywhere at the same time.

The same applies to meta descriptions, H1 construction, breadcrumb structure, internal link modules and structured data. Each is a rule with variables, not a piece of copy.

Where to find the patterns worth changing

Group your URLs by template first — product, category, collection, brand, blog post, location, and so on. Then, per group, ask:

Is the title pattern using the fields that matter? On a catalog, attributes people search by (size, material, compatibility, colour) are frequently sitting in the database and absent from the title.

Is it truncating? A pattern that puts the store name first wastes the most valuable characters on something identical across every page.

Is the H1 distinct from the title? They serve different readers. The title is a SERP advert; the H1 confirms to a visitor they landed in the right place.

Is there any unique text at all? Category pages that render only a product grid give Google very little to work with. A short, genuinely useful intro — written once per category, not generated — often moves these pages more than anything else.

Do internal links exist in the template? Related products, parent category, sibling categories, popular filters. These are the links that distribute authority through the site, and they are template features rather than editorial decisions.

Test the pattern before shipping it everywhere

The risk of template changes is symmetrical with their power: one bad rule applies to forty thousand URLs at once.

A safer sequence:

  1. Generate the new pattern for a sample of 50–100 URLs across the template and read them. Patterns that look fine in the abstract produce nonsense on edge cases — products with very long names, missing attributes, or characters that break the format.
  2. Check length distribution across the whole template, not the sample. Somewhere in forty thousand products is one with a 140-character name.
  3. Handle nulls explicitly. “Blue | Shoes” with a doubled space means an attribute was empty and nobody wrote a fallback.
  4. Ship to one category or subsection first where possible, and watch it for two to three weeks.
  5. Then roll out, and annotate the date in your analytics so the change is attributable.

Titles get the attention; internal linking is usually where more value sits on a large site.

Three template-level moves worth making:

Push authority downward from the pages that have it. The pages receiving the most internal links on most sites are navigation and footer targets — which need it least. A related-content module on high-authority pages pointing at commercial templates redirects that signal.

Fix orphans structurally. Orphaned pages exist because nothing in a template links to them. Adding a “more in this category” module usually resolves thousands at once, which no amount of manual linking would.

Use descriptive anchors in modules. “Read more” tells Google nothing. The module should emit the target page’s actual subject as anchor text, which is a template change, not a content one.

Schema belongs in the template too

Structured data hand-written per page will drift out of date immediately. Generated from the same fields that populate the page, it stays accurate by construction.

Keep it to types that are supported and relevant — Google documents these in its structured data guidance — and make sure every asserted value is also visible on the page. Review markup on a page with no visible reviews is a guideline violation, and it is easy to produce accidentally when the markup is generated separately from the rendering.

The QA step nobody does

Template changes fail quietly. A deploy that drops the H1 from a template, or emits an empty title for products missing an attribute, will not throw an error anywhere.

After every on-page template deploy:

  • Re-crawl the affected template and check the distribution of title length, H1 presence and canonical target. Compare against the pre-deploy crawl.
  • Diff the internal link count per URL. A module that silently stopped rendering shows up here and nowhere else.
  • Validate structured data on a sample from each template.
  • Watch Search Console coverage for two weeks for any unexpected exclusions.

This is the step that separates on-page work that compounds from on-page work that quietly regresses a quarter later when someone refactors the component.

What to expect

Template-level title and heading changes typically register in Search Console within four to eight weeks — impressions first, clicks behind. Internal link changes are slower, because they work by redistributing authority, which Google reprocesses gradually.

The effect is also broad rather than dramatic: a small improvement across thousands of URLs rather than a large jump on one. That is harder to screenshot and worth considerably more.


This is what on-page SEO means here: a keyword-to-URL map, then patches written against your CMS, not a spreadsheet of recommendations. If you want to know which of your templates is leaving the most on the table, send us your domain — the free audit assesses on-page at template level as standard.

Next step

See it on your own URLs

Everything in this guide is part of the audit we run at the start of every engagement. Send your domain and you get the findings, prioritized by effort against revenue impact, inside five business days.

Get my free technical SEO audit

Five business day turnaround. No call required to receive it.