Case studies

How the numbers actually happened.

Six accounts, written the way I would explain them to another media buyer: what the account looked like before, what I found when I opened it, what I changed, and what the change did. Brand names are withheld to honour NDAs. The numbers are not edited.

Each one ends with the part most case studies leave out — what was uncomfortable, what I would not repeat, and where the result owes more to the offer than to the advertising. A page of unbroken wins tells you nothing about how somebody works.

01 / LaunchEcommerce · Egypt · cash on delivery

From a cold account to EGP 6M in the first month live

EGP 6.0M
Sales · first 30 days
2.7K
Orders
Verified pre-launch
Pixel + CAPI
The situation

A new brand launching cold into the Egyptian market. No pixel history, no creative library, no purchase events for the algorithm to learn from, and no evidence the offer would hold up once it met traffic that had never heard of it. Everything a normal optimisation playbook depends on was missing, so the first job was not scaling. It was building something worth scaling.

What I found
  • The pixel fired on page load rather than on the confirmed order, which would have taught the algorithm to optimise for people who browse.
  • The product page led with the discount instead of the reason to buy, so the offer had no argument behind it if the discount ever came off.
  • There was no creative library at all, which meant the first week would be a hypothesis test, not a launch.
What I changed

Tracking before spend

Pixel and Conversions API built server-side with a shared event ID so Meta deduplicates instead of double counting, then every event fired manually and checked in Events Manager before the first pound went out. In cash on delivery this matters twice over: the browser event and the confirmed order are different moments, and an account that cannot tell them apart will scale toward the wrong one.

A 3×3 creative sprint

Three hooks against three angles across three formats, each shipped with a written hypothesis about which element was being tested. That structure is the whole point: when a creative wins you know whether it was the hook, the angle or the format that carried it, and the next batch inherits the answer instead of starting over.

Scaling on delivered profit

Budget stepped up only on creatives that had cleared a threshold written before launch, and the threshold was net profit after cancellations and returns rather than the ROAS on screen. In a COD market the gap between the two is the whole margin.

What happened

The launch broke out to EGP 6.0M in sales across roughly 2.7K orders in the first 30 days, and the creative pipeline kept producing winners rather than living off one lucky video. The number that mattered internally was not the revenue. It was that the account could name which creative was carrying it on any given day.

The part usually left out

A launch this size in month one is not typical and it is not repeatable on demand. The offer was strong before I touched it. What the work did was find that out in days instead of weeks, and avoid spending the budget it took most brands to learn the same thing.

02 / ScaleEcommerce · Egypt

+85% month over month without giving back the margin

EGP 2.45M
Monthly sales
3,475
Orders
+85%
Month over month
The situation

An established store that had stopped growing. Spend was rising month after month and revenue was not following it up, which is the specific shape of a problem that looks like a budget issue and almost never is. The owner's read was that the market had saturated. The account said otherwise.

What I found
  • Multiple ad sets were bidding into the same audience, so the account was paying a premium to compete with itself at every auction.
  • Creative was being judged on gut feel after two or three days, with no threshold written down, so winners were being killed early and losers were being kept out of hope.
  • Retargeting was absorbing budget that prospecting needed, inflating reported ROAS while the actual new-customer count stayed flat.
What I changed

Rebuilt the structure

Campaigns split into a clear top, middle and bottom of funnel with the overlap removed, so each stage was buying its own audience rather than re-buying the last stage's. Consolidating the fragmented ad sets also got the account back out of a permanent learning phase, which had been quietly taxing every test it ran.

Made the testing log binding

Every creative now shipped with a pass and fail threshold written before launch and a date to judge it on. It removes the argument from the decision: a creative that misses its number gets killed whether or not anyone liked it, and one that hits gets budget whether or not it was anyone's favourite.

Stepped budget instead of jumping it

Increases of 20 to 30 percent a week on stable winners only, measured against net profit rather than reported ROAS. Scaling faster than that resets learning and costs more in lost efficiency than the extra reach is worth.

What happened

Monthly sales reached EGP 2.45M across 3,475 orders, an 85% jump month over month, with margin intact rather than bought. The plateau had not been the market. It had been the account competing with itself while nobody was keeping score.

The part usually left out

The first three weeks looked worse before they looked better. Cutting overlapping ad sets pulls reported ROAS down while the account re-learns, and that is a genuinely uncomfortable conversation to have with an owner watching a dashboard. It is also why the dashboard exists: the fall was visible, expected, and explained in advance.

03 / AOVPremium retail · Egypt

Holding EGP 2,869 average order value on a premium brand

EGP 1.58M
Sales · 30 days
EGP 2,869
Average order value
539
Orders
The situation

A high-ticket brand where cheap traffic was actively harmful. At this price point a low cost per click is usually a warning: it means the ad is reaching people who will never buy, and every one of them teaches the algorithm to find more like them. The brief was qualified buyers at the price point, not volume.

What I found
  • Creative was priced-led, which pulled in discount-seekers and dragged the average order value down every time it scaled.
  • The audience signal was built on reach rather than intent or value, so the account optimised toward the cheapest available human.
  • The owner had no per-product profit view, so a product with a good ROAS and a bad margin looked identical to one with both.
What I changed

Optimised for value, not volume

Targeting rebuilt around intent and purchase-value signals instead of broad cheap reach. Fewer people saw the ads and more of the ones who did were plausible buyers at the price, which raised the cost per click and lowered the cost per order at the same time.

Matched the creative to the price

Creative rewritten to lead with the reason the product is worth its price rather than with a number. A premium brand advertised like a discount brand attracts a discount buyer and then loses them at checkout, and the funnel reads as a conversion problem when it is a positioning problem.

Put profit per product on one screen

Everything wired into a live dashboard showing profit per product, per campaign and per creative, refreshed every 30 minutes. On a premium catalogue that view changes decisions weekly, because the best-selling product and the most profitable product are rarely the same one.

What happened

EGP 1.58M in 30 days across 539 orders at an average order value of EGP 2,869. The audience and the creative finally matched the price point, and the owner could see which products were carrying the margin rather than which were carrying the revenue.

The part usually left out

The order count is deliberately low. Chasing more orders here would have meant discounting, and a premium brand that discounts to hit a volume target spends the following year training its own customers to wait for the sale.

04 / MeasurementCoffee · Egypt · COD and Fawry

The account reported 5.48 ROAS. The real number was 1.80.

5.48
ROAS on screen
1.80
ROAS after measurement
EGP 200
Break-even cost per order
The situation

A brand doing real volume, with an owner reasonably pleased: the ads manager showed 5.48 ROAS and the blended figure across the whole business looked close to 10x. The plan was to raise budget. The problem with raising budget against a number you have not audited is that scaling does not create margin, it multiplies whatever the account is already doing — so if the number is wrong, the mistake gets bigger at exactly the rate the spend does.

What I found
  • The account was reporting on a 7-day-click-and-1-day-view window while the owner compared it against same-day revenue, so a week of purchases was being credited to a single day of spend.
  • Not one ad carried a UTM, which meant Shopify could not attribute a single order back to the campaign that bought it. Every platform number was unfalsifiable by design.
  • COD and Fawry orders were both counted as revenue the moment checkout completed, before either had settled — and in this market a meaningful share of them never does.
What I changed

Rebuilt the measurement before touching the budget

Reporting moved to a 7-day-click window with view-through removed, every ad got a UTM so Shopify could name the campaign behind each order, and the purchase event was rekeyed to the confirmed order rather than the completed checkout. None of this makes the account earn more. It makes the account tell the truth, which is the prerequisite for every decision that follows.

Wrote down the break-even first

Cost of goods, shipping, packaging, the payment fee and the cancellation rate resolved to a break-even of EGP 200 per delivered order. Having that single number in writing changes what a result means: 1.80 ROAS stops being a disappointing figure to argue about and becomes a specific gap to close, with a specific target to beat.

Built the sprint and left it paused

Three campaigns at EGP 1,500 a day were structured, briefed and queued — and not switched on. The account had a measurement problem, not a budget problem, and launching first would have bought a month of data through the same broken lens that caused the disagreement in the first place.

What happened

The brand went into the next month knowing its real cost per delivered order and its real break-even, on an account that could finally attribute an order to the ad that caused it. The reported ROAS fell by two thirds on paper and nothing about the business got worse — the only thing that changed was that the number stopped flattering itself.

The part usually left out

There is no revenue screenshot attached to this one, because the honest outcome was to stop. Telling an owner that the figure they have been happy with for months is inflated by three times is a bad meeting, and I would rather have that meeting before the budget goes up than explain the same gap afterwards with more money spent.

05 / PricingFashion · Egypt · cash on delivery

Zero orders wasn't a creative problem. It was a EGP 150 problem.

≈ EGP 1,150
Market price · comparable set
EGP 1,300
The brand's price
≈ EGP 300
Cost per order · real
The situation

Good product, decent creative, clean traffic, and almost nothing coming out the other end. The instinct in that position is always to make more ads, and it is usually the wrong instinct: when the funnel is full at the top and empty at the bottom, the ads are doing their job and something after the click is not. A brand cannot outrun its own price list with a better hook.

What I found
  • Five direct competitors selling a comparable satin set had all converged around EGP 1,150, which is what a market price looks like once a category matures. This brand was at EGP 1,300 — around 13% above, and visible on the first product page any shopper compared.
  • The real cost per order sat near EGP 300 against an average order value of about EGP 1,750, so the account had margin to work with. The blockage was never efficiency.
  • Everything was sold as a single item, which left no way to raise order value without raising the price of the thing the buyer was already hesitating over.
What I changed

Priced against the category, not the cost sheet

The competitive set was researched properly and written up rather than guessed at, which turned an argument about taste into a number. Thirteen percent above market is not a rounding error when the shopper has four tabs open, and it is the single cheapest thing to fix on the whole account.

Made the bundle the profit lever

Rather than discount the single set and reset the brand's price anchor downwards, order value moved through bundles. That protects the perception of the individual product, gives the account a way to grow revenue per order without a sale, and puts the margin back through volume instead of taking it out of price.

Backed the creative that was already winning

Broad targeting was outperforming the interest stacks and a catalogue CBO was the strongest structure in the account, so budget went behind both instead of a new round of tests. One creative was clearly carrying the account, which is a finding, not a coincidence — the next batch was briefed against what made that one work.

What happened

The brand went into the next cycle with a defensible price, a bundle that raises order value without discounting, and its budget concentrated on the structure and the creative that were already proving themselves. The zero-order stretch had a cause, and the cause was legible on a competitor's product page rather than anywhere inside the ads manager.

The part usually left out

The pricing research took the better part of two days and produced no ads, which is a difficult thing to bill for and an easy thing for a client to read as no work having happened. It was still the highest-leverage work available on that account, and no volume of creative would have substituted for it.

06 / Unit economicsSilver jewellery · Egypt · cash on delivery

A 618-product catalogue that didn't know its own break-even

1.77
True break-even ROAS
2.11
With cancellations
16.2%
Realised discount
The situation

A large catalogue — 618 live products — being advertised without an agreed definition of a good result. That sounds like a bookkeeping detail and it is the whole game: without a break-even, every ROAS is just a number to have opinions about, and an account can be scaled confidently for months in a direction that quietly loses money on delivered orders.

What I found
  • The true break-even was 1.77 ROAS, and 2.11 once the cancellation rate was included. Campaigns clearing 1.9 had been treated as winners and were losing money on every delivered order.
  • Realised discounting ran 16.2% deeper than the discount the store thought it was giving, through stacked codes and legacy promotions nobody had switched off.
  • Benchmarked against the closest comparable Egyptian silver retailer, the catalogue was priced around 27% higher — which is a viable position, but not an accidental one, and nothing in the ads was doing the work to justify it.
What I changed

Set the break-even, then re-read every campaign against it

Cost of goods, shipping, the payment fee and the cancellation rate resolved into two numbers: 1.77 to break even on paper, 2.11 to break even on what actually gets delivered and kept. Re-scoring the account against 2.11 rather than a vague sense of good moved several campaigns from the winners column to the losers column overnight, which is uncomfortable and correct.

Closed the discount leak

Stacked codes and forgotten promotions were audited and shut off, which recovered margin without touching the ad account at all. A store discounting 16.2% more than it means to is running a hidden price cut through every campaign it launches, and no amount of targeting work will find that.

Made a 618-product catalogue navigable

Tags, Arabic product naming, collection structure and on-page SEO were rebuilt, and a buy-two-get-one collection gave the account a way to raise order value that fit how the category actually sells. On a catalogue this size the constraint stops being traffic and becomes whether a shopper can find the second thing to buy.

What happened

The store came out with a break-even it can measure every campaign against, a discount rate that matches the one it intended to give, and a catalogue structured so a visitor can move through it. The scaling decisions did not get more aggressive; they got answerable.

The part usually left out

Most of the value here was accounting and store structure, not media buying, and the ad account looked worse the week after the audit than the week before — because campaigns that had been passing a soft target started failing a real one. That is the correct sequence, but it does mean the first honest report is a downgrade.

Method

How to read every number on this page.

A result quoted without its measurement rules is not a result. So here are the rules these were measured under, in advance of anyone having to ask for them.

01

The numbers come from inside the ads manager and the store

Sales and order counts are read from the platform and the store back end for the stated window, not from a designed report. The raw screenshots sit on the homepage with dates visible.

02

Attribution window is stated, not assumed

Meta's default 7-day click / 1-day view window flatters every account it touches. Where a figure is platform-reported it is treated as platform-reported, and the decision that followed it was made against the store's own revenue.

03

Cash on delivery is counted after cancellations

In Egypt a meaningful share of confirmed orders never gets delivered. A ROAS calculated before cancellations and returns is a number that cannot pay a supplier, so scaling decisions in every account above were made on delivered, net figures.

04

Brand names are withheld, numbers are not edited

Client work is under NDA, so verticals are named and brands are not. Nothing is rounded up, no window is chosen after the fact to make a figure look better, and the months that did not work are not on this page because they are not case studies — which is worth saying out loud.

About this page

What people ask about these.

Are these media buying case studies verified?
The revenue and order figures come from inside the ad platforms and the store back ends for the windows stated, and the raw screenshots with visible dates sit on the homepage of this site. Brand names are withheld because the work is under NDA, so what you can verify is the screenshot and the method rather than the client's identity. Ask for a live screen share on a call if you want to see an account rather than an export.
Why only six case studies when you have run more than forty accounts?
Because these six are the ones where the account was rebuilt rather than merely maintained, and where the before-and-after is clean enough to attribute to a decision rather than to a season. A page of a dozen unbroken wins tells you nothing about how somebody works. Each of these ends with what was uncomfortable, what I would not repeat, or where the offer deserves the credit instead of the advertising.
Why does one of the case studies have no revenue figure in it?
Because the honest outcome of that engagement was to stop rather than to scale. The account was reporting 5.48 ROAS and measuring at 1.80 once the attribution window, the cancellations and the unsettled payments were taken out, so the work was to rebuild the measurement and leave the budget where it was. A case study set that contains only accounts that went up is a set with the diagnoses edited out, and the diagnosis is the part you are actually hiring.
WhatsApp