"dropped off a cliff to now around 0.3/4, we used to be around 1.8."
That is a Shopify merchant describing conversion rate during a promotion, recorded in Datadrew's operator research in July 2026. The ads had kept spending for weeks. The discount code was not applying in the cart drawer. "Fixed it and it was like night and day." Nothing in the ad account was wrong, and every edit made to the ad account during those weeks had to be unwound afterwards.
This is the sale playbook for the Shopify founder-operator or growth lead running Meta and Google into BFCM, or into any promotion with a date on it. It is written in three phases because a sale is three jobs on the same ad account: get ready, run the week, put the account back. It sits under the promotion strategy hub, which carries the arc; this piece carries the checklist.
Key Takeaways
- → Set the sale budget on what an order leaves after the discount, using the margins you know, not on last year's gross revenue. The discount comes straight off contribution before the ad dollar does.
- → Two weeks out, five things get checked: budget on after-discount margin, creative supply, the offer mechanics tested in the cart drawer, conversion signals on both platforms, and stock cover next to planned spend.
- → During the week, one causal edit at a time or none. Pre-scheduled budget steps beat live slider-pulling, and a failing code or a sold-out hero is a site fix, never a bid change.
- → Three things look identical in the ROAS column: demand receding, a short conversion-rate shock, and a tracking break. Name it before touching anything.
- → After the sale, recovery is a hold with an exit condition, not a week of panic edits.
A sale is three jobs on the same ad account
Most sale plans are offer plans. The discount, the creative, the email calendar. The ad account gets a budget line and a launch date. Then the week arrives and the account is being managed by whoever is nearest to Ads Manager, at whatever cadence panic sets, and on the Monday after nobody can say whether it is broken or just quiet.
The three phases below exist because each job has a different failure mode. Readiness fails on economics and mechanics. The sale week fails on stacked edits and site problems misread as ad problems. The week after fails on treating receding demand as a broken account. The phase you skip is the one that costs you.
Phase 1, two weeks out: the readiness check
Five items. No percentage rules anywhere in them.
1. Budget on after-discount contribution
Set the sale budget on what an order leaves after the discount, on the gross margin Drew reads from your Shopify unit costs and the shipping, fees, returns and target you confirm, not on last year's gross revenue. A product you know runs at 50% margin at full price is at 37.5% margin at 20% off and at 25% a third off; its break-even ROAS moves from 2.0x to 2.7x to 4.0x before shipping and returns. The budget that was sensible at full price is a different budget at 30% off, and the ad platforms will report the revenue either way. How deep the discount should go, with the break-even table, is its own piece; the number that comes out of it is the input here.
Two market figures exist and both are worth knowing as their owners' work. Triple Whale's BFCM 2026 Advertising Guide, built on 33,000 shops, reports that pre-BFCM spend runs at about 65% of the weekend's. Madgicx's Black Friday guide proposes three to five times normal spend over a 28-day timeline. Neither is wrong as a description of what large portfolios do. Neither knows your margin at the depth you chose, and a multiplier applied to last year's spend is a decision about somebody else's business.
2. Creative supply
Offer-led creative has its own fatigue layer: the offer is the hook, and it expires. Queue enough sale creative that the ad set is not running one exhausted announcement by Saturday, and queue it before the sale, because a new concept launched mid-week has no time to clear learning and pulls spend off the ones that were working. What changes in creative during a sale, and what should be left alone, is the creative side of this playbook; the method for reading a fading winner is on the creative performance hub.
3. The offer mechanics, tested where customers actually redeem them
Which products carry the offer, and does each have the stock to survive it? Is the code automatic or typed, and does it apply in the cart drawer, at checkout, and on mobile, on the theme version that will be live on the day? The merchant at the top of this piece lost weeks of ad spend to a code that worked at checkout and failed in the drawer. Sale periods are where this bites hardest: site changes ship fast, checks don't. Test the redemption path on a phone, from an ad click, the day before.
4. Conversion signals on both platforms
Confirm that Meta and Google are each receiving purchases, and record the normal gap between platform-reported conversions and Shopify orders on an ordinary day. During the sale that gap is your tracking canary: if platform conversions collapse while Shopify orders hold, measurement broke, and no budget move made on top of that can be read or reversed on evidence. Which number is real on any given day, and why the three never agree, is in Marketing ROAS decoded.
5. Stock next to planned spend
Before the budget locks, list every product your active ads point at next to its stock cover for the sale window, and pull planned spend off anything that will sell out before the sale ends. In Datadrew that list already exists: days of cover per product at its recent sales rate, next to the last seven days of Meta and Google spend, refreshed at each Shopify sync, with any product taking spend under fourteen days of cover flagged. Ask Drew which products you are spending into a stockout on and start there. A hero product with nine days of cover cannot carry a fourteen-day campaign, and once it sells out the ads keep spending against an empty shelf. The leak nobody watches explains why no platform catches it; the product performance hub carries the wider question of which products deserve the sale budget at all.
Phase 2, during the sale: what you check and what you don't touch
The instinct on day one is to refresh Ads Manager every twenty minutes and act on what it shows. You know the drill. It is the wrong numbers at the wrong cadence. Intraday efficiency figures sit inside a conversion lag and lie; a budget raised at 11am on a 4x reading is a budget raised on a number that will be 2.6x by the time the day's conversions land.
The edit discipline rule. Some changes reset platform learning and some do not. Learning-sensitive: a budget jump of roughly 20–25% or more in one step (operators put the reset threshold there; Datadrew operator research, July 2026), a bid-strategy change, a targeting change, a creative swap inside the winning ad set. Not learning-sensitive: pausing the ad for a product that sold out, fixing a code, adding budget in the pre-scheduled steps you set before the sale. During the week you make one causal edit at a time, or none, because two edits stacked in one day leave you unable to read either. Stacked edits teach you nothing, and a sale week is the most expensive week to learn nothing in.
What to watch daily, in one paragraph: contribution pace against the margins you know, blended ROAS against Shopify orders net of refunds, product-level sell-through next to the products the ads point at, and frequency on the sale creative. The hourly list is shorter and is about the site, not the ads: is the checkout converting, is the code applying, is the hero in stock, is spend delivering, are conversions firing. The full sale-week schedule, what to check hourly, daily and never, gets its own piece.
Drew reads your account once a day. The hourly checks in a sale week are yours to make, and the hourly view in Datadrew is the input you make them from. The weekend leak surfaces Monday morning, and we say so.
Budget versus target: the levers on Meta and Google mid-sale
"Revenue is up, should I scale?" is the question the sale week asks every afternoon. Not on gross revenue. The discount may already have eaten the contribution, so a record revenue day at the wrong depth is a loss with a nice chart. Scale on three conditions holding together: contribution pace above plan on the margins you know, stock cover on the products the spend lands on, and delivery not piling into one ad set. If all three hold, take the next pre-scheduled step. If one fails, hold.
On Meta, the lever is the budget and the cadence of its steps. Pre-schedule the budget steps yourself in Ads Manager and Google Ads. Drew recommends the step and explains it; it doesn't apply it. A cost cap or bid cap set for normal weeks will refuse the auctions a sale week offers; if it is holding spend under budget, loosen it deliberately within your after-discount economics rather than removing it. Do not change the bid strategy mid-week.
On Google, budget and target bind separately, and finding the binding one is the whole job. If spend is far under budget, the target ROAS is refusing the auctions and the target is the lever. If spend is at budget and the target is being met, budget is the lever. Google's seasonality adjustment exists for exactly this: a short, sharp event where you expect conversion rate to change, applied before and removed after, so Smart Bidding does not learn the sale-week rate as normal and does not carry it into the week after. A data exclusion after the event does the same job for a tracking break. On Performance Max, watch where the extra spend came from: brand or non-brand, new or returning. The seasonality adjustment, the data exclusion and the budget steps are yours to apply; Drew recommends the sequence and explains it.
The three-phenomena rule: what looks identical in the ROAS column
Mid-week, or on the Monday after, ROAS drops. Three things produce that drop and they are indistinguishable in a single column. Each demands a different response, and the wrong response makes the next one worse.
| Phenomenon | What separates it | Response |
|---|---|---|
| Seasonal demand shift | Sessions and conversions fall together; the site converts at its normal rate on the traffic that remains; tracking is firing. Demand was pulled forward and is receding. | Hold. Read the account against its pre-sale baseline, not the peak. Do not chase the sale number with budget. |
| Short conversion-rate shock | Traffic holds, conversion rate falls off a cliff, usually at one step: cart drawer, code, a variant, mobile checkout. | Fix the site. No media move fixes a site problem, and every bid change made during the shock must be unwound later. |
| Tracking break | Shopify orders hold while platform conversions collapse; the gap you recorded in Phase 1 opens on one day. | Restore measurement before any budget move. A drop you cannot read cannot be reversed on evidence. |
How expensive the second one gets: in one vendor-published case from the same research (Vortex IQ, on a Shopify app update that added four seconds to mobile checkout), mobile conversion rate fell 40% at a reported cost of £1,200 per hour. Treat the magnitude as directional, since it is the vendor's figure, and treat the shape as exact: the site is part of the ad account during a sale, and the ad account cannot fix it. For a drop that is none of the three, the diagnostic order finds it: tracking, auction, ads, site, product mix, in that order.
Phase 3, after: hand the account a hold with an exit condition
The Monday after, ROAS is down, say 40%, and the account looks broken. Usually it is not. Demand is receding and both platforms have just spent a week learning a conversion rate that no longer exists. The move is a hold, and a hold is a decision when it has an exit condition: one full conversion window at the pre-sale conversion rate, and blended ROAS back inside its pre-sale band. Leaving the account alone with an exit condition is a decision, not neglect; hold-and-observe is one of the six intervention states in signal or noise, and it earns its place the same way act-now does. The step-by-step normalisation on Meta and Google publishes on 1 December, for the morning it is needed.
Then the read that decides next year's depth: did the sale buy customers who come back? Sale-window first orders against full-price first orders the month before, by first product bought, from Shopify orders alone. The method is in the discount piece.
The printable phase checklist
Two weeks out
- Discount depth chosen from the break-even table on the margins you know; sale budget set on after-discount contribution, not last year's revenue
- Sale creative queued and launched before the week, not during it
- Offer mechanics tested from an ad click, on a phone: cart drawer, checkout, mobile, live theme version
- Purchases confirmed firing into Meta and Google; the normal gap to Shopify orders written down
- Every advertised product listed next to its stock cover for the window; planned spend pulled off anything that sells out early
- Budget steps pre-scheduled by you in Ads Manager and Google Ads
During the week
- One causal edit a day, or none; nothing learning-sensitive stacked
- Hourly, the site: checkout converting, code applying, hero in stock, spend delivering, conversions firing
- Daily, the money: contribution pace on your margins, blended ROAS against Shopify orders, product sell-through, frequency
- Scale only when contribution pace, stock cover and delivery spread all hold; otherwise hold
- On any ROAS drop, name the phenomenon before touching anything
After
- Remove the seasonality adjustment; apply a data exclusion if tracking broke
- Hold with the exit condition written down: pre-sale conversion rate for one full window, blended ROAS inside its pre-sale band
- Calendar the cohort read for three and six months out
How Drew fits. Set a scheduled sale-week report in Datadrew so every morning starts with yesterday's spend, blended ROAS against Shopify orders and what moved, in Slack or email; scheduled reports and alerts are live for every account today. Drew reads your account once a day, so what broke overnight is in your channel before the stand-up, and the diagnosis is a conversation you start. Drew reads the unit costs you keep in Shopify for gross margin and takes shipping, fees, returns and your target from you; with those in, its Budget Recommendations weigh sale-week spend on what an order leaves after the discount, not on gross revenue. The spending-into-stockout flag is live: every product's days of cover next to its last seven days of spend, refreshed at each sync, so "what should I stop scaling before the sale?" is one question, and it can run as a scheduled alert. Drew does not set the offer, apply the seasonality adjustment, pause a SKU or move the budget; it recommends the step and explains it, and the step is yours to apply.
To run it on your own account, pricing is published and flat and the free plan doesn't need a card.
Key Takeaway
A sale is three jobs on the same ad account, and the plan for one is not the plan for the others. Two weeks out, set the budget on what an order leaves after the discount, queue the creative, test the code where customers redeem it, confirm both platforms are receiving purchases, and put stock cover next to planned spend. During the week, make one causal edit at a time or none, watch the site hourly and the money daily, and scale only when contribution pace, stock and delivery spread all hold. When ROAS drops, name which of the three phenomena it is before touching anything. Afterwards, hold with an exit condition and read what the sale actually bought.
Frequently Asked Questions
How much should I increase my Facebook ad budget for Black Friday?
Not by a multiplier. Set it on what an order leaves after the discount you chose, on the margins you know, times the orders your stock can actually fulfil in the window. Then step toward it in pre-scheduled increments you set before the sale, each small enough not to reset learning. Published multipliers (three to five times, or a pre-event share of the weekend's spend) describe what large portfolios did, not what your margin at your depth can carry.
Should I launch new ad creative during a sale?
Launch it before. A new concept started mid-week has no time to clear learning and pulls spend off the ads that were working. Queue offer-led creative in advance, with enough variety that the winning ad set is not running one exhausted announcement by Saturday, and treat the offer itself as a fatigue layer that expires with the sale.
What should I not change in my ad account during a sale?
Anything that resets learning, stacked on anything else: a budget jump of a fifth or more in one step, a bid-strategy change, a targeting change, a creative swap inside the winning ad set. Pausing a sold-out product's ad, fixing a code and taking a pre-scheduled budget step are all fine. One causal edit a day, or none.
My ROAS dropped mid-sale. Is something broken?
Three things look identical in the ROAS column: demand shifting, a short conversion-rate shock on the site, and a tracking break. Check tracking first (platform conversions against Shopify orders), then the site (conversion rate by step, on mobile), and only then the ads. Most mid-sale drops are the site or the tracking, and neither is fixed by a bid change.
How do I use Google's seasonality adjustment for a sale?
It is for short, sharp events where you expect conversion rate to change, typically one to seven days. Apply it before the sale with your expected conversion-rate change so Smart Bidding does not read the sale-week rate as the new normal, and remove it when the sale ends. If tracking broke during the event, a data exclusion for those days keeps the broken period out of the model. Both are yours to apply in Google Ads.
Written by Sumit Bansal, co-founder of Datadrew. Published 16 September 2026. Quotes are from Datadrew's operator research unless linked inline. Gross margin in Datadrew comes from the unit costs a merchant keeps in Shopify and is shown only where cost coverage is high enough; contribution margin and targets are what the merchant confirms. We don't publish BFCM benchmarks from our own base, and Drew's checks are daily, not real-time.