A case study with Beans Coffee Club, a UK speciality coffee retailer selling roasts from UK roasters on a one-off or subscription basis.
When I took over the account, CPA was running at more than double what the client wanted to pay. Spend had drifted toward one-off purchases rather than subscriptions — even though subscriptions are where the profitability actually is. Membership benefits existed but weren't being communicated in the ads at all.
It's a familiar pattern: the ads were doing their job — sending traffic — but the account was optimizing toward the wrong outcome, because the offer itself was pointing people at the wrong product.
I rebuilt the messaging around two genuinely different audiences: a higher-income, convenience-and-quality-focused group, and a younger, more price-sensitive, community-driven one. The price point didn't leave room for deeper discounting, so the fix was communicating the value that was already there — membership benefits, sourcing, convenience — rather than cutting the price further.
That's the core of "fix the offer, not just the ads": the ad copy changed, but what actually changed underneath it was what we were asking people to say yes to.
This isn't a like-for-like comparison — the previous agency ran during the client's peak season with roughly double the ad budget I had in the off-season that followed. I'm including that context because it makes the CPA and CTR movement worth noting, not despite it.
| Google Ads | Old Agency (Peak, 2x budget) | Lol (Off-season) |
|---|---|---|
| CTR (Search) | 16.69% | 27.93% |
| CVR | 3.23% | 5.72% |
| CPA | £27.03 | £12.15 |
| CPC | £0.87 | £0.69 |
All of this was achieved without any landing page changes — proof that fixing the offer and message in the ads themselves can move the needle, even when the landing page is off the table.