Writing · Case studies
How I found 351 dead product pages in Foot Locker Australia's sitemap
An outside-in SEO audit of footlocker.com.au. Of 964 product URLs in its sitemap, 351 are soft 404s and the other 613 canonicalise to different URLs. What else I found, and what I would fix first.
I completed an outside-in audit of footlocker.com.au in August 2026, then re-checked the main findings against the live site on 8 October 2026. Some had changed. Where a figure comes from one date and not the other, I say which.
This was not client work. I had no access to Foot Locker’s systems, no brief from them and no relationship with them. Everything here comes from pages and files the site serves publicly.
The product sitemap
A sitemap tells Google which URLs you want indexed. Foot Locker Australia’s lists 964 product URLs. On 8 October I fetched every one of them.
| Result | URLs |
|---|---|
| Dead product, but the server says HTTP 200 | 351 |
| Live product, canonical tag points at a different URL | 613 |
| Live product at the URL the sitemap submits | 0 |
Not one of the 964 is a live page at its own canonical URL.
The 351 dead pages are soft 404s. They show “Product Not Found” to a visitor,
but the server answers HTTP 200, which tells a crawler the page is fine. Each
one is easy to spot without running JavaScript: the title reads like
Product model 47 brand pinch front cap 192642.html, the canonical tag points
at itself, and the only structured data is the site-wide WebSite block.
It is getting worse. In August 291 of the product URLs were dead, 30%. In October it was 351, 36%, and 258 of August’s dead pages were still being submitted. Nike has the most dead pages, 115 of its 300. Jordan has the highest share of the large brands: 85 of 168, just over half.
The other 613 are live, but the sitemap submits a URL like
/en/product/model/puma-speedcat-lux/210731.html, and the page’s canonical tag
says the real URL is /product/model/puma-speedcat-lux-women-shoes/210731.html.
Different path, different slug. The sitemap and the canonical tags disagree on
every live product.
The rest of the sitemap
The full sitemap had 3,825 URLs in October. 2,861 of them leave out the /en/
part of the path, and the category pages I checked among them canonicalise to
their /en/ version. So the category pages canonicalise towards /en/ and the
product pages canonicalise away from it.
In August I crawled all 3,777 URLs the sitemap listed at the time. Only 282 of them, 7.5%, were indexable.
Structured data
On 8 October I sampled 30 live product pages, fetched without JavaScript:
- 15 carried
Productschema with a price - 15 carried
ProductGroupschema with no price or availability - none carried
AggregateRating,RevieworBreadcrumbList
These pages are server-rendered. Fetched without JavaScript, the HTML already carries the product title, description, price and review count, so a crawler does not need to run any code to read them. Every product page I sampled also renders the product name as two H1s.
Foot Locker collects customer reviews through Bazaarvoice, so the ratings
exist. On product pages with reviews, the review data sits in a JSON-LD block
with no @type, and in October it was the one thing on the page that only
JavaScript added. Search engines cannot use a block they cannot identify,
which is why no star rating can come from these pages.
Category pages carry the site-wide WebSite block and nothing else. No
ItemList, no BreadcrumbList. That was true across the August crawl and on
every category page I checked in October.
Demand they rank for, and demand they do not
In August I tracked 82 search terms for brands Foot Locker Australia stocks. 52 ranked in Google’s top ten in Australia. 18 sat outside the top 20, and most of those were running terms:
| Term | Searches a month | Ranking in August |
|---|---|---|
| hoka shoes | 60,500 | outside the top 30 |
| running shoes | 40,500 | outside the top 30 |
| women’s on shoes | 22,200 | outside the top 30 |
| brooks shoes | 14,800 | outside the top 30 |
| new balance 1080 | 14,800 | outside the top 30 |
Search volumes are Google Keyword Planner figures. Foot Locker stocks Hoka, Brooks, On and New Balance.
AI answers
Also in August, I put 20 unbranded shopping questions to five AI answer engines: Perplexity, ChatGPT search, Gemini, Claude and Grok. Questions like “Where can I buy Hoka running shoes in Australia?” and “Do Hoka Bondi run narrow or wide?”
Foot Locker was named in 13 of the 20, more than any other retailer. It was listed first in 36% of those answers and linked in 7. It appeared in none of the 7 running and fit questions, which is the same running range it does not rank for on Google.
Store pages
Each store has its own page on stores.footlocker.com.au with ShoeStore
schema, an address and a phone number. In October none of them carried
opening hours, map coordinates or ratings.
What changed between August and October
- Soft 404s in the product sitemap rose from 291 to 351.
- The homepage now links to the store locator. In August I found no links from the main site to the store pages.
- The store locator’s sitemap now points at the right domain. In August it
pointed at
.cominstead of.com.au.
What I would fix first
The sitemap. It is the cheapest fix with the widest reach:
- Build the sitemap from live, canonical URLs only.
- Return a real 404 or 410 for discontinued products, or redirect each to its closest category, so the 351 dead pages stop answering HTTP 200.
- Make the canonical tags and the sitemap agree on one URL format for products.
Then the structured data: ItemList and BreadcrumbList on category pages, a
price on every product page, and the Bazaarvoice ratings exposed as
AggregateRating. The ratings are already collected, so this is a markup job.
After that, content for the running range: buying and fit guides for the brands they stock and do not rank for, written so AI assistants can quote them.
The PDF covers all of it in more detail, with the method behind each finding.
Get in touch
Tell me about the role and I will come back to you. If you would rather not use a form, I am on LinkedIn.