[TECHNICAL] Shopify bot-detection (complexity-score) permanently blocks Google Search Console sitemap crawler — reproducible with ASN 15169 IP rotation

[TECHNICAL] Shopify bot-detection (complexity-score) permanently blocks Google Search Console sitemap crawler — reproducible with ASN 15169 IP rotation

Issue since: December 2025 (post-migration from Shopware)
Impact: 0/500+ pages indexed in GSC, sitemap never successfully fetched


Background

After migrating from Shopware to Shopify in December 2025, Google Search Console has reported a persistent Sitemap could not be fetched error for /sitemap.xml. Every resubmission fails instantly. The sitemap was working correctly on the same domain under Shopware.


What I ruled out

  • :white_check_mark: Sitemap returns HTTP 200, valid XML, correct Content-Type: application/xml

  • :white_check_mark: All 16 sub-sitemaps return HTTP 200

  • :white_check_mark: SSL valid, SANs cover both www and non-www

  • :white_check_mark: robots.txt correctly allows Googlebot (Liquid whitespace bug fixed)

  • :white_check_mark: Sitemap submitted and resubmitted in GSC multiple times

  • :white_check_mark: Canonical URLs consistent (www. prefix)


Root cause hypothesis: shopify-complexity-score on rotating IPs

While building a diagnostic tool, I noticed Shopify returning this non-standard response header:

shopify-complexity-score: 1580

Reproducible pattern — 5 consecutive requests, Googlebot UA, 1s interval, fresh IP:

Request 1:  shopify-complexity-score: 1580  ← CRITICAL

Request 2: shopify-complexity-score: 270

Request 3: shopify-complexity-score: 450

Request 4: shopify-complexity-score: 390

Request 5: shopify-complexity-score: 270

The key insight: Score spikes on the first request from any previously-unseen IP, then drops to ~270 on subsequent requests from the same IP.

This is catastrophic for GSC’s sitemap crawler because:

  1. GSC fetches sitemaps from rotating IPs within Google’s infrastructure (ASN 15169)

  2. Every GSC fetch is a “first request” from a new, unknown IP

  3. Score 1580 → internal throttle or empty response body despite HTTP 200

  4. GSC reports could not be fetched

  5. Happening on every single GSC sitemap check since December 2025


Test script

import requests, time

SITEMAP_URL = "https://www.premium-electronics.eu/sitemap.xml"

UA = "Mozilla/5.0 (compatible; Googlebot/2.1)"

for i in range(1, 6):

r = requests.get(SITEMAP_URL, headers={"User-Agent": UA}, timeout=15)

score = r.headers.get("shopify-complexity-score", "n/a")

print(f"Request {i}: HTTP {r.status_code} | score: {score} | bytes: {len(r.content)}")

time.sleep(1)

Run this from a fresh IP (VPS, new proxy) — score on Request 1 will be dramatically higher than Request 2+.


User-Agent comparison (same IP, single requests)

User-Agent HTTP complexity-score
Googlebot/2.1 — first req, new IP 200 1580
Googlebot-Image/1.0 200 440
Google-InspectionTool/1.0 200 250
AdsBot-Google 200 300
Chrome/120 200 300
(empty UA) 403 -–

Critical observation: Google-InspectionTool (GSC URL Inspection) scores 250 and works fine. The automated sitemap fetcher fails. This is why GSC shows pages as crawlable in URL Inspection but the sitemap is never processed.


What I’m asking Shopify to do

  1. Check server logs — requests to /sitemap.xml from Google ASN 15169 since December 2025. Full content served, or empty body despite HTTP 200?

  2. Exempt /sitemap.xml and /sitemap_*.xml from complexity-score throttling. These endpoints have no user-session context by design — they exist exclusively for crawler consumption. Session-based bot scoring is architecturally counterproductive here.

  3. Whitelist Google ASN 15169 for sitemap endpoints.


GSC impact

Indexed:               94  (expected 500+)

Not indexed: 457

Crawled, not indexed: 221

Sitemap: "Could not be fetched" — since December 2025


Has anyone else measured shopify-complexity-score above 1000 on first requests from a fresh IP? Does the response body get truncated at that score level? That would confirm the mechanism.

Tagging @Shopify_Support @ShopifyPartners — escalation to someone with server-log access appreciated.

Full diagnostic JSON report available on request.

Have you reported this at https://community.shopify.dev for a better change to reach actual Shopify employees?

Hi Tim, thanks for the tip — I wasn’t aware of community.shopify.dev. I’ll post there as well.

Quick update for context: the issue turns out to be even more severe than the original post described. Testing today confirmed that the complexity-score doesn’t only block /sitemap.xml — it blocks every URL on the domain when accessed by GSC’s automated crawler. A regular page returned shopify-complexity-score: 4530 from an already-known IP. From a fresh rotating IP (which GSC always uses) it would be higher.

Result: not a single successful crawl in 5 months. Zero. The “Last read” column in GSC is empty for every submitted sitemap since the December 2025 migration.

I’ll cross-post to community.shopify.dev with the full technical evidence. Do you know if there’s a specific board or category there that’s most likely to reach the infrastructure/platform team?

Online Store and Theme Development looks most relevant to me.

Not sure if complexity score is what you think it is.
For me it’s zero on most of your URLs, including the sitemap links.

I’d rather treat is as an indication of how complex the page was to render. Probably, taking in account the server-side cache – this would explain why subsequent requests has lower value.

I would try to submit the sub-sitemaps separately to see if they go through.
The ones like https://www.premium-electronics.eu/sitemap_products_1.xml?from=10508957811015&to=10739209699655, but keep in mind that they do expire, so it’s not a permanent fix.