skip to content

← 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

mowers-online.co.uk

readouts — measured, sourced

04 on the record · every one names its source

readout

≈45%

of August sessions were the farm — zero orders among them


read from — analytics + origin probe

readout

954 → 151

non-UK sessions, the day after the edge challenge


read from — analytics, daily series

readout

1,596 : 28

farm hits through the edge vs direct, forty-minute origin probe


read from — origin request log

readout

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

the same hands

The person who diagnosed this file is the person who ships the fix. Two plain sentences beat a brief.