Skip to content
All case studies
Home & decorHome Decor Brand · premium home decoration eCommerce

How we scaled through BFCM when discounts invalidated the algorithm

In mid-November the client announced 40-60% discounts. The problem: Smart Bidding had learned its conversion patterns at full price. To the algorithm, Product X at $150 and Product X at $75 are different things, and the $75 version has zero conversion history. We had three weeks to build a scoring system, a segmented campaign architecture and a real-time monitoring dashboard to guide the algorithm through the sale.

The result

Ad spend rose 119% year over year and revenue rose 284%, with ROAS up 7 points. Scoring products on profit and splitting them into separate campaigns let us steer Smart Bidding through a sale that wiped out what it had learned.

Ad spend, year over year
+119%
Revenue, year over year
+284%
ROAS improvement
+7pp
Conversion rate
+89%

The challenge

In mid-November, the client announced aggressive BFCM discounts: 40-60% off across major categories, new pricing tiers and flash deals on specific products.

Great for driving revenue. Terrible for Google Ads Smart Bidding.

Why this was a problem

Smart Bidding isn’t magic. It’s pattern recognition from historical conversion data. The algorithm spends weeks learning things like:

  • Product X at $150 converts at 2.3% from this search term
  • Users in demographic Y buy this category on weekends
  • A $200 order from this traffic source has an 85% chance of not returning

We had 3 weeks to solve this.

Two paths forward

There were two ways to structure the account for the sale.

Path 1: the Google wayPath 2: the business-context way (chosen)
How it worksFewer campaigns, more products per campaign. More conversions per campaign means faster Smart Bidding learning. Let the algorithm optimize within campaigns.More campaigns, segmented by product performance labels we’d create. Fewer conversions per campaign. Manual seasonal adjustment tweaks during the sale. We control the throttle.
Pros
  • Simple and clean
  • Follows best practices
  • Less manual work
  • Direct control over budget allocation
  • Can prioritize based on margins, inventory and strategic goals
  • Can react within minutes during the sale
Cons
  • Zero control over which products get budget
  • Can’t prioritize high-margin products
  • Can’t react quickly if categories tank
  • You’re a passenger
  • More complex
  • Splits conversions across campaigns
  • Requires constant monitoring

Why we chose Path 2

“We’d rather have 80% of the algorithm’s optimization potential but 100% control over WHERE it spends, than 100% of the algorithm’s potential but 0% control over WHAT it prioritizes. During a sale where every hour matters, speed beats perfection.”

Context matters. This is a high-AOV business with 15-25 conversions per day normally. Smart Bidding needs volume, and we didn’t have it. Waiting for Smart Bidding to “figure it out” could take weeks. We had 4 days.

Scoring every product

We blended Google Ads data with backend profit metrics to prioritize products by true business value. Each product got a score from 0 to 100, built from seven weighted factors.

The score decided how hard we pushed a product. Cash cows (80-100) got maximum budget so they never missed an impression. High potentials (40-79) were scaled carefully and monitored closely. Low-score products (0-39) got minimal budget and higher tPOAS targets.

Weight of each factor in the product score
Margin after discountPost-sale profitability
25%
Discount sizeConversion impact
20%
Historic performancePast BFCM success
15%
POAS performanceProfit over ad spend
15%
Revenue potentialAbsolute profit
10%
Upsell potentialCross-sell driver
10%
Brand popularitySearch volume
5%

What a score (0–100) means for budget
0–39Low scoreMinimal budget, higher tPOAS targets
40–79High potentialsScale carefully, monitor closely
80–100Cash cowsNever miss an impression, max budget
Figure 1.The 7-factor product score. Margin after discount and discount size carry the most weight, and the score sets how much budget a product gets.

Campaign architecture

We kept the evergreen campaigns running untouched and layered separate BFCM campaigns on top, one per product segment. Separate campaigns meant separate control levers during the sale.

Layer 2 · layered on top

BFCM campaigns

Nov 29 – Dec 6
SegmentScoreTargetSeasonal adj.
Cash cows80–100200%+ POAS+200%
High potentials50–79150% POAS+150%
LiquidationInventory100% POAS+100%
Low score0–49250%+ POAS+50%
Losers (circuit breaker)Spend > 2× AOV and POAS < 75%Paused

Surgical control. Each campaign is a separate lever. We could boost, throttle or pause one segment in real time without disrupting the others.

Layer 1 · always running

Evergreen campaigns

Normal budgets · untouched
Standard ShoppingBrand SearchCategory SearchPerformance Max

Protected core business. Kept running at normal budgets throughout BFCM to protect ongoing business and capture baseline demand.

10 minResponse time

LOSERS circuit breaker paused underperformers within 10 minutes

MinutesSeasonal adj. speed

Budget multipliers applied within minutes, not hours or days

2–4 hrsCheck frequency

Real-time monitoring enabled quick adjustments all weekend

Figure 2.Evergreen campaigns protect the core business. The BFCM layer on top gives one lever per segment, plus a circuit breaker that pauses losers.

Why segmentation mattered

On Cyber Monday, when HIGH POTENTIALS (functional items) started outperforming CASH COWS (decorative items), we could shift seasonal adjustments in minutes.

In a unified campaign that is impossible: you’re stuck with whatever the algorithm prioritizes. You also can’t build a new campaign mid-sale, because Google takes hours to approve it. The pre-built structure gave us options when chaos hit.

The critical moment: Black Friday, 10 AM

Black Friday morning hit. Traffic spiked 3x higher than we predicted. Not 3x versus normal, but 3x versus our elevated forecast.

By 10 AM, HIGH PRIORITY campaigns were burning through daily budgets. At this rate, budgets would be exhausted by 11 AM. The dashboard showed immediate ROAS at 280% (target: 400%), with spend accelerating 2.5x faster than forecast.

The typical response would be to pull back budgets. We did something different.

The 6-hour conversion delay

Google Ads reports conversions 4-8 hours after they happen. At 10 AM on Black Friday, the platform numbers were flying blind. So we checked the backend instead.

ROAS on Black Friday, target 400%
Google Ads at 10 AMImmediate ROAS, incomplete data
280%
Our predictionBackend revenue + maturation curves
400–440%
Actual at 4 PMMature ROAS once conversions reported
430%

What we saw at 10 AM

280% ROAS in Google Ads

  • Spend accelerating 2.5x faster than forecast
  • ROAS appears to be underperforming badly
  • Natural response: pull back budgets immediately

The trap. Conversions from 8 to 10 AM just hadn’t reported yet. Making decisions on incomplete data could kill the best-performing window.

What we checked
Backend database (real time)
Orders not yet in Google Ads
+60% revenue
Historical maturation pattern
Avg. improvement · median delay 5.8 hours
+18%
Predicted mature ROAS
Based on 60% higher backend revenue
400–440%

The decision. Increased seasonal adjustments +30% on CASH COWS. Actual 4 PM mature ROAS: 430%, in line with the prediction.

Figure 3.At 10 AM Google Ads showed 280% ROAS against a 400% target. Backend data predicted 400-440% once conversions caught up, and the 4 PM number came in at 430%.

What made this work: understanding how Google Ads works (the conversion reporting delay) and having backend validation ready, so we could make the right call at the critical moment. Without this multi-source analysis, the natural response would have been to pull back budgets and miss the day’s best performance window.

Day by day, Black Friday to Cyber Monday

Revenue grew faster than spend on every single day of the sale. Investment grew +119% and revenue grew +284%. The gap is profitability.

Ad spend vs. last year Revenue vs. last year
Thu Nov 28
+80%
+150%
Fri Nov 29Peak day
+140%
+320%
Sat Nov 30
+110%
+240%
Sun Dec 1
+95%
+210%
Mon Dec 2Peak day
+135%
+350%
+119%4-day total ad spend
+284%4-day total revenue
+7pp · +89%ROAS · conversion rate
Figure 4.Year-over-year change per day. Revenue (orange) outgrew ad spend (grey) every day, with Black Friday and Cyber Monday as the peak days.

We didn’t just spend 2.84x more to get 2.84x more revenue. We spent +119% more and generated +284% more revenue. The difference is profitability: product-level optimization through scoring and segmentation, working exactly as designed.

The results

When the sale ended, the numbers told a clear story: strategic scale with better profitability, not just revenue growth.

MetricChangeWhat it means
Revenue (YoY)+284%2.84x the revenue of the previous year’s BFCM. We didn’t just spend 2.84x more: we spent +119% more and generated +284% more revenue. The gap is profitability.
Ad spend (YoY)+119%Strategic scale, not wasteful scale. Every incremental dollar had a clear path to profitable revenue. Traffic was 3x higher than forecast, and the pre-built campaign structure gave us the confidence to lean in.
ROAS+7ppAt this scale, 7 percentage points is massive in absolute dollars. It proves we scaled profitably, not just scaled. Anyone can dump money into Google Ads during BFCM. Scaling while improving ROAS is hard.
Conversion rate+89%Same traffic quality. Same website. A different product mix, scored and segmented by priority. Product selection matters.

After the sale: the wind-down

Most advertisers waste thousands post-sale because Smart Bidding doesn’t know the sale is over. The algorithm sees 4 days of massive conversion volume and concludes “this is the new normal.” Without an active wind-down, Google Ads keeps spending aggressively Tuesday to Thursday, chasing conversions that aren’t there.

What the client said

“We were skeptical: ‘Too many campaigns will confuse Google.’ But when Black Friday hit and traffic spiked 3x higher than predicted, those segmented campaigns became the control knobs that let us steer. Denis could boost CASH COWS, throttle LIQUIDATION and trigger the LOSERS circuit breaker, all without disrupting our core business. The backend data analysis at 10 AM when ROAS looked terrible? That decision alone made the day.”

E-commerce Director, Home Decor Brand

What to take away

  1. 1

    Blend data sources for complete visibility

    Google Ads data alone shows ROAS but not margins, inventory levels or strategic priorities. Client data alone shows margins but not real-time performance. Blended data gives the complete picture. We knew which products were performing (Google Ads), profitable (client margins), in stock (inventory system) and strategic (upsell potential).

  2. 2

    Campaign segmentation means real-time control

    Separate campaigns are separate levers you can pull in real time. On Cyber Monday, when HIGH POTENTIALS (functional items) started outperforming CASH COWS (decorative items), we shifted seasonal adjustments in minutes. The LOSERS circuit breaker paused underperformers within 10 minutes. In a unified campaign, that is impossible.

  3. 3

    Understanding platform mechanics matters

    Google Ads reports conversions 4-8 hours after they happen. At 10 AM on Black Friday, immediate ROAS showed 280% (target: 400%). Backend ERP data showed revenue 60% higher than Google Ads reported. Based on backend data and historical maturation patterns, we predicted 400-440% mature ROAS (actual: 430%). That understanding of conversion delay informed the decision to maintain and increase budgets.

  4. 4

    Seasonal adjustments give you speed

    Budget and bid changes work on monthly averages, which is slow. Seasonal adjustments work within minutes. During a 4-day sale where every hour matters, speed is everything. We tweaked adjustments every 2-4 hours and saw spend adjust within 10 minutes. That responsiveness let us ride the wave instead of getting crushed.

  5. 5

    Plan the wind-down as carefully as the ramp-up

    Smart Bidding does not know the sale is over. Without an active wind-down, Google Ads keeps spending aggressively post-sale, chasing conversions that are not there. We applied negative seasonal adjustments (-60%) immediately and increased PMAX target ROAS 15% to restrict Display remarketing. That saved thousands in wasted post-sale spend.