The scenario
The store sells food, litter and accessories from its own warehouse, mostly to cat owners, with a small van fleet that runs scheduled routes for the heavy items and a same-day courier arrangement for everything else. Three years in, it had grown past the point where the founder could run ads himself and had handed media buying to a freelancer who managed it well at a modest budget but had never scaled past it.
The plan going into the quarter was straightforward: increase spend ahead of National Day and White Friday, when Kuwaiti households restock before a long weekend at home with the family and the cat. The account had a genuine track record of profitable prospecting at its existing budget, which is exactly the situation scaling is supposed to work in.
- Monthly revenue band
- pending client sign-off
- Average order value
- pending client sign-off
- Fulfilment
- Own warehouse, small owned van fleet plus a contracted same-day courier
- Team
- Founder, a warehouse team of two, and a freelance media buyer
The account scaled. The warehouse could not keep the promise it made
The freelancer did the obvious thing when told to spend more before National Day: he raised the daily budget on the two best-performing campaigns by a large step all at once. For the first week, the numbers looked like a win — more purchases, a similar cost per purchase, exactly what a founder wants to see. By the second week, cost per purchase had climbed past its previous ceiling and kept climbing, and the instinctive read was that the auction had simply gotten more competitive ahead of the holiday.
The auction was part of it, but not the main part. When we pulled the order data apart by delivery outcome rather than only by ad performance, a second story appeared: a rising share of orders placed in the second week were being delivered a day or two late, cancelled by the customer before the scheduled run, or refused at the door because the promised delivery window had slipped. The extra budget had bought real purchase intent. The warehouse and its two vans simply could not turn that intent into a completed, undisputed order at the new volume, and every failed delivery was still counted as ad spend against a sale that never actually landed.
Nobody had put the delivery fleet's daily capacity into the same conversation as the ad budget, because on paper they belong to two different parts of the business. The account had not hit a ceiling on demand. It had hit a ceiling on how many bags could physically leave the warehouse in a day.
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 large jump in budget ahead of National Day
LostDaily budget on the two best campaigns doubled overnight
- Format:
- A single manual budget edit across two ad sets, no staged steps
This is the change that started the whole problem, and it is worth publishing because the ad account looked fine for the first week. The failure only showed up in the delivery log a week later, which is exactly why judging a budget jump on early ad metrics alone is not enough in a category with a physical fulfilment step attached to every order.
Consolidating scattered ad sets into three campaigns per platform
WinnerOne prospecting, one retargeting, one existing-customer campaign, per platform
- Format:
- Full account restructure across Meta, Snapchat and Google
The account had accumulated near-duplicate ad sets from a year of small, ad-hoc changes, and merging them stopped the budget from splitting its own learning and competing against itself in the same auction. Frequency came down and the read on every subsequent budget step got noticeably cleaner.
Twenty percent budget steps tied to fleet capacity
WinnerIncrease held five to seven days, checked against daily delivery capacity before the next step
- Format:
- Staged budget increases across the consolidated campaigns
This replaced the single large jump and is the change that actually held. Tying each step to a number the warehouse could confirm, rather than to the calendar or the founder's ambition, is what let the account grow without repeating the failed-delivery spike from week two.
Adding Google search as a second platform once Meta stabilised
WinnerBrand-name search campaigns for specific food and litter products already in demand
- Format:
- Search campaigns added only after the Meta account held its cost per purchase for two full weeks
Cat owners searching a specific brand by name are close to a purchase decision already, and this platform picked up demand the social campaigns were not built to catch. Waiting until Meta was stable before adding it meant the account could tell which platform deserved credit for the lift.
Pushing a further budget step after the fleet ceiling was already found
NeutralOne more twenty percent step attempted the week after failed deliveries had already spiked
- Format:
- A scheduled step that was paused mid-week once delivery data flagged it
Worth recording because it is the moment the team almost repeated the original mistake in miniature. The weekly log caught it before the step completed, and pausing it — rather than pushing through on the hope that the auction alone would sort itself out — is what kept the second failure from happening at all.
What we did — the optimizations, in order
Measure server-side before touching the budget
We put server-side conversion tracking on every platform and defined a blended marketing efficiency number as the figure the whole scaling decision would be judged on, rather than any one platform's own reported return.
Why: Without this, the second week's rising cost per purchase would have looked like a Meta problem or a Snapchat problem depending on which dashboard someone opened, when it was actually a fulfilment problem showing up in the ad numbers because that is where anyone was looking.
Consolidate the account before adding a single dinar
We merged a scattered set of near-duplicate ad sets into one prospecting campaign, one retargeting campaign and one campaign for existing customers per platform, so the budget stopped splitting its own learning across near-identical audiences.
Why: A consolidated account gives a much cleaner read on frequency and cost per purchase, which is exactly the visibility this account needed before anyone could tell a genuine auction problem apart from a delivery one.
Confirm creative supply before any budget step
We checked that at least six proven creatives were live across the consolidated campaigns before recommending any further increase, drawing on the hook library this same account had already built through creative testing.
Why: Adding spend on top of two tired creatives is how frequency climbs and cost per purchase drifts up for reasons that have nothing to do with delivery. Confirming supply first removes one whole category of explanation before the fulfilment question is even on the table.
Budget in steps, tied to what the warehouse can actually ship
Instead of one large jump, we moved spend up in steps of roughly twenty percent, held for five to seven days, and checked the daily order count against the warehouse and van capacity before approving the next step.
Why: This is the step that actually fixed the problem, because it treated the delivery fleet's daily capacity as a real constraint on the budget rather than an operational detail to sort out afterward. A step that outpaces fulfilment gets held rather than pushed through.
Shape National Day and White Friday around a fleet ceiling, not a hope
We pre-loaded the seasonal budget against a known maximum number of heavy-item deliveries the two-van fleet could complete per day, and planned for a contracted third-party courier to absorb the overflow above that number rather than letting orders queue silently.
Why: Kuwait's seasonal peaks are predictable to the week even when the exact number is not, and planning the fleet's ceiling in advance turned a scramble in week two into a decision made calmly in week zero, before a single extra dinar was spent.
Recognise the ceiling and grow average order value instead
Once the fleet's daily capacity was clearly the binding constraint rather than the auction, we shifted part of the seasonal push from acquiring more new orders to raising the value of each delivery slot, through the food-and-litter bundle this same account had tested on the conversion side.
Why: When every delivery slot is a fixed, scarce resource, the more valuable growth lever is what rides in the van, not how many vans are asked to leave the warehouse. This is the point where paid scaling and conversion work stop being separate projects.
What changed
The table above carries the figures once the client signs them off, and the shape worth flagging now is that cost per purchase stabilised at the new, higher spend level once budget steps were tied to fleet capacity rather than to the calendar. The auction was never as competitive as the second week's numbers made it look; most of that spike was cancelled and failed deliveries being counted as cost against sales that never completed.
Ad sets consolidated the way they should have been from the start, and frequency on the prospecting audience came down once the account stopped splitting its own budget across near-duplicate ad sets competing against itself in the same auction.
The more durable change was organisational rather than a number in a table: the media buyer and the warehouse now sit in the same weekly call before any seasonal budget step, which did not exist before this engagement and is the actual reason the next holiday push should not repeat the same mistake.
What we would do next
First, formalise the fleet-capacity check as a standing line in the weekly test log, alongside the usual ad metrics, so it never again depends on someone remembering to ask.
Second, cost out a third van against the marketing efficiency it would unlock during peak season specifically, since a fleet upgrade timed to Ramadan and National Day pays for itself faster than one added at a random point in the year.