The unfortunately-extensive catalogue
Get F-cked. 100 ways.
Five horror stories from thirty years of being handed sites that were someone else's problem yesterday. Plus a catalogue of 100 specific ways to lose your money, your rankings, or your mind.
If one of these is yours: you're not alone, and it's fixable. Send us the URL.
Top 5 horror stories
The ones that still wake me up. redacted where needed.
Names changed, numbers real. The cast of sectors and platforms is wider than you'd think. The pattern, sadly, is always the same.
- Story 01
Scrapped · rebuilt at 4× cost
A new Magento build came in for an audit two months after launch. It had to be scrapped and rebuilt from scratch.
The original Magento project had taken about six months and shipped at the client's first deadline. It survived two months live before the cracks became impossible to ignore. The brand came to my agency at the time for a second opinion, a full, detailed audit of what they'd actually bought.
The findings were categorical. Architectural decisions that couldn't be fixed incrementally. Critical stability issues in checkout and order processing. Data integrity problems that meant every transaction carried uncertainty. The honest answer was: this cannot be rescued inside a sensible rescue budget, it needs to be binned and rebuilt properly.
We re-quoted at roughly four times the original figure and did exactly that. In parallel, we stabilised what we could on the live site, patched the worst of the performance and reliability issues, stopped the active bleeding, so the client wasn't losing revenue through the rebuild window. Launched the proper version. Everything the first engagement should have been.
Lesson: A build that shipped 'on time' isn't the same as a build that shipped well. The two-months-post-launch audit is the one that actually tells you what you bought.
- Story 02
£5–7k · don't launch
Countless WordPress builds so bad Gary has had to advise the client not to go live.
The repeat scenario. A £5–7k WordPress site delivered after a three-month engagement. Looks OK at first glance. Then you open the hood.
Page-builder theme with render-blocking JavaScript everywhere. Plugins marked 'custom development' on the invoice that are free on WordPress.org. Admin area the client can't use without breaking the layout. Accessibility scores in the 30s. SEO setup that contradicts basic best practice from a decade ago.
'Don't launch this' is the hardest advice to give someone who's just paid for a website. But shipping it costs them more in ranking damage, re-dev and brand cost than starting again does.
Lesson: Cheap isn't the same as affordable. An unfit-for-purpose site is 100% waste, not 50% good-enough.
- Story 03
Liquidation · SEO migration
A market-leading ecommerce brand thrown off a cliff by an amateur SEO migration strategy.
Thriving B2C ecommerce brand. Strong organic revenue. The agency sold them a 'platform modernisation', migration to a shiny new stack.
No redirect map. URL patterns changed wholesale. Indexed pages dropped heavily inside the first month. Organic traffic collapsed. Paid ads tried to backfill the gap, costs ballooned, margins evaporated.
The company didn't recover. Six months after cutover it was in liquidation. The prevention was two weeks of work and a spreadsheet. The damage was done by people who genuinely believed they were modernising.
Lesson: The cheap hour is the SEO migration plan. Skip it and you can lose a business.
- Story 04
10M URLs · 18-month clean-up
A crawled layered navigation that generated ten million near-duplicate URLs in Google Search Console.
A retailer's layered navigation generated URL parameters for every filter combination: colour, size, brand, price, stock, sort order. Google's crawler found the path and started indexing the combinations (colour × size × brand × price × sort × stock) exponentially.
Ten million thin, near-duplicate URLs ended up in Google Search Console. Site authority diluted across the noise. Real product pages buried. Rankings slid. The brand wondered why organic traffic was softening even though they were publishing more content.
The clean-up ran for eighteen months: systematic noindex, canonical corrections, URL parameter rules, Search Console removal requests at scale, then a ground-up rebuild of the facet architecture so Google could find the catalogue again. All of it recoverable, none of it cheap.
Lesson: An afternoon of facet-URL planning prevents a year and a half of clean-up. The preventable problems are always the most expensive ones.
- Story 05
3 years · still not live
A 'KISS' Magento MVP that's been in build for three years. Still hasn't launched.
The project was scoped as a minimum-viable Magento build. Keep it simple. Take payments, ship product, nothing clever. The plan was six months. It's now in its third year of active development. It hasn't gone live once.
What happened is a case study in how digital projects die quietly. The two people who understood the original architecture left inside eighteen months. Knowledge walked out with them. Their replacements had to reverse-engineer decisions nobody had documented, and duplicated work rather than touch code they didn't understand.
Client expectations were mis-managed from the first sprint. 'Nearly done' after year one, 'nearly done' after year two, 'nearly done' after year three. Every quarter produced a new list of blockers and a fresh round of invoices. The client paid monthly, believed they were nearly there, and kept being wrong.
Lesson: Time is the cheapest signal you have. If an MVP is in year two, something structural is broken: the team, the platform, the management, or all three. Get an audit before you write another cheque.
Most common outcome · never recovers
The site doesn't go down. It just stops working hard enough to matter. That's what dead looks like.
And the other 100 …
100 ways to get f-cked in digital and AI.
Click any row to unfold the detail. Ten categories, ten per category. Most of them are mine in the sense that I've cleaned them up. Some are probably already yours.
No paywall, no email capture. If it's useful, share it. If it's hitting too close to home, send us the URL.
01 · 10 ways
Hiring the wrong firm.
Before the work goes wrong, the choice did.
-
01.01 Agency that pivoted from 'Etsy consultancy' to 'AI transformation' six months ago
If their positioning changes with the trend, their expertise does too. You're paying for the learning curve.
-
01.02 Case studies dated 2019 or earlier, 'we're between projects right now'
They're not between projects. They haven't had a new one. There's a reason.
-
01.03 Freelancer who takes the Zoom call but won't share a recent portfolio
The portfolio they'd share is under NDA. Or doesn't exist. Ask anyway.
-
01.04 White-label relationship where the 'senior' on the call is subcontracted
You meet the senior; a junior does the work; invoices go through two agencies. You pay for both overheads.
-
01.05 47-slide pitch deck with no prices
The price you can't see is designed around what they think you'll pay, not what it'll cost.
-
01.06 Award-winning agency where the awards are for the pitch, not the build
Award shows favour storytelling. They don't audit what shipped three months later.
-
01.07 Firm that insists on a paid discovery workshop before any quote
They're selling you insights they haven't earned yet. The workshop is the pitch, charged.
-
01.08 Twelve-month minimum retainer quoted as 'onboarding'
You're paying for their sales recovery, not their service.
-
01.09 'Technology partner' who can't tell you which framework they'd use
They don't write code. They brief agencies who write code. You're three degrees from the build.
-
01.10 Account manager re-assigned twice in the first six weeks
Internal churn is the first symptom of the work quality that's coming.
02 · 10 ways
Website builds (Static / CMS).
The site that shipped. And what's underneath.
-
02.01 Custom CMS nobody else can edit
Sold as 'tailored to your business'. What it means: you can only edit it through the agency. Hostage setup.
-
02.02 Page-builder (Elementor, Divi, WPBakery) sold as 'bespoke design'
The same blocks every other agency client gets, with your logo.
-
02.03 Free plugins billed as 'custom development' line items
WooCommerce, Yoast, Contact Form 7, all free. If they're on your invoice, you paid someone to install them and describe it as work.
-
02.04 Theme you can't update without breaking the site
Updates would touch customisations the agency bolted onto core. You get locked to an old, vulnerable theme version.
-
02.05 No version control, no repository, no change history
When something breaks, there's no rollback, no blame tree, no audit. Everything is now, with no yesterday.
-
02.06 Plugins 18 months out of date the day you launch
Already CVEs against them. You're pwned on day one.
-
02.07 No redirect map from the old site's URLs
Rankings earned over years evaporate in a week. Recovery is measured in quarters.
-
02.08 No staging environment, no backups, 'we'll push straight to live'
Every fix is a coin toss. Mistakes hit your customers before you notice.
-
02.09 Launch on Friday afternoon, agency unreachable by Monday
The launch-window blind spot. The thing that'll break, always does.
-
02.10 Hosting on the agency's shared server. You leave, you lose access
You're not a customer; you're a tenant. Eviction is a business model.
03 · 10 ways
Ecommerce.
The cart that couldn't. Revenue-bearing bugs the other agencies missed.
-
03.01 Checkout that crashes during peak sales
Load tests weren't run. Autoscaling wasn't configured. The day you need it most, the tills stop.
-
03.02 No abandoned-cart emails. Ever.
20–30% of ecommerce revenue recovery, left on the floor because nobody set it up.
-
03.03 Payment failures because fraud rules were misconfigured
Legitimate customers rejected at checkout. You don't find out until the support tickets arrive.
-
03.04 Product images 3MB+, no lazy-loading, no WebP
PDP LCP of 6 seconds on mobile. Buyers gone before the Add to Basket appears.
-
03.05 No analytics on the purchase funnel
You don't know where drop-off happens. You can't fix what you can't measure.
-
03.06 Stock not syncing between platforms, customers buy out-of-stock
Refund apologies, 1-star reviews, cancelled orders. All from a sync job that wasn't.
-
03.07 Platform migration with no 301 redirects from old product URLs
Rankings evaporate, external inbound links 404, the brand's Google real estate collapses.
-
03.08 'Multi-currency support' is a UI toggle, not a tax and VAT reality
Tax is calculated wrong. HMRC gets interested. VAT-back requests get declined.
-
03.09 Every PDP looks identical, no range or category-specific design
Luxury goods, fast-moving consumables, technical hardware, all styled the same. None converts well.
-
03.10 No structured data on products. Google loses interest
Rich snippets, price displays, availability, all missing. Competitors with schema eat your traffic.
04 · 10 ways
SEO.
Rankings earned in years, destroyed in days.
-
04.01 Migration that loses 70% of organic traffic in a week
The canonical disaster. Happens when migration checklists are skipped.
-
04.02 No redirect map from old URLs to new ones
Google sees thousands of 404s. Indexation drops. Ranking authority evaporates.
-
04.03 Indexation blocked in robots.txt on launch (oops)
The dev-environment rule got promoted to production. Google stops crawling. Traffic goes to zero.
-
04.04 Hreflang misconfigured on international sites
Google serves the wrong country's page. Spanish customers see the UK version. Conversion dies.
-
04.05 301 chains five hops deep
Google drops the signal halfway. Authority leaks at every step. Rankings slide.
-
04.06 Twelve 'blog' pages saying the same thing, cannibalising each other
Google can't decide which to rank. So it ranks none of them. The blog you paid for hurts you.
-
04.07 AI-generated content farm, 800 posts, all thin, all slop
Manual action risk. Entire domain deindexed overnight.
-
04.08 Core Web Vitals red across the board
Google's using these as a ranking signal. Red means you lose to competitors who are amber.
-
04.09 Schema markup missing entirely, or wrong type used
No rich results. No product snippets. Competitors with schema steal the SERP real estate.
-
04.10 Backlink profile 80% spam, 'we bought links'
Penguin algorithm or manual action. Disavow work takes months.
05 · 10 ways
Paid Ads.
Where budget goes and nobody tracks it.
-
05.01 Agency charges 15% of ad spend
You pay more when you spend more. The agency's incentive is misaligned with your ROAS.
-
05.02 No conversion tracking installed on the site
You're optimising for clicks, not buyers. Budget burns, no revenue signal.
-
05.03 Running the same creative for 18 months
Ad fatigue. Click-through collapses. Cost per acquisition doubles silently.
-
05.04 Branded search spend that cannibalises free clicks
Paying for traffic that would have arrived free. Agency reports it as 'high-ROAS'.
-
05.05 Auto-optimised campaigns with zero human oversight
Google's AI optimises for Google's metrics. Not necessarily yours.
-
05.06 No account access, you can't see what's being spent on
Monthly report shows selected metrics. You can't verify. Trust built on opacity.
-
05.07 Leaving the agency means losing pixel history and audiences
They own the Meta Business Manager. You walk away with a blank slate.
-
05.08 Meta audiences broader than 'UK, 18–65, interested in anything'
Your ad shows to people who'll never buy. CTR fine, CAC catastrophic.
-
05.09 Reports showing CTR and CPM, not CAC, LTV, or ROAS
Vanity metrics. Nothing that connects to the money going in or out.
-
05.10 No negative keyword list. At all.
You're bidding on 'free [your product]'. Quality buyers, no.
06 · 10 ways
Social media.
Three posts a week, zero outcomes.
-
06.01 Same post cross-posted across every platform
LinkedIn, Twitter, Instagram and TikTok are different beasts. One-size-fits-all is one-size-fits-none.
-
06.02 AI-written LinkedIn posts with em-dashes and 'dive in'
The voice is obvious. The audience stops trusting. Nobody engages.
-
06.03 Three posts a week to tick the retainer box
Volume without intent. The algorithm notices. Reach drops.
-
06.04 Agency 'hearts' its own posts, that's the engagement
An engagement graph that flatlines the second they stop.
-
06.05 Trend-chasing reels with no brand relevance
You went on TikTok dance. Your buyer is a 52-year-old procurement lead. They're not watching.
-
06.06 Brand voice that reads like ChatGPT unedited
Generic. Inoffensive. Forgettable. The three qualities you didn't pay for.
-
06.07 Weekly reports counting impressions, not leads or revenue
Impressions are vanity. If the social spend doesn't connect to revenue, it's hobby money.
-
06.08 Social manager is the founder's niece on work experience
She's lovely. She's also not senior. Your brand is her coursework.
-
06.09 Posting to platforms your buyer persona never uses
Diligently posting to TikTok for a B2B audit firm. Who are you talking to?
-
06.10 Paid influencer deals without FTC or ASA disclosure
Not optional. Undisclosed ads get pulled and fined. The brand carries the damage.
07 · 10 ways
AI in your marketing.
The new way to get f-cked. Same playbook, faster to market.
-
07.01 Publishing raw AI-generated copy ('As an AI language model…')
It happens. The prompt artefact ships. Screenshots circulate. Brand trust evaporates.
-
07.02 Product pages that hallucinate features you don't sell
'Available in 17 colours' when you stock four. Returns, refunds, and trust damage.
-
07.03 AI customer-support chatbot without a human in the loop
It invents policy, quotes wrong prices, and commits you to things. Every one is a refund.
-
07.04 AI-generated hero images on product pages
Google's flagged image provenance signals. Amazon bans AI-only product imagery. Trust dies.
-
07.05 AI SEO content farms, 800 posts, zero editorial review
Manual action territory. Entire domain deindexed. See horror story #5.
-
07.06 AI mass-translation without a native-speaker check
Mistranslation lawsuits exist. Product labels failing regulation. Real money.
-
07.07 No AI disclosure where required (ASA 2026 guidance)
Ads and content generated by AI need disclosure in the UK. Your agency didn't say.
-
07.08 AI-ghostwritten executive LinkedIn that everyone can spot
Your voice becomes indistinguishable from your competitors'. The one thing you owned, gone.
-
07.09 Training a chatbot on unredacted internal tickets
The chatbot quotes internal customers back to other customers. Data exposure. Real breach.
-
07.10 'AI strategy' deck that's the agency's standard deck with 'AI' replaced
Same consultancy trick, new keyword. The deliverable is another deck.
08 · 10 ways
Ownership & handover.
The things you didn't realise you didn't own.
-
08.01 Domain registered in the agency's name
You don't own the address people type in. If they stop paying it, you lose the business.
-
08.02 Hosting account in the agency's name
Eviction is a decision they can make. You can't port what you don't control.
-
08.03 GA4 property in the agency's Google account
Years of historical data, gone the day you leave.
-
08.04 Search Console unverified by anyone in your company
You can't see what Google says about you. That's a dashboard that should be yours.
-
08.05 Source code not in your GitHub organisation
The build is in their repo. When you leave, you're taking a tarball of files, no history.
-
08.06 No handover documentation at launch. None.
The person who built it could leave tomorrow. Without docs, that's your website's half-life.
-
08.07 All passwords in the agency's 1Password, not yours
Credential custody = power. You're the tenant, they're the landlord.
-
08.08 CMS admin accounts never audited, old freelancers still have access
Every past contributor is a live threat. Ex-contractor with a grudge is a breach waiting.
-
08.09 Ad accounts owned by the agency. You leave, pixel history resets
Audiences built over years reset overnight. Optimisation starts from scratch.
-
08.10 Analytics data not exportable in any usable format
Monthly summaries in PDF. The underlying data you paid for, locked in their tool.
09 · 10 ways
Performance, security & compliance.
The silent ways your site is costing you.
-
09.01 Lighthouse mobile score under 30
Google uses this as a ranking signal. You're bleeding traffic you never see.
-
09.02 Hero images 4MB+, no WebP, no responsive srcsets
Mobile LCP over 5 seconds. Buyers gone before the fold appears.
-
09.03 HTTPS not enforced, mixed content warnings
Browsers warn users. Conversion plummets. Search rankings suffer.
-
09.04 WordPress admin login at /wp-admin, open to the internet
Brute-force attack target day one. No rate limit, no 2FA, breach is a question of when.
-
09.05 SQL injection vector in an unpatched plugin
Your database is one curl command from a data breach. ICO fines are not theoretical.
-
09.06 No WAF, no rate limiting, no DDoS protection
One coordinated attack takes the site down. Your weekend, your Slack, your revenue.
-
09.07 Cookie banner that fires analytics tags before consent
UK GDPR / PECR violation. Complaints to ICO. Fines up to £17.5m.
-
09.08 GDPR subject access request takes three months to fulfil
Legal deadline is 30 days. Complaints escalate. You miss more than the deadline.
-
09.09 Accessibility score under 50%, legal exposure under EAA
European Accessibility Act applies. UK Equality Act applies. Fines plus lawsuits.
-
09.10 No backups. Or backups that don't restore when tested
The day the database dies, you find out the backups are unusable. That's the day the site dies too.
10 · 10 ways
Contracts & retainers.
The small print that costs real money.
-
10.01 Twelve-month minimum retainer, tied to 'onboarding'
Onboarding was three weeks of work. You're paying eleven more months for the privilege of leaving later.
-
10.02 Auto-renewal with 90 days' written notice
Missed the window? Another year. Happens more than anyone admits.
-
10.03 Scope-creep invoice three months into a fixed-price engagement
'That wasn't in scope.' It was. They'll invoice anyway. You pay or you fight.
-
10.04 Ownership clause: 'agency retains IP in all work produced'
You paid for something you don't own. To use it you need a perpetual licence. Which they'll sell you.
-
10.05 Non-compete clause stopping you using their competitors
Applies after the contract ends. You picked the wrong one? You can't hire another for 12 months.
-
10.06 Break clause requires notice by registered post to a specific address
The only break clause that's harder to exercise than the contract itself.
-
10.07 Outstanding-invoice clause lets them withhold files
Dispute a line item? They withhold your codebase until it's paid. Leverage.
-
10.08 Revisions limited to two rounds, then billed per change
The third round is always the one where the feedback lands. Every project. Every time.
-
10.09 Indemnity clauses making you liable for their work
Agency gets sued. You pay. Read the indemnity section twice.
-
10.10 Governing law in a jurisdiction that isn't yours
Dispute? Good luck. The contract's jurisdiction is theirs, the courts are theirs, the solicitors are theirs.
Recognise yours?
If any of those sounded familiar, start here.
The £250 initial review. 48 hours. Headline scores, commercial impact, top three findings. If you think it's bad, it's almost certainly worse. The audit will prove it. Money-back if it doesn't.