Case studies

The work, opened all the way.

Three brands we own, so nothing is held back. Two client accounts, each measured over the same four months a year apart. Failed tests count at full weight in every total.

Five accounts, one ledgerSources on every figure
Failed tests count at full weight. Every total above includes them.
Client accounts

Two accounts, reported in full.

Same four months, one year apart, with the source and the reading date on every figure.

01Meta Ads · four European markets

The same budget, nearly three times the revenue.

The situation

An ecommerce brand running a textbook funnel: awareness at the top, traffic in the middle, conversion and retargeting at the bottom. Thirteen campaigns, thirty five ad sets, two hundred and thirty five ads.

What we found

Forty five percent of the budget was going to awareness and traffic that returned 25 cents per euro. Those two layers bought 131 398 clicks and produced 23 purchases, one order for every 5 713 clicks. The two layers underneath returned one for every 107. The funnel was not broken. It was being paid for twice.

What we did

Switched the awareness and traffic layer off entirely and replaced nothing with it. Thirteen campaigns became seven, ad sets went from 35 to 14, and manual audience targeting was removed so the catalogue and the pixel do the work. Two new markets were opened as tests and both were closed when they did not clear the bar. Their cost is inside every total.

Revenue from paid social, 1 May to 31 August2025 vs 2026
2025€59 126
2026€154 855

Budget rose 3 percent between the two windows. Everything else held still.

+162%revenue€59 126 to €154 855, on +3% more budget
4.22return on ad spend, from 1.67+94% purchases, 326 to 634
-47%cost per purchase€108.74 to €57.86, order value +35%
Source. Meta Marketing API, read at account, campaign, ad set and ad level on 3 September 2026. 1 May to 31 August, 2025 against 2026. Paid search on the same brand is reported below, because a case study that shows one channel is a selection, not evidence.
02Google Ads · five European markets

We switched off the campaigns that made the money.

The situation

The same account ran fifteen campaign lines across two markets: three that did nothing but appear when somebody searched the brand by name, eleven built around product lines, and one new engine.

What we found

The three branded campaigns took 54% of the budget and produced 69% of the revenue, which is exactly why they had never been questioned. A brand campaign is not a growth channel, it is a toll on demand that already exists. Strip those three out of the window and what is left returned 1.26. Five of the eleven product line campaigns recorded no conversion at all.

What we did

Closed all three branded campaigns and the last product line campaigns on the same day. Fifteen campaigns became one engine per market, each fed the whole catalogue and judged on its own country. Three countries that had never been advertised in were opened one at a time, each held for a fortnight before the next was allowed to start.

Revenue from paid search, 1 May to 31 August2025 vs 2026
2025€9 153
2026€24 469

Two markets in 2025, five in 2026. Three of them opened from zero.

+167%revenue€9 153 to €24 469 in the same four months
5markets running, from 2three opened from zero, all still live
-38%cost per conversion€27.71 to €17.14, on +178% conversions
Source. Google Ads API, read campaign by campaign and day by day on 3 September 2026. 1 May to 31 August, 2025 against 2026. This is a seasonal brand and these are its two weakest quarters, compared against each other on purpose.
What a first read turns up

The account is rarely the problem.

The feed behind it, the tracking under it or the budget around it usually is. Five things the first week of looking properly tends to find.

Pattern 01

The catalogue nobody could see

On screenFeed healthy, campaigns approved and servingUnderneathImpressions in one market close to zero

An entire market's product titles had never been translated. The feed passed every health check, the campaigns were approved and serving, and impressions in that country were close to zero. Approved is not the same as visible, and nothing in the interface says so.

Pattern 02

A month of confident, empty reporting

On screenA clean line on every dashboardUnderneathTracking down on three channels for a month

Conversion tracking was down across three channels at once for a month. Every dashboard still drew a clean line, because a broken tag reports zero rather than an error, and a chart of zeros looks exactly like a bad month.

Pattern 03

Top campaign, unseen catalogue

On screenThe best campaign by every columnUnderneathMost of the catalogue never shown once

Performance Max was the best campaign in the account by every column on screen. Counting distinct products that actually received an impression showed most of the catalogue had never been shown once. It was reselling a small group of products very well.

Pattern 04

A budget is not a pot

On screenDaily budgets set and spendingUnderneathLosing impression share to budget in the best campaigns

Unspent daily budget does not carry forward. Measured against the monthly limit rather than the daily one, the account was losing impression share to budget in exactly the campaigns that were performing best.

Pattern 05

The form that sent nothing

On screenA confirmation on every submissionUnderneathNone of them delivered

A lead capture page had been live for weeks, showing a confirmation message on every submission and delivering none of them. The success state had been built and the delivery had not. From the outside a submitted form and a sent form look identical.

The next step

Curious what is hiding in your account?

Send us what you are running. You get back a written note on what we would examine first and what we would expect to find, before any money changes hands.

Or write to hello@roasdept.com

What should the audit cover?
Monthly ad spend

Pick what matters and the audit is written around it.