← work — the registryENG-022unsealed — measured
Mowers Online
search recovery — the traffic that wasn't traffic
A garden-machinery store whose analytics said it was busy and converting badly, a head term sliding, and a mobile site that kept breaking — but only on the owner's phone.
- sector
- UK garden-machinery ecommerce
- period
- aug – sep 2026
- role
- engineer of record — diagnosis through edge rules, plugins and cache policy
readouts — measured, sourced
04 on the record · every one names its source
≈45%
of August sessions were the farm — zero orders among them
read from — analytics + origin probe
954 → 151
non-UK sessions, the day after the edge challenge
read from — analytics, daily series
1,596 : 28
farm hits through the edge vs direct, forty-minute origin probe
read from — origin request log
1 yr
max-age on bundles that weren't content-keyed — the poisoning mechanism
read from — response headers
the file — read in order
01
the symptom
Blended conversion under one per cent against a healthy prior year; product views out of all proportion to sessions.
The head term dropped from the top five to page three within a week of the first fixes shipping.
The owner's phone showed a broken layout that no other device, browser or test could reproduce.
02
the finding
About 45% of August sessions were a headless-Chrome farm: one page per visit, worldwide, direct, zero orders. Subtract it and UK visitors were converting at close to double the blended figure. The analytics tag had also been dead for two weeks in the middle of the month.
The rank slide began before anything shipped. The daily Search Console series showed a recrawl surge, a pullback and a consolidation back to the pre-fix band: a settling. A third-party audit had read 'AI crawlers allowed' as blocked and a synthetic vitals run as a failure.
The breakage was cache poisoning: the optimiser's bundle filenames were not content-keyed and carried a one-year max-age, so a bad build from one afternoon stayed pinned in downstream caches long after the origin was purged.
03
the fix
A managed challenge for non-UK traffic at the edge: non-UK sessions 954 → 151 the next day. When a residue kept coming, a forty-minute origin-side probe counted 1,596 hits carrying an edge ray against 28 without — a residential-proxy botnet running real Chrome and passing the challenge. Escalated to a block; the farm went to zero rows, the remainder verified crawlers and a social-platform prefetcher.
Cache policy rewritten: purge the optimiser and the edge together, every time; a 24-hour edge TTL in place of the year.
Then the tail: a hidden-iframe referrer flood from an affiliate publisher cut with an edge transform rule; product schema and a trust badge shipped as two small plugins; a crawl-delay lifted and a stray sitemap removed.
provenance
- surfaces touched
- edge rules · analytics property · cache layers · Search Console · storefront plugins
- numbers read from
- analytics property, daily · edge analytics and rule logs · origin probe log · Search Console daily series · response headers
- tags
- bot traffic · edge rules · cache poisoning · search console
unsealed by the client. every readout above was read at source at the time; nothing is quoted from memory.
the registry
previous file
the registry
every file, in order
next file · ENG-021
Trade2Sync
migration rescue — the collapse that pre-dated the migration
→
the same hands
The person who diagnosed this file is the person who ships the fix. Two plain sentences beat a brief.