The scenario
The retailer runs two physical showrooms and an online catalogue spanning majlis, bedroom and dining furniture, with a media buyer on staff and a genuine track record of Meta and Snapchat spend going back years. It is not a beginner account, which is exactly why its problems were structural rather than obvious.
Every product category had been given its own campaign when it launched, and none had ever been retired or merged. By the time we were brought in there were roughly twenty ad sets, most targeting close to the same broad Kuwait audience, spread across majlis, bedroom, dining and a general brand campaign, all bidding against each other in the same auction for the same person's attention.
- Monthly ad spend band
- pending client sign-off
- Average order value
- pending client sign-off
- Fulfilment
- In-house delivery and assembly fleet, two showroom locations
- Team
- In-house media buyer, showroom sales staff, a WhatsApp enquiries desk
Twenty ad sets, one audience, and a purchase event that counted the wrong thing
The account had scaled the slow way, one campaign at a time, for years, and nobody had gone back to clean up after each launch. The result was near-identical ad sets fighting each other in the same Meta auction for the same Kuwaiti household, which raises everyone's cost and teaches the algorithm nothing useful, since it cannot tell the difference between three of your own ad sets and three different advertisers.
The measurement underneath it was worse than the structure. "Purchase" had been defined years earlier as any enquiry form submitted, whether it came from a serious household comparing fabrics or a student browsing for a design project, and a large share of the highest-intent conversions — a showroom visit booked straight from a click-to-WhatsApp ad — were never counted at all, because there was no server-side event to catch them. The retailer had tried to double its budget once before, right before last year's National Day season, while only two creatives were carrying the account.
Cost per enquiry spiked within days and the budget was pulled back in a panic, which taught the team the wrong lesson: that the account could not handle more spend. The account did not have a ceiling. It had a duplicated structure, a polluted purchase signal and not enough proven creative to absorb the money it was trying to add.
What we did — the creative that carried the spend
The losers are here on purpose. A test with only winners was never a test.
Consolidating twenty ad sets into one prospecting, one retargeting and one retention campaign per platform
WinnerOne structure covering majlis, bedroom and dining under a shared budget, instead of a separate campaign per category
- Format:
- Full account restructure on Meta, mirrored on Snapchat once stable
The category-by-category structure had felt organized on a slide but meant twenty ad sets were splitting one audience and one learning phase between them. Collapsing them let the algorithm see enough volume in one place to actually optimise, and cost per enquiry dropped before a single dinar of new budget was added.
Redefining the purchase event as a real WhatsApp reply, tracked server-side
WinnerA qualified-enquiry event fired only after a genuine reply in the chat, not on the click that opens it
- Format:
- Server-side event via the WhatsApp Business API and Meta CAPI
Optimising toward every form fill had been feeding the algorithm a signal that included curious students alongside serious buyers, and it could not tell them apart. Once the qualified reply was the event, spend started chasing the household actually asking about fabric and delivery, and the showroom-visit conversions that used to be invisible finally counted toward the account's own optimisation.
Doubling the Meta budget in one jump before last year's National Day season
LostBudget moved from its normal level to double overnight, with only two creatives live across the account
- Format:
- Single-step budget increase, no consolidation and no new creative beforehand
This was the retailer's own attempt from the year before, and it is worth publishing because it is the mistake most Kuwait accounts make once they decide to scale for a season. Frequency on the two live creatives climbed past the point Kuwait's market size can absorb within days, cost per enquiry spiked, and the budget was pulled back before the season it was meant to serve had even started.
Adding Snapchat only after Meta's cost per enquiry had been stable for two weeks
WinnerA second-platform launch timed to Meta's stability rather than the calendar
- Format:
- New Snapchat account structure, mirroring the consolidated Meta campaigns
Snapchat reaches the Kuwaiti women who make most majlis-refresh decisions, and it was worth adding, but only once the first platform had a stable, readable cost per enquiry to compare against. Adding it earlier, while Meta was still absorbing the consolidation, would have made it impossible to tell which platform's numbers to trust.
Chasing the platform-reported ROAS on the single best-looking ad set
LostBudget shifted toward the ad set showing the highest in-platform return, without checking it against blended marketing efficiency
- Format:
- Manual budget reallocation based on Meta's own reported return metric
The ad set in question was a retargeting campaign showing an inflated return because it was reaching people who were already about to order regardless. Feeding it more budget did not create new revenue, it just moved spend that used to sit in prospecting, and blended marketing efficiency for the account barely moved even though the one ad set's own number looked excellent.
What we did — the optimizations, in order
Measurement first: server-side and one definition of a qualified enquiry
We set up Meta CAPI and Snapchat's equivalent, gave every link one naming convention, and redefined the purchase event as a genuine WhatsApp reply rather than any form fill or click.
Why: An account cannot scale safely on a signal that cannot tell a serious buyer from a curious click, and this one had been doing exactly that for years without anyone noticing.
Consolidate the account into one structure per platform
The roughly twenty category-by-category ad sets collapsed into one prospecting campaign, one retargeting campaign and one retention campaign per platform, spanning all three furniture categories together.
Why: Ad sets competing with each other for the same audience were the single biggest source of wasted spend in the account, and consolidating them was the fix that cost nothing and moved the number before the budget itself changed.
Confirm creative supply before adding budget
We required at least six proven creatives live across the consolidated campaigns, pulled from the brand's own creative-testing work, before approving any budget increase.
Why: The previous attempt to scale had failed on exactly this point: two creatives cannot absorb a doubled budget without frequency and cost per enquiry both climbing within days.
Budget in twenty-to-thirty percent steps, held for a week
Each increase moved by twenty to thirty percent, held for five to seven days, with a rule to roll back after two consecutive days above the cost ceiling.
Why: Doubling a budget overnight is how the retailer got burned before. Stepped increases with a pre-agreed roll-back rule let spend grow toward the Ramadan peak without another panic pullback.
Add Snapchat once Meta was stable
Snapchat launched with the same consolidated structure only after Meta's cost per qualified enquiry had held steady for two full weeks, matched to the demographic that drives most majlis decisions.
Why: Adding a second platform while the first is still absorbing structural change splits attention and makes it impossible to know which platform's number to believe.
Shape the Ramadan budget and delivery calendar in advance
The pre-Ramadan majlis-refresh budget ladder and the National Day décor push were both pre-loaded on the calendar, with the delivery team's assembly slots booked ahead of the expected surge.
Why: A furniture order made in week one of Ramadan traffic still needs assembly slots weeks later, and an account that only plans the ad spend without planning the delivery capacity just moves the bottleneck downstream.
Recognise the ceiling by margin, not by mood
We set the cost ceiling from the retailer's actual margin per category rather than a round number, so bedroom, dining and majlis each has its own break-even rather than sharing one blended target.
Why: A shared ceiling across three categories with different margins either starves the profitable one or overspends on the thin one, and neither mistake shows up until the season is already over.
What changed
The table above carries the numbers once the client confirms them, and the order they arrived in matters: the cost per enquiry moved before a single dinar of new budget went in, purely from consolidating twenty ad sets and cleaning up the purchase signal. Everything after that was the retailer spending more money into a structure that could finally use it.
The stepped budget ladder held through the run-up to Ramadan without the panic pullback that had ended the previous attempt. Frequency stayed inside a range the market could absorb, because six creatives were sharing the load a single pair had carried the year before, and Snapchat added incremental reach rather than cannibalising what Meta was already doing.
The two moves that did not work were as informative as the ones that did. Doubling the budget overnight confirmed that this account's ceiling was structural, not financial, and chasing one ad set's platform-reported return confirmed that blended marketing efficiency, not a single number in the ads manager, is what the retailer should be judging itself against going forward.
What we would do next
Build a per-category break-even into the weekly report so bedroom, dining and majlis are each judged against their own margin rather than one blended ceiling, since the current structure already produces the data to split them apart.
Second, plan the summer moving season the same way Ramadan was planned: budget ladder and delivery capacity locked in a month ahead, rather than reacting once the traffic has already started climbing.