Talk to a CFO
Eightx Talk to a CFO
← All Insights

eCommerce

BFCM contribution margin vs revenue: what to track

·By Matt Putra, Managing Partner ·17 min read

During BFCM, contribution margin matters more than revenue. Meta CPMs doubled to $17.70 on Cyber Monday 2024 and discounts averaged 21-29%, compressing per-order CM3 from a healthy 18-22% down to roughly 8-12%. Record GMV can still mean thin profit, so track CM3, not the Shopify headline.

BFCM contribution margin vs revenue: what to track

Key Takeaways

  • Revenue grew on volume, not economics. Shopify merchants hit $11.5B in BFCM 2024 sales (+24% YoY), but average order value was $108.56, essentially flat year over year (up about 0.4% from 2023's $108.12). The dashboard headline is real; the per-order profit is not.
  • Meta CPMs more than doubled on peak days. Cyber Monday 2024 CPM hit $17.70, 138% above Meta's $7.43 full-year average. Google Ads CPA rose 26% year over year to $18.32. You paid a premium to acquire the customer you then discounted.
  • Discount depth averaged 21-29% and ran far deeper by category. Athletic and sportswear averaged 45.3% off, makeup 40%, apparel 34%. A brand cutting 34% while facing a 138% CPM premium starts the margin math in a hole.
  • Contribution margin compresses from ~20% to ~9% per order. The double squeeze of deeper discounts plus higher ad costs routinely collapses per-order CM3 by 40-60% during BFCM, before post-event returns (which spike 31-60%) even hit the books.
  • Run a two-column scorecard the Tuesday after Cyber Monday. Put the Shopify GMV number next to a real CM3 number: net revenue minus COGS, fulfillment, fees, returns reserve, and ad spend. That second number is the one that pays rent.

Every November, a founder opens Shopify on Cyber Monday night and feels the rush: record revenue, record orders, the biggest day the brand has ever had. The dashboard is telling the truth. What it is not showing is that contribution margin, the money left after you subtract the variable cost of every sale, likely compressed from a healthy 18-22% down to 8-12% or lower. That compression is what we see consistently across the DTC brands we work with. Two forces hit at the same time. Ad auction costs on Meta more than doubled versus the annual average, and discount depth averaged 21-29% across brands. A $100 order that normally clears $20 in contribution margin can easily clear $6-9 once those forces collide, and that is before the post-BFCM return wave lands. This post walks through why the gap opens, and hands you the two-column scorecard to run the morning after so you know what the weekend actually earned.

The Shopify number and the real number

Shopify merchants generated $11.5 billion in BFCM 2024 sales, up 24% year over year, and 67,000-plus merchants had their best-ever sales day. Those are real numbers and they deserve a moment of celebration. But look one line down. Average order value was $108.56, essentially flat year over year, up about 0.4% from 2023's $108.12. Revenue grew because volume grew, not because each order got more profitable. In fact, each order got less profitable, because the same event that drove the volume also drove up the cost of every unit sold.

That is the gap this whole post is about. GMV is not profit. The Shopify Analytics tab shows you gross merchandise value, order count, and AOV. It does not net out the discount you gave, the ad cost you paid to acquire the click, the peak-season shipping surcharge, the payment processing fee, or the returns that are about to come back. Each of those is a variable cost that scales with the sale, and during BFCM every one of them moves against you at once.

When I talk to founders running a brand this size, the thing they keep saying the week after BFCM is some version of "we had our biggest month ever and I'm staring at a cash crunch." Both things are true at the same time. The dashboard measured the win. It never measured the cost of the win. The only metric that reconciles the two is contribution margin, and the dashboard does not compute it for you.

The double squeeze: ad costs and discount depth collide

Here is the mechanic that compresses the margin. Two variables move at once, and they compound rather than add.

The first is ad cost. In BFCM 2024, Meta's CPM ran to $13.42 for the week (ISO week 48) and $17.70 on Cyber Monday itself, versus a $7.43 full-year average. That is a 138% premium on the single most expensive day of the year. Google was no relief: Google Ads CPA averaged $18.32 during BFCM 2024, up 26.4% year over year. You are paying the highest acquisition cost of the year at the exact moment demand is peaking.

The second variable is discount depth. Retail-trade synthesis puts the U.S. blended average near 27-29% for Cyber Week 2024; DTC brand-level data from Monocle's platform tracker landed at 21% across its brands. Either way, you are selling the product for meaningfully less than list. So the sequence is brutal: you discount the price, which shrinks the revenue base, and then you pay a doubled ad cost against that smaller base. Those two effects multiply. A 22% price cut and an 80% CPM increase do not net to a manageable single-digit hit; stacked together they can erase half the per-order contribution margin.

The pattern we see again and again is founders benchmarking on ROAS during BFCM and feeling fine because the ROAS number held up. But ROAS is revenue over ad spend. It tells you nothing about the discount you gave or the COGS underneath. A 3.0 blended ROAS on a deeply discounted order with a 35% product cost can still be a losing order. ROAS is a spend-efficiency gauge, not a profit gauge, and BFCM is exactly when that distinction bites.

Returns are quietly eating your margin. See by how much.

Get our Real Cost of Returns calculator: plug in your numbers, see the true hit per return.

On its way.

Check your inbox. We'll send the Real Cost of Returns calculator shortly.

The contribution margin formula and what to plug in

Contribution margin is not one number, it is a ladder. Each rung strips out another variable cost, and knowing which rung you are quoting keeps you honest.

  • CM1 (gross profit): net revenue minus landed COGS. This is your product economics.
  • CM2 (after operations): CM1 minus fulfillment and shipping, payment processing, and a returns reserve.
  • CM3 (after acquisition): CM2 minus the paid ad spend that acquired the sale. This is the number that pays rent.

Now plug BFCM into that ladder on a $100 order and watch what happens. In a normal month, a $100 order with 35% COGS, roughly 12% fulfillment, 2.9% processing, a 2.5% returns reserve, and 27% allocated ad spend lands at about $20.60 of CM3, a healthy ~21%. During BFCM, apply a 22% discount, a 20% higher fulfillment cost from peak surcharges, a heavier returns reserve, and the reality that a doubled CPM is buying that same customer, and the same order lands at about $9.44, roughly 9%.

Cost layerNormal monthBFCM
Gross revenue$100.00$100.00
Discount applied$0.00-$22.00
Net revenue$100.00$78.00
COGS (landed)-$35.00-$35.00
CM1 (gross profit)$65.00$43.00
Fulfillment + shipping-$12.00-$14.40
Payment processing-$2.90-$2.26
Returns reserve-$2.50-$3.90
CM2 (before ad spend)$47.60$22.44
Allocated ad spend-$27.00-$13.00
CM3 (contribution margin)$20.60$9.44
CM3 % (of gross revenue)20.6%9.4%
Source: Illustrative $100-order model using Gupta Media CPM data, Adobe discount depth, and DTC benchmark ranges. The BFCM ad-spend line is lower in dollars because higher conversion rates partly offset the CPM spike, yet it represents a larger share of the compressed net revenue. Benchmarks, not a guarantee. Note: the CM3 % row above is expressed as a share of gross revenue ($100); the morning-after scorecard table below expresses CM3 % as a share of net revenue after discounts ($78), which would give 12.1% for the same BFCM order, a different denominator for a different analytical purpose.

One thing to flag on that ad-spend row, because it trips people up. The BFCM ad spend looks smaller in dollars ($13 vs $27) because conversion rates run higher during the event, so each dollar buys more orders. But it is a bigger bite of a smaller pie: $13 against $78 of net revenue is a heavier drag than $27 against $100. And the returns hit is still coming. Return rates spike 31-60% after BFCM weekend, which quietly claws back part of even that $9.44 once December returns land. When we've struggled to explain to a founder why a monster weekend produced a thin bank balance, this table is the fastest way through it.

Category-level discount commitments

Not every brand starts from the same place, because discount depth is wildly uneven by category. A brand's margin fate on BFCM is partly decided by the category norms it feels pressure to match.

Note: top-category figures (athletic 45.3%, makeup 40%, footwear 35.8%, apparel 34%, skincare 33%) are DTC-brand promo depths from the ShopVision 50-brand tracker; bottom-category figures (electronics 30.1%, toys 26.1%, apparel blended 23.2%, TVs 21.8%, computers 21.5%) are listed-price discounts from Adobe Analytics. The two methodologies are not directly comparable.

Athletic and sportswear brands averaged 45.3% off in BFCM 2024 (ShopVision DTC tracker). Makeup ran near 40%, footwear 35.8%, general apparel 34%, skincare 33%. Now overlay the ad cost: an apparel brand discounting at 34% is simultaneously facing that 138% Cyber Monday CPM premium. It has cut a third of its price and is paying a year-high to acquire the buyer. On the CM ladder, that brand can be underwater at CM3 on the first order before any repeat purchase.

That does not automatically mean "don't discount." It means the real question is whether the lifetime value of a customer acquired during BFCM offsets the day-zero contribution hit. Operators at this stage tell us the honest answer is often no for one-off deal-seekers and yes for buyers who slot into a strong post-purchase flow. You cannot know which you got until you measure repeat behavior on the BFCM cohort specifically. If your 60-to-90-day repeat rate on holiday-acquired customers is weak, deep discounting is buying revenue that never becomes profit.

The morning-after scorecard: Shopify column vs CM column

Here is the thing to actually build. On the Tuesday after Cyber Monday, before the numbers get stale and before the returns muddy them, run a two-column scorecard. The left column is what Shopify shows you. The right column is what you actually earned.

MetricShopify dashboardCM scorecard
Gross revenue / GMVshownsame as Shopify
Discount value givennot shownpull from discount report
Net revenue after discountsnot shownGMV minus discounts
Less: variable COGSnot shownfrom product cost data
Less: fulfillment + shippingnot shownfrom 3PL / shipping data
Less: payment processingnot shown~2.9% of net revenue
Less: returns reserve (est)not shownapply your return rate
CM2 (before ad spend)not shownsubtotal
Less: total paid ad spendpartial (via analytics)from Meta + Google
CM3 (after acquisition)not shownthe real number
CM3 as % of net revenuenot shownCM3 / net revenue
New customers acquiredshownsame
Estimated CACpartialad spend / new customers
Source: Eightx BFCM scorecard framework. The Shopify column reflects the Analytics tab; the CM column requires pulling from ad platforms (Meta Business Manager, Google Ads), 3PL and shipping data, and applying a returns reserve estimate.

Run it at the product and channel level, not just blended. A blended CM3 of 11% can hide one hero SKU at 25% and a doorbuster at negative 4%. The blended number tells you the weekend was thin; the SKU-level number tells you which offer to kill next year. When I talk to founders who do this well, the scorecard is not a spreadsheet they build once. It is a template they open every Tuesday after a promo, so the comparison against Shopify's headline becomes muscle memory.

Your Shopify dashboard is a scoreboard for revenue. It has no idea what an order costs you. The only number that reconciles a record weekend with a thin bank balance is contribution margin, and you have to compute it yourself, per order, before the returns land.

Three moves that protect margin without abandoning the event

You do not have to opt out of BFCM to protect the margin. You have to be deliberate about how you discount.

First, do not confuse deeper with better. Klaviyo found the 10-15% and 20-25% discount tiers drove the biggest conversion lift in 2024, not the deepest cuts. If a 20% offer converts nearly as well as a 40% offer, the 40% offer is just donating margin. Test the shallow tiers before you assume you need to match the category's 34%.

Second, use structure instead of straight price cuts. A gift-with-purchase that costs you $10 in COGS but reads as $60 of perceived value preserves your headline price while lowering your effective discount depth. Bundles do the same: they raise AOV and let you protect the unit price on your hero product. The math beats a sitewide percentage in most cases.

Third, lean on customers you already own. Win-back and loyalty offers to existing buyers tend to outperform sitewide discounts because you skip the peak ad auction entirely. You are not paying the $17.70 Cyber Monday CPM to reach someone whose email you already have. That single move sidesteps the most expensive input on the whole CM ladder.

The common thread is that all three protect the same line: contribution margin. Run each one through your own P&L before November, because the right answer depends on your category, your COGS, and your repeat rate, not on a benchmark. That is exactly the kind of pre-event modeling a fractional CFO does with you, so you walk into BFCM knowing which offers earn and which ones just move volume.

Related reading. For the same contribution-margin math applied elsewhere, see blended ROAS vs breakeven MER and ROAS vs contribution margin. For how we help brands model margin and cash, see our fractional CFO work.

Sources and methodology

Shopify's official BFCM 2024 report anchors the revenue-vs-profit gap. Shopify reported $11.5B in global BFCM 2024 sales (+24% YoY), AOV of $108.56, and 67,000-plus merchants hitting best-ever days, in its December 3, 2024 release. That AOV was essentially flat versus 2023's $108.12 (about +0.4% nominal), the tell that revenue scaled on volume, not per-order economics. Source: Shopify BFCM 2024 data.

Ad cost figures come from the Gupta Media CPM tracker and Triple Whale's Google analysis. Meta CPM ran $7.43 as a full-year 2024 average, spiking to $13.42 for BFCM week and $17.70 on Cyber Monday. Google Ads CPA rose 26.4% YoY to $18.32. Sources: Gupta Media Social Media CPM Tracker and Triple Whale BFCM 2024 Google Ads analysis.

Discount depth blends Adobe's listed-price data with DTC platform trackers. Adobe Analytics reported Cyber Week 2024 category discounts at electronics 30.1%, toys 26.1%, and apparel 23.2%. DTC-brand-level data from the ShopVision 50-brand tracker reported category peaks of 45.3% (athletic) and 40% (makeup); Monocle platform data showed a 21% average across its brands; retail-trade synthesis puts the U.S. blended average near 27-29%. Sources: Adobe Analytics Cyber Monday 2024 recap and Monocle BFCM 2024 Insights.

Contribution margin benchmarks reflect Eightx panel data corroborated by published DTC studies. The 18-22% normal-month and 8-12% BFCM CM3 bands are what we see across the DTC brands we work with; they sit inside published ranges (ATTN Agency puts a healthy blended CM at 15-20% and strong at 20-30%+, with below 15% flagging a CAC, COGS, or retention problem), and the 40-60% per-order BFCM compression is corroborated externally. Sources: ATTN Agency DTC Profitability Benchmarks 2026 and Eightx Contribution Margin Bible for DTC.

Return-rate and fulfillment-surcharge figures round out the cost stack. Post-BFCM return rates spike 31-60% (Loop Returns and ZigZag Global estimates), and 2024 peak-season carrier surcharges lifted effective shipping costs 30%+ when fully applied (Sept 30, 2024 to Jan 19, 2025). Sources: Gorgias BFCM returns guide and ShipNetwork 2024 peak-season surcharge overview.

Methodology note on the per-order model. The $100-order waterfall and the normal-vs-BFCM table are illustrative models built from the sources above, not a single brand's P&L. BFCM discount is set at 22% (midpoint of the 21-29% range), fulfillment 20% higher for peak surcharges, and the returns reserve at the low end of the post-BFCM spike. Figures are benchmarks; plug your own inputs into the scorecard for a real read.

Frequently asked questions

what is contribution margin and how is it different from revenue or gross profit?

Revenue is the top line, what customers paid. Gross profit is revenue minus the cost of the product itself (landed COGS). Contribution margin goes further: it subtracts every variable cost tied to the sale, including fulfillment, payment fees, returns reserve, and the ad spend that acquired the customer. It is the money left over to cover fixed costs and profit. Revenue can hit a record while contribution margin collapses.

why does my shopify dashboard show a record bfcm and i'm still short on cash?

Because the dashboard shows GMV and order count, not what you actually kept per order. During BFCM you discounted the sale price, paid double the normal ad cost to get the click, ate peak shipping surcharges, and now face a return wave. Each of those is a real variable cost the revenue number ignores. Record revenue at a 9% contribution margin can generate less cash than a quieter month at 20%.

how much do meta and google ad costs actually increase during black friday week?

In BFCM 2024, Meta's CPM hit $13.42 for the week and $17.70 on Cyber Monday, versus a $7.43 full-year average, a 138% premium on the peak day. Google Ads CPA rose 26% year over year to $18.32. TikTok stayed cheaper but still spiked. You are paying the most you will pay all year to acquire a customer at the exact moment you are discounting them the hardest.

what is a healthy contribution margin for a dtc brand during normal months vs bfcm?

For most product DTC brands, a healthy blended CM3 (after COGS, fulfillment, fees, and ad spend) runs 18-22%, and below 15% signals a structural problem. During BFCM that same brand often compresses to 8-12% per order because discounts deepen and ad costs roughly double at the same time. The compression is normal; the danger is not knowing it happened.

should i participate in bfcm if my contribution margin will be negative?

Only if the customers you acquire have enough repeat value to earn the day-zero loss back. Run the math before you commit: if first-order CM3 is negative and your 90-day repeat rate is weak, you are buying revenue that never becomes profit. Some brands with strong brand equity opt out entirely or run non-discount events. The answer depends on your actual LTV, not on what competitors are doing.

how do post-bfcm returns affect my actual earned margin?

Returns spike 31-60% in the weeks after BFCM (Loop Returns estimates 31%, ZigZag Global 60%), and holiday return rates run about 17% above the annual average. Every returned order reverses the revenue but keeps some costs: return shipping, restocking labor, and often a markdown on the item. If you booked BFCM margin without a returns reserve, your December CM3 is lower than the number you celebrated on Tuesday.

how do i build a bfcm profitability scorecard to review the morning after cyber monday?

Put two columns side by side. The Shopify column has GMV, orders, AOV, and new customers. The CM column starts with net revenue after discounts, then subtracts variable COGS, fulfillment and shipping, payment processing, an estimated returns reserve, and total paid ad spend, ending in CM3 dollars and CM3 percent. Run it at the product and channel level, not just blended, so you can see which offers actually earned.

can bundling or tiered offers protect margin during bfcm better than straight discounts?

Often yes. Klaviyo found the 10-15% and 20-25% discount tiers drove the biggest conversions in 2024, not the deepest cuts, so you may not need to go as deep as you think. A gift-with-purchase that costs you $10 in COGS but reads as $60 of value preserves your headline price while lowering effective discount depth. Win-back offers to existing customers also tend to outperform sitewide discounts because you skip the peak ad cost entirely.

About the Author

Matt Putra, Managing Partner

Matt is the Managing Partner of Eightx, a fractional and interim CFO firm managing $650M+ in revenue across 35+ ecommerce, DTC, and CPG portfolio brands across the US, Canada, Australia, and the UK. A former PE investor with $500M+ deployed, Matt specializes in benchmark-driven financial leadership for apparel, beauty, food and beverage, and household brands.

Related Insights

Planning your promo calendar before November?

Talk to a CFO about your BFCM margin before you set the discount

30-minute call. We'll model your per-order contribution margin against real BFCM ad costs and discount depth so you know what the event actually earns.

Talk to a CFO