Templates checked
| id | template | pattern | items per page | total items | pages in series |
|---|---|---|---|---|---|
| T1 | Category: Tents | numbered pages | 24 | 130 | 6 |
| T2 | Category: Backpacks | load more button | 36 | 210 | 6 |
| T3 | Blog index | infinite scroll | 10 | 85 | 9 |
| T4 | Product reviews | numbered pages | 8 | 61 | 8 |
Pages in series = total items / items per page, rounded up, computed by script. For T2 and T3 these pages do not exist as URLs today; the number is how many a paginated version would need.
Check results
Five checks per template. Check (e) is a Note, not a Fail, because Google only says to "consider linking from all individual pages in a collection back to the first page".
| template | check | result | evidence |
|---|---|---|---|
| T1 | (a) links | Pass | <a href="/c/tents?page=2">Next</a> |
| T1 | (b) unique URL, no # | Pass | page 2 is /c/tents?page=2 |
| T1 | (c) self canonical | Fail | page 2 canonical is https://oakhollow-outfitters.example/c/tents (page 1) |
| T1 | (d) crawlable URL behind load more or scroll | N/A | numbered pages, not load more or scroll |
| T1 | (e) link back to page 1 | Note | no link back to page 1 except the site logo |
| T2 | (a) links | Fail | <button onclick="loadMore()">Load more</button> is a button, not an link |
| T2 | (b) unique URL, no # | Fail | page 2 URL: "none, the button loads items with JavaScript" |
| T2 | (c) self canonical | N/A | no page 2 exists to carry a canonical |
| T2 | (d) crawlable URL behind load more or scroll | Fail | no paginated URL behind the button |
| T2 | (e) link back to page 1 | Note | no link back to page 1 except the site logo |
| T3 | (a) links | Fail | <span data-next="#page2">More posts</span> is a span, not an link |
| T3 | (b) unique URL, no # | Fail | page 2 is /blog#page2, a fragment |
| T3 | (c) self canonical | Fail | page 2 canonical is https://oakhollow-outfitters.example/blog (page 1) |
| T3 | (d) crawlable URL behind load more or scroll | Fail | infinite scroll with no crawlable paginated URL |
| T3 | (e) link back to page 1 | Note | no link back to page 1 except the site logo |
| T4 | (a) links | Pass | <a href="?reviews=2">2</a> |
| T4 | (b) unique URL, no # | Pass | page 2 is /p/ridge-2-tent?reviews=2 |
| T4 | (c) self canonical | Pass, see Ask | page 2 canonical is itself; your goal says reviews do not need indexed pages |
| T4 | (d) crawlable URL behind load more or scroll | N/A | numbered pages |
| T4 | (e) link back to page 1 | Note | no link back to page 1 except the site logo |
Why these checks: Google says it "generally crawls URLs found in the href attribute of" elements and that its crawlers do not click buttons, so T2 and T3 items past the first screen have no link a crawler can follow. Google also says "Give each page a unique URL", "Don't use the first page of a paginated sequence as the canonical page" and "Google ignores fragment identifiers".
Parameters:
| parameter | used on | handling | your goal | result |
|---|---|---|---|---|
| ?sort=price | categories | nothing | sorted versions should not be indexed | Flag: not noindexed and not blocked |
| ?sort=newest | categories | noindex robots meta tag | sorted versions should not be indexed | Pass |
| ?color= | categories | robots.txt Disallow: /*?color= | not mentioned | Pass on handling; Ask whether color pages should stay out |
| ?page= | categories | nothing | you want these crawled | Pass |
Google's guidance for sort and filter variants is to "block unwanted URLs from being indexed with the" noindex robots meta tag or to discourage crawling of the patterns with robots.txt; ?sort=price has neither.
Counts
Counted by script from the Check results table.
| template | Pass | Fail | Note | N/A | Pass, see Ask |
|---|---|---|---|---|---|
| T1 | 2 | 1 | 1 | 1 | 0 |
| T2 | 0 | 3 | 1 | 1 | 0 |
| T3 | 0 | 4 | 1 | 0 | 0 |
| T4 | 2 | 0 | 1 | 1 | 1 |
| All | 4 | 8 | 4 | 3 | 1 |
| check | Pass | Fail | Note | N/A | Pass, see Ask |
|---|---|---|---|---|---|
| (a) links | 2 | 2 | 0 | 0 | 0 |
| (b) unique URL, no # | 2 | 2 | 0 | 0 | 0 |
| (c) self canonical | 0 | 2 | 0 | 1 | 1 |
| (d) crawlable URL behind load more or scroll | 0 | 2 | 0 | 2 | 0 |
| (e) link back to page 1 | 0 | 0 | 4 | 0 | 0 |
Fix list
| fix | applies to | change for your developer | status |
|---|---|---|---|
| F1 | T1 | Set the canonical on each paginated page to that page's own URL (page 2 canonical = /c/tents?page=2). | HELD |
| F2 | T2 | Give each set of results its own URL (for example /c/backpacks?page=2) and render a real link to it next to or behind the Load more button, so the button can stay for shoppers. | HELD |
| F3 | T2 | Give each of those pages a self canonical (same rule as F1). | HELD |
| F4 | T3 | Replace the #page2 fragment with a real page URL such as /blog?page=2, linked with an element; the scroll can keep loading the next page for readers. | HELD |
| F5 | T3 | Set self canonicals on those blog pages instead of pointing them all at /blog. | HELD |
| F6 | T1, T2, T3 | Optional (Google only asks you to consider it): link each later page back to page 1 of its own list. | HELD |
| F7 | params | Add the noindex robots meta tag to ?sort=price pages, matching ?sort=newest. | HELD |
T4 has no fix yet: its markup passes, but whether review pages should be indexed is your call (question 1). I am not predicting ranking effects; these fixes change what a crawler can reach.
Questions for you
- T4 review pages carry self canonicals, so they can be indexed, but your goal says they do not need indexed pages. Do you want them kept out (for example noindex), or left as is?
- ?color= is blocked in robots.txt but your goal does not mention filters. Is keeping color pages out of search what you want?
- Can your platform give T2 and T3 real page URLs, or does that need a theme or app change? The fixes assume it can.
Needs your decision
- Approve, change or drop each HELD fix F1 to F7 before any template, canonical or robots change.
