The scenario
The brand sells hair tools direct to consumer and had just opened a second physical counter inside a mall, which meant the online store needed to keep growing on its own rather than lean on foot traffic. Paid media was run in-house by the founder, who had built the account herself over two years by copying whichever ad set had performed well the previous month and leaving the old ones running rather than turning them off.
By the time we were brought in, the ad account had accumulated the kind of structure that happens gradually and never on purpose: near-identical audiences competing against each other inside the same platform, three different naming conventions from three different phases of the business, and a return-on-ad-spend number pulled straight from each platform's own dashboard rather than from a shared view of actual revenue.
- Monthly revenue band
- pending client sign-off
- Average order value
- pending client sign-off
- Fulfilment
- Own stock, local courier, next-day across Kuwait, plus one mall counter
- Team
- Founder running media, one counter staff member
Fourteen ad sets, one budget, and a cost per purchase that rose every time spend did
The founder's instinct was not wrong: the brand had real demand, a second location proving it, and a genuine pattern of the busiest week of any month being the one before a wedding season or an Eid. Her response to that demand had been to keep adding budget to whichever ad set was performing that week, which is the single most common way a Kuwait account ends up fighting itself.
When we mapped the account, fourteen ad sets across Meta and Snapchat were targeting overlapping versions of the same Kuwaiti audience, several with near-identical interest stacks left over from campaigns launched months apart. They were not learning as one budget; they were competing against each other in the same auction, which pushes frequency up, drives cost per purchase up with it, and makes every platform's own reported return look worse than it should for a brand this size.
Return on ad spend was also being read straight from each platform, which counted the same customer's purchase more than once across Meta and Snapchat in a way no shared revenue figure could confirm. The account did not have a targeting problem or a demand problem. It had never been consolidated, and every new budget increase was funding the chaos rather than fixing it.
What we did — the creative that carried the spend
The losers are here on purpose. A test with only winners was never a test.
One prospecting campaign per platform, replacing eight
WinnerMeta's eight overlapping prospecting ad sets folded into one broad audience per platform
- Format:
- Account restructure, one prospecting campaign per platform
The eight ad sets were not eight ideas, they were one idea copied eight times with slightly different interest stacks, all bidding against each other for the same Kuwaiti women eighteen to thirty-four. Folding them into one campaign let the algorithm learn from a single, larger pool of purchase data instead of splitting it eight ways, and cost per purchase on Meta stabilised within the first budget cycle.
Server-side tracking on every platform before any budget change
WinnerMeta CAPI and Snapchat's server-side API connected to the same purchase event
- Format:
- Tracking infrastructure, not a creative, run before scaling began
Browser-only tracking was undercounting purchases on iOS, which was making the account look worse than it was on Meta and better than it was on Snapchat, and nobody could tell which platform actually deserved the next dinar of budget. Fixing measurement first is what made every decision after it trustworthy rather than a guess dressed up as a dashboard.
Twenty percent budget steps, held for a week
WinnerBudget increases capped at twenty percent, held five to seven days before the next step
- Format:
- Scaling rule applied to the consolidated prospecting campaign
The founder's previous pattern was doubling budget before a big weekend and judging it two days later, which never gave the algorithm time to relearn at the new spend level. Smaller, held steps meant cost per purchase could be read honestly at each level before committing further, and it caught one platform reaching its ceiling before real money was lost finding out the hard way.
Adding TikTok as a third platform at the same time as the consolidation
LostA TikTok prospecting campaign launched in the same month the Meta and Snapchat accounts were being restructured
- Format:
- New-platform launch, run in parallel with the consolidation work
A reasonable instinct that arrived at the wrong moment. Launching a third platform while the first two were still being restructured split the founder's attention and the budget across three moving targets instead of stabilising two, and the TikTok campaign never got a clean read because nobody could tell whether its early cost per purchase reflected the platform or the chaos happening everywhere else that same month.
Pre-loading Eid budget two weeks out instead of on the day
WinnerEid and wedding-season budgets built into the plan two weeks ahead, with delivery capacity confirmed in advance
- Format:
- Seasonal budget plan, agreed before the peak rather than reacted to during it
The previous Eid had been reactive: budget raised mid-peak once the founder noticed sales climbing, by which point cost per thousand impressions had already risen with every other Kuwait retailer doing the same thing at the same hour. Planning the ceiling and the courier capacity in advance meant the brand was already spending at its peak level when demand actually arrived instead of chasing it a week late.
What we did — the optimizations, in order
Put measurement first, before touching budget
We connected server-side conversions on Meta and Snapchat to the same purchase event, standardised link naming across platforms, and set blended marketing efficiency as the number decisions get made on rather than each platform's own reported return.
Why: Scaling a number you cannot trust just scales the error alongside the spend. Fixing measurement before touching budget is what let every later decision in this project be judged against reality instead of a platform's own optimistic count.
Consolidate to one prospecting, one retargeting, one retention campaign per platform
The fourteen overlapping ad sets across Meta and Snapchat were merged into three campaigns per platform by function, closing the near-duplicate audiences that had been competing in the same auction.
Why: One larger, functionally distinct campaign per job learns faster than several small ones splitting the same purchase signal, and it removes the internal competition that was quietly inflating both frequency and cost per purchase.
Confirm at least six live creatives before scaling either platform
Before any budget increase, we checked that each consolidated prospecting campaign had at least six creatives performing under the target cost, rather than two winners carrying the whole budget.
Why: Adding spend to two winning ads is the fastest way to run up frequency, because the same faces see the same ad more often. Six or more creatives spread the increased spend across enough variety that frequency climbs slowly instead of overnight.
Scale in twenty to thirty percent steps, held five to seven days
Budget moved up in bounded steps with a fixed hold period, and rolled back one step after two consecutive days above the agreed cost ceiling.
Why: A held step gives the algorithm time to relearn at the new spend level before another change arrives, which is the difference between a scaling plan and a series of overreactions to daily noise.
Sequence the second and third platform after the first is stable
TikTok, which had been launched at the same time as the consolidation, was paused and relaunched only once Meta and Snapchat had held a stable cost per purchase for two consecutive budget steps.
Why: A new platform launched into an account that is still being restructured cannot be read cleanly, because its early numbers reflect everything else happening that month as much as they reflect the platform itself. Sequencing it after the first two were stable is what finally gave TikTok a fair test.
Pre-load the seasonal budget for Eid and wedding season
Eid, wedding-season and National Day budgets were agreed and loaded into the plan two weeks ahead, with a higher accepted cost ceiling built in and courier capacity confirmed before the peak rather than during it.
Why: Every Kuwait retailer raises budget at the same hour before the same occasions, which pushes the cost of reach up for everyone at once. Planning for that in advance is cheaper than discovering it live and reacting a week behind the customers already buying elsewhere.
Watch for the ceiling rather than push past it on hope
At the third budget step on Snapchat, cost per purchase rose two days running with no creative change, and the step was rolled back rather than held on the assumption it would recover.
Why: A ceiling reached on a stable creative set is a signal about the audience size, not a temporary dip, and treating it as one is how accounts overspend chasing a return that was never coming back at that budget level.
What changed
The numbers in the table above will carry the specifics once the client confirms them, but the pattern worth stating now is that spend and cost per purchase stopped moving in the same direction. Before consolidation, every increase in budget brought a roughly proportional increase in cost per purchase; after it, several budget steps went by with cost per purchase essentially flat, which is the entire point of a scaling engagement.
The consolidation itself did more work than any single creative or budget decision that followed it. Closing fourteen overlapping ad sets into three functional campaigns per platform stopped the account from bidding against itself, and that alone accounted for most of the frequency improvement before a single dinar of new budget was added.
The TikTok sequencing miss was informative rather than costly, because it was caught within the first budget cycle. Pausing it and relaunching once the first two platforms were stable gave it a fair test the second time, and it is now being read on its own numbers rather than numbers contaminated by a restructure happening everywhere else.
What we would do next
Bring Google Shopping into the platform mix for the branded and generic hair-tool searches the account was leaving entirely to organic, since that traffic is already looking for the product rather than being introduced to it.
Second, build the average order value and repeat-purchase levers into the growth plan now, ahead of the point where the current audience genuinely hits its ceiling, so growth does not stall on spend alone once that ceiling arrives.