By Miguel Ángel Jiménez, Head of SEO at Gecko Studio
Most e-commerce sites we audit do not have an authority problem or a page-speed problem. They have an on-page problem: titles repeated across dozens of URLs, pages without an H1 that force Google to infer the topic from the body copy, meta descriptions that nobody has ever written and that the search engine replaces with whatever it sees fit. These are errors that are invisible in day-to-day operations but that systematically limit organic performance — especially in product catalogues where the sheer volume of pages amplifies the impact of every defective pattern.
This article is the spoke dedicated to on-page SEO within our complete SEO audit guide. Here you will find the real granularity: what to review field by field, how to interpret what you find, and what to do with it. To ground the theory, we use real data from an anonymised audit in our client portfolio — name, domain and URLs removed — because abstract figures teach nothing; the numbers from a real project do.
If what you are looking for is the complete structure of an SEO audit with all six blocks filled in, head to the SEO audit template with a real example. Here we focus on the on-page block.
What distinguishes on-page SEO from technical SEO
The confusion between on-page and technical is common, and it is worth clarifying before diving in because it affects how work gets prioritised.
Technical SEO deals with the website's infrastructure: page speed, crawlability, indexability, redirects, hreflang and canonicals. It is what allows Google to access the site and understand its structure. On-page SEO works with what is inside the visible HTML of each page: the metadata, headings, body text and semantic content. It is what tells Google — and the user — exactly what each URL is about and which search query it should appear for.
The distinction matters because on-page errors tend to be easier to fix — you do not need to touch the server or the architecture — but also easier to overlook because they do not trigger red alerts in any dashboard. A page with a 90-character title does not break anything. It just quietly costs you clicks and rankings, month after month. In an e-commerce site with hundreds or thousands of URLs, that silence can account for a significant share of lost organic traffic potential.
The real case: what we found across 984 pages of a lighting e-commerce
The site we use as an example is a lighting e-commerce with a dense product catalogue: luminaires, wall lights, ceiling lamps, downlights, LED strips and accessories, with variants by wattage, colour temperature, finish and dimensions. The crawl identified 984 pages returning a 200 status. Across that universe, the on-page analysis produced the following diagnosis:
Text equivalent (the same data as the chart):
| Field | Finding | Percentage of 984 pages |
|---|---|---|
| Missing meta description | 171 pages with no meta description | 17.4% |
| Missing H1 | 65 pages with no H1 | 6.6% |
| Missing title tag | 9 pages with no title | 0.9% |
| Duplicate titles | 68 groups of URLs sharing the same title; worst case: 10 URLs with an identical generic title (product variants) | — |
| Duplicate meta descriptions | 66 groups; worst case: 8 URLs with exactly the same description text | — |
Taken together, these numbers describe a classic e-commerce pattern of growth without a metadata system: the product architecture works, the catalogue is broad, but the semantic labelling of each URL has never been addressed. Google will crawl these pages, but it will receive generic, duplicate or outright absent signals on nearly one in five pages. The predictable outcome is that the long tail of product searches — which in lighting is enormous: brand, wattage, kelvin, fitting, IP rating, finish — goes uncaptured for lack of specific titles.
Title tag: the field that matters most for CTR and long-tail capture
The title tag is the text that appears in search results as the clickable link. Google can rewrite it, but if yours is well constructed it tends to respect it. When it is not — too long, too generic, or duplicated — Google replaces it with a fragment from the H1 or the body copy, almost always a worse outcome. In e-commerce, title rewriting is especially frequent precisely because many catalogues generate identical or very short titles.
What to review in the audit:
- Length: between 50 and 60 characters is the safe range. Above 60, Google truncates with an ellipsis on desktop. Below 30, you are wasting visibility space and leaving out product attributes that could capture specific searches.
- Primary keyword: it should be present, ideally towards the beginning, but without forcing it. On product pages, the product name with its differentiating attributes is usually the most valuable keyword. A title that precisely identifies the product will outrank a generic category title for long-tail queries.
- Uniqueness: every URL needs a different title. In e-commerce with product variants, the risk of duplicates is structural: if the system does not differentiate the title of the "black" variant from the "white" variant, both compete against each other and confuse Google about which one to rank for each search.
- Alignment with search intent: a product page with transactional intent should sound transactional in the title. A category page with navigational-exploratory intent should feel like an entry point, not like a specific product listing.
What the real finding means: 68 groups of URLs share the same title. In the worst case, the same title is repeated across 10 URLs that correspond to automatically generated product variants with no facet configuration. Google receives 10 identical signals and cannot differentiate between them. The result: none of the 10 reaches the ranking potential it would have with a specific title that declares the attributes of that individual variant.
The fix is editorial and configurational, not technical: you need to establish a unique title pattern for each page type and, in the case of variants, configure the automatic generation rules so that the relevant attributes (wattage, finish, colour temperature) are systematically incorporated into the title. For 10 URLs sharing the same pattern, one well-defined rule resolves the entire group at once.
| Title | |
|---|---|
| Generic (repeated across variants) | Recessed LED spotlight | Lighting shop |
| Specific (unique per variant) | Recessed LED spotlight 7W 4000K matt black | Brand X |
The second is not only unique: it captures searches the first would never reach — "recessed led spotlight 7w black", "recessed spotlight neutral light black" — without adding a single minute of linking or content work. The difference is a generation rule, not manually writing every title.
Meta description: it does not rank, but it does convert
The meta description is not a direct ranking factor. Google made that clear years ago. But it does determine whether the user who sees your result clicks or keeps scrolling. In a product SERP where several lighting retailers compete with visually similar results, a well-written snippet can be the difference between a 3% and a 6% CTR for the same position — which means double the traffic without moving a single ranking.
What to review in the audit:
- Length: between 120 and 155 characters. Above that, Google cuts it. Below that, you are leaving free space that could be used to communicate a differentiator or a concrete call to action.
- Call to action: in e-commerce, direct action verbs — "buy", "check availability", "discover" — improve CTR. The description should invite the user to do something, not merely describe the product.
- Product differentiator: if your description says the same thing as five competitors, the user has no reason to choose you. One concrete attribute — next-day delivery, extended warranty, permanent spare parts stock — can tip the decision in a closely contested SERP.
- Uniqueness: a meta description identical across multiple pages does not incur a direct penalty, but it wastes the opportunity to present each product with its own specific sales argument.
What the real finding means: 171 pages — 17.4% of the total — have no meta description. On those pages, Google selects the snippet text on its own: typically a fragment from the product spec sheet or description that matches the user's search at that moment. It can work for highly specific searches, but it is not the message the commercial team would choose.
There are also 66 groups of URLs with the same meta description text — and in the worst case, 8 URLs with exactly the same generic copy. The issue is not just wasted opportunity: 8 identical results in the SERP blur into one another and reduce the overall CTR of the entire product group.
H1: one only, clear and consistent with the title
The H1 is the visible headline of the page. It does not have to be identical to the title — in fact, it is recommended that they differ slightly to capture search variations — but they must be consistent with each other. If the title identifies one product and the H1 presents something different, Google has two conflicting topic declarations within the same page.
Basic rules:
- One per page only. More than one H1 creates ambiguity about the main topic. In e-commerce this is a frequent mistake when the product name appears in the H1 of the body and also as a heading inside the tech spec block of an external widget.
- Primary keyword or close semantic variant. The H1 is where the keyword carries the most signalling weight within the page's HTML. On a product page, the product name with its identifying attributes is the natural choice.
- Reasonable length. Between 20 and 70 characters is typical. A product H1 that includes family, wattage, finish and colour temperature in a single heading can be long but is semantically correct if all those attributes are relevant to the search.
What the real finding means: 65 pages have no H1 — 6.6% of the total. On those pages, Google has to infer the main topic from the body content or from the title. It can do so, but with less precision. In a dense catalogue where many products are variants of the same family with different attributes, that imprecision translates directly into a reduced ability to capture the long-tail searches that distinguish each SKU.
Heading structure beyond H1: H2s should represent the main thematic blocks of the product page — technical specifications, recommended uses, compatibility, documentation. H3s develop sub-topics within each H2. A common mistake in automatically generated product pages is using headings to visually format administrative sections — "reference", "EAN", "weight" — when those elements are not topics from a semantic standpoint. Headings are semantics, not aesthetics.
Search intent: what most separates a shallow audit from a real one
This is the point most commonly skipped in audits built around exporting a Screaming Frog spreadsheet and ticking cells. And it is the one that most explains why a technically well-optimised product page still fails to rank for its most valuable searches.
Search intent is what the user wants to achieve when they enter a query. It is not the same as the words they use: two queries with different words can share the same intent, and two queries with the same words can have different intents depending on context. There are four fundamental types:
- Informational: the user wants to learn something ("what is the difference between LED and fluorescent", "how to choose colour temperature for a kitchen").
- Navigational: the user wants to go to a specific place ("Philips Hue login", "X lighting shop").
- Transactional: the user wants to buy ("buy recessed led spotlight 7w black", "led downlight 10w price").
- Commercial investigation: the user is comparing options before deciding ("best led strip for living room", "differences between downlight and recessed spotlight").
How to audit it field by field:
- Open the first 5–10 Google results for the target keyword of each strategic page.
- Observe the dominant format: are they individual product pages? Category pages? Comparison articles? Buying guides?
- Note the depth: are they minimal pages with technical specs, or pages with editorial content about the product?
- Compare the format and depth of the top results with your own page.
If 90% of the results for a keyword are buying guides with informational content and your page is a purely transactional product sheet, Google will not rank it there. Not because the page is poor, but because it does not answer what the user expects to find at that stage of the process. In lighting, many high-commercial-intent searches ("best downlight for kitchen", "which LED to choose for bathroom") have mixed intent: the user wants advice before buying. A category page or guide that answers that pre-purchase phase will outrank a direct product sheet.
Applied to the real case: in a lighting e-commerce, the common mistake is treating category pages — "outdoor luminaires", "kitchen lighting" — as direct conversion pages with just a product listing and filters, when the dominant intent for those searches is exploratory and advisory. The user wants to understand what they need before choosing a specific product. A category page that includes orientating content — what type of light suits that space, what wattage and colour temperature to choose — answers that intent and ranks where a pure listing page cannot.
Keyword cannibalisation: the problem nobody sees until it is too late
Cannibalisation occurs when two or more pages on the same site compete for the same keyword. Google cannot decide which to prioritise and ends up rotating between them, ranking both at half their potential — worse than if there were one well-optimised page. In dense-catalogue e-commerce, cannibalisation between product variants and category pages is one of the most common structural problems and one of the hardest to detect manually.
How to detect it in the audit:
- Export the queries report from Google Search Console. Group by keyword: if the same query appears with two different URLs at similar positions, or if the URL heading the result changes week to week, there is a cannibalisation signal.
- Search in Google:
site:yourdomain.com "target keyword". If two or more of your own pages appear, you have internal competition. - Tools such as Ahrefs let you filter organic keywords by URL and detect overlaps directly from the rankings report.
What to do depending on the situation:
| Situation | Recommended solution |
|---|---|
| One page is clearly stronger (more traffic, better content) | Canonical from the weaker to the stronger, or a 301 redirect if the weaker page has no standalone value |
| Both pages have useful traffic but for different intents | Differentiate the intent of each URL and reinforce its primary topic with specific content |
| Both compete for the same thing and neither ranks well | Merge them into a single, more comprehensive page that consolidates authority |
The duplicate title trap as a cannibalisation accelerator: in the real case, the generic title repeated across 10 URLs is not just an isolated on-page error. It is also a cannibalisation accelerator: Google sees 10 pages with the same topic declaration and treats them as equivalent candidates for the same searches. Fixing the duplicate titles and ensuring each URL declares a differentiated topic resolves the duplicate and reduces cannibalisation in a single move. In e-commerce, this is one of the clearest ROI plays in a well-executed on-page audit.
Product duplicates: the e-commerce-specific pattern with variants
The real case illustrates a pattern that does not arise on corporate or editorial sites but is almost universal in catalogue e-commerce: title and meta description duplicates are not editorial errors — they are the outcome of a variant architecture with no facet configuration. When a shop sells the same spotlight in five finishes and three wattages, the system can generate fifteen URLs with identical metadata because nobody has defined the differentiation rules.
Common sources of duplicates in e-commerce:
- Product variants without title rules: the platform generates one URL per attribute combination but applies the same title from the parent product sheet to all of them.
- Paginated category pages without a canonical:
/outdoor-lighting/page/2/may carry the same title as/outdoor-lighting/with barely any difference in listing content. - Indexed facet filters:
?colour=black&wattage=7wgenerates URLs with content nearly identical to the base page if the platform does not apply a canonical or noindex to facet pages. - Brand and family pages with boilerplate descriptions: if the same introductory paragraph is reused across all brand pages with only the name swapped, Google may treat those pages as thin versions of the same document.
The fix is not technically complex: canonical pointing to the parent product sheet on variants that should not rank independently, title rules that incorporate differentiating attributes on variants that should rank on their own, and noindex or canonical on pagination and facet pages with no standalone search value. The difficulty lies in deciding which variants deserve to rank autonomously — because they have specific search volume — and which are simply configuration options the user will select on the parent sheet.
URL structure: how it affects on-page performance in a catalogue
The URL is not strictly an on-page field, but it directly influences how Google and the user interpret the topic of the page. In e-commerce, URL structure also has implications for variant canonicalisation and parameter handling.
What to review:
- Descriptive slug: the part of the URL after the domain should describe the content using natural keywords.
/outdoor-lighting/led-spotlight-7w-black/is better than/product?id=2847and also better than/all-our-outdoor-led-spotlights-available/. - Category hierarchy reflected in the URL: the folder structure should mirror the information architecture.
/luminaires/outdoor/downlights/communicates something different and more precise than/products/category-3/. - Variant parameters: URL parameters generated by attribute selection (
?colour=,?finish=) should be excluded from indexation or covered by a canonical if they produce content substantially similar to the clean URL. - Stability: changing the URLs of pages with traffic and link history breaks everything built up unless done with correct 301 redirects. In an audit, poorly structured URLs are documented but not touched if they carry accumulated authority — unless the long-term benefit justifies the risk and cost of migration.
How to prioritise on-page findings when you have nearly a thousand pages
On a 984-page site, on-page findings can easily add up to hundreds of actions. The temptation is either to attack them all at once or to be paralysed by the volume. Neither works.
Correct prioritisation crosses two axes: impact (how much traffic or CTR a fix can recover) and effort (how many hours it takes to implement). High-impact, low-effort actions go first, always. In the on-page block of an e-commerce site, that quadrant is typically occupied by:
- Fix the 9 pages with no title: low effort, immediate impact. Without a title, Google puts whatever it wants. These are only 9 URLs and the fix is straightforward.
- Establish title rules for the 68 duplicate title groups: one well-defined editorial rule that incorporates the key attributes can resolve all 10 URLs in the worst-case group in the time it would take to manually write 3 titles. High impact on long-tail capture and cannibalisation.
- Write meta descriptions for the strategic pages missing them: not all 171 matter equally. Start with those receiving the most traffic and those competing in the most contested product SERPs.
- Add H1 to the key pages missing one: of the 65, prioritise those with the most relevant target keywords and the best ranking potential. Product pages with the highest margin or highest search volume go first.
- Resolve duplicate meta description groups: 66 groups with identical text represent CTR opportunities being left on the table. One differentiated description per product family is more efficient than one per individual URL.
Audits that work are not the most exhaustive ones — they are the ones that ensure the team knows what to do on Monday morning. A list of 171 tasks in no particular order is paralysing; a sprint of ten well-defined title rules that resolves the duplicate groups is measurable and produces visible results within a few weeks.
To see how this block fits into the global prioritisation of an audit — with all six blocks together and cross-referenced actions — see the SEO audit template with the complete real example.
Structured data at page level: when and what to implement
Structured data (schema.org) is not a direct ranking factor, but it can generate rich snippets — enhanced results — that make your listing occupy more visual space in the SERP and improve CTR without moving position. In e-commerce, the impact is especially visible because product snippets showing price, availability and ratings stand out clearly against unenriched results.
Most relevant types for the on-page block of an e-commerce:
| Schema type | When to use it |
|---|---|
Product | Product pages; requires price and availability for Google to activate the rich snippet |
BreadcrumbList | Any page with a breadcrumb trail; improves the URL presentation in results |
FAQPage | Category pages or buying guides that include genuine user questions and answers |
Article | Editorial blog content integrated into the shop (buying guides, comparisons) |
LocalBusiness | Physical shop or contact page with verifiable physical details |
HowTo | Installation guides or tutorials where the steps are the primary content |
Common implementation errors:
- Adding
Productwithout price or availability: the product rich snippet requires those fields to activate. Without them, the markup is present but produces no visible enhanced result. - Marking a technical specification section as
FAQPagewhen it does not answer genuine user questions: Google may ignore or invalidate the markup. - Having duplicate JSON-LD from the platform theme and from a schema plugin without deactivating one: generates errors in Search Console and inconsistent rich results.
- Not updating the price in the markup when it changes in the database: a discrepancy between the marked price and the real price can lead to rich result demotion.
How to validate it: Google Search Console > Enhancements, or directly the Google Rich Results Test. It takes fewer than five minutes per URL and rules out most errors before publishing.
On-page SEO audit in practice: field checklist
This is the operational summary. It is not designed to be read here and forgotten, but to have in front of you while you review each URL. It is adapted for sites with product catalogues, although the columns are valid for any type of site.
| Field | What to check | Problem indicator |
|---|---|---|
| Title tag | Length, keyword + attributes, uniqueness, intent | Over 60 chars · duplicate · no keyword or attributes · wrong intent |
| Meta description | Length, CTA, uniqueness, product differentiator | Missing · over 155 chars · duplicate · no call to action |
| H1 | Presence, uniqueness, keyword, consistency with title | Missing · more than one · no keyword · conflicts with title |
| H2–H6 | Logical hierarchy, not decorative | H3 before H2 · headings used for admin fields with no semantic value |
| Search intent | Format and depth aligned with top 5 results | Transactional page for an advisory search (or vice versa) |
| Cannibalisation | No two URLs competing for the same query | Same query with two different URLs in GSC · identical titles on variants |
| URL and parameters | Descriptive slug, variant parameters with canonical or noindex | Indexed parameters without canonical · inconsistent folder structure |
| Variants and facets | Canonical on variants with no standalone value · title rules for variants that do rank | 68+ duplicate title groups · indexed facet URLs without canonical |
| Structured data | Product with price and availability, no duplicate markup, validated in GSC | Duplicate schema · Product without price · FAQPage with technical specs |
If you want to take this checklist into a real audit covering all blocks — technical, indexation, content and links — the SEO audit template gives you the complete structure with the same anonymised example filled in block by block. And if you are looking to delegate this work, the SEO audit page explains how we work and lets you request a quote.
For the technical block — crawlability, indexability, Core Web Vitals and redirects — the technical SEO audit article covers that layer at the same level of detail. And if the site has versions in multiple languages or markets, the international SEO audit covers hreflang, geo-targeting and cannibalisation between language versions.
Frequently asked questions about on-page SEO audits
What is the difference between an on-page and an off-page SEO audit?
An on-page audit analyses what is inside each page of your site: metadata, headings, content, URL structure and structured data. An off-page audit analyses what is outside: who links to your site, with what anchor text, the authority of those domains and the backlink profile as a whole. Both blocks form part of a complete SEO audit, but they are worked with different tools and methodologies.
Can an on-page SEO audit be done without paid tools?
Yes, in part. Google Search Console detects coverage errors and some performance issues. Screaming Frog has a free version that crawls up to 500 URLs and identifies duplicate titles, pages without H1 and missing meta descriptions. Search intent analysis can be done manually by looking at Google's results. What does require paid tools is cannibalisation analysis at scale, historical position comparisons and tracking changes over time.
How many pages without a meta description is acceptable in an e-commerce?
The goal is zero, but in large catalogues zero is aspirational. What matters is that the strategic pages — those receiving the most traffic, those with the highest margin, or those competing in the most contested product searches — have their own well-written meta descriptions. In the real case analysed, the 17.4% missing meta descriptions represented a clear opportunity, but the team prioritised the duplicate title groups first because their impact on long-tail positioning was more direct and immediate.
What happens if I have pages with the same H1 across multiple variant URLs?
An identical H1 across multiple product variants signals that those pages are not declaring differentiated topics. Google may interpret this as thin duplicate content or as a signal of low thematic specificity. If the variants should rank independently because they have their own search volume, the H1 needs to be differentiated with the attributes that distinguish them. If the variants are simply configuration options for the user, the most efficient approach is to apply a canonical pointing to the parent product sheet and not attempt to rank them independently.
How often should the on-page of an e-commerce be reviewed?
It depends on the pace of new product additions and platform changes. For an active e-commerce that adds product regularly, a review of the on-page block every three to four months is reasonable. The highest-risk moments are platform migrations, CMS changes, new category launches and seasonal campaigns that create temporary landing pages that later become orphaned. Those moments should always be followed by a review.
Do Product structured data improve rankings directly?
They are not a confirmed ranking factor according to Google. What they do is improve the presentation of the result in the SERP — with price, availability, ratings or breadcrumbs visible — which can increase CTR for the same position. In e-commerce, the effect of product rich snippets on CTR is one of the most consistently measurable across all schema types. The causal chain with rankings is not direct, but the real impact on traffic is clearly measurable in projects where it is correctly implemented.
How is cannibalisation detected between product variants and category pages?
The most effective method is to cross the Google Search Console positions report with segmentation by URL. If the same keyword is intermittently ranking with variant URLs and with the parent category URL, there is structural cannibalisation. In Ahrefs, the organic keywords report filtered by URL lets you compare what each page is capturing and detect overlaps directly. Once the pattern is identified, the solution involves deciding which URL should win for each intent and applying a canonical or differentiated content accordingly.