Deep Discounts, Thin Margins: Using Ecommerce Attribution Software to Measure BFCM Profit, Not Just ROAS

Deep Discounts, Thin Margins

Every December, someone posts a screenshot of a 3.5x Black Friday ROAS and calls it a win. Then the January P&L shows up and nobody can find the money. The gap is almost always the same: the discount, the returns, and the costs that never appear in Ads Manager. If you want to know whether your BFCM ads actually made money, you need ecommerce attribution software that measures profit by campaign, not just revenue per dollar of spend.

This post walks through the math with a concrete worked example, shows how a 30% discount quietly raises your break-even ROAS, and lays out what your attribution setup needs to pull in before November 27 so you can read profit, not just ROAS, during Cyber Week.

Why does a big Black Friday ROAS sometimes lose money?

A high ROAS can still lose money because ROAS only compares revenue to ad spend. It ignores what it cost to make, ship, process, and take back the order. At full price those costs leave plenty of room. At 30% off, the room shrinks fast.

And 30% off is not a hypothetical this year. Adobe's 2026 holiday forecast expects discounts to peak at 30% off listed prices for electronics, 29% for toys, and 23% for apparel, with Black Friday online spend projected at $12.9 billion and Cyber Week at $47.5 billion. Deep discounting is the market norm, which means your margin compression is too.

Then there are returns. In the NRF's 2025 retail returns report, retailers expected 17% of holiday sales to come back, and online sales overall had an estimated 19.3% return rate. Your ad platform counted every one of those orders as revenue the day it was placed.

The worked example: how a 30% discount raises break-even ROAS

Break-even ROAS is the ROAS where ad spend exactly equals the profit left after variable costs. The formula: revenue divided by contribution margin (revenue minus COGS, shipping, payment fees, and refund losses). Anything below that number loses money on the first order.

Take a product that normally sells for $100. Assumptions, per order:

  • COGS: $35
  • Shipping and fulfillment: $8 out, $8 for each return
  • Payment processing: 2.9% + 30 cents, the standard online card rate on Shopify's Basic plan
  • Returned items are restocked, but shipping both ways and the processing fee are lost
Scenario (per 100 orders)Net revenueVariable costsContribution before adsBreak-even ROAS
Full price, no returns$10,000$4,620$5,3801.86x
30% off, no returns$7,000$4,533$2,4672.84x
30% off, 17% returned$5,810$4,074$1,7364.03x

Read that last row twice. Your gross sales are $7,000, but after 17 refunds you keep $5,810. COGS on the 83 kept orders is $2,905, outbound shipping is $800, return shipping is $136, and fees are $233. That leaves $1,736 to cover ads. Since your ad platform measures ROAS against the original $7,000, not the post-refund number, divide the $7,000 it reports by $1,736 and you get a break-even ROAS of 4.03x.

Now say Meta reports a 3.5x ROAS on that campaign. That means $2,000 in spend. Your profit before ads was $1,736. You lost $264 on a campaign that looked like a holiday hit.

It gets worse if some of that 3.5x is view-through credit. View-through conversions count people who scrolled past an ad without clicking, so the revenue behind the ROAS may be smaller than reported. On one AdBeacon account, Meta reported a 3.23x ROAS while AdBeacon measured 0.93x on the same spend.

What is POAS, and why is it the better BFCM metric?

POAS (profit on ad spend) is gross profit divided by ad spend. A POAS above 1.0 means the campaign made money after product and fulfillment costs. Below 1.0, it didn't.

In the example above, POAS is $1,736 divided by $2,000, or 0.87. ROAS said 3.5x. POAS says every dollar of ad spend brought back 87 cents of profit. That one number answers the question ROAS can't.

Here's how the two metrics compare during a discount-heavy week:

  • ROAS rises when discounts lift conversion rate, even if every sale earns less.
  • POAS falls when discounts shrink margin, which is exactly what you need to see.
  • Contribution margin (what's left after variable costs) is the bridge between them. If you need a refresher on the inputs, AdBeacon's guide to the gross profit formula covers them.

One honest caveat: a first-order POAS below 1.0 isn't automatically a mistake. If BFCM brings in new customers who buy again in Q1, a slightly negative first order can pay back. The point is to make that call on purpose, with numbers, instead of finding out in January.

See profit by campaign, not just ROAS.

Campaign-level POAS next to platform-reported ROAS on your own account, before Cyber Week.

What ecommerce attribution software needs to show profit by campaign

Ecommerce attribution software can only show profit if it has the cost data. Revenue alone gets you ROAS. To get POAS by campaign, ad set, and ad, the tool needs these inputs connected to each attributed order:

  1. COGS at the product or variant level. Shopify's profit reports only include products that had a cost per item recorded at the time of sale, so blank cost fields mean missing profit. Fill them in before November.
  2. Actual discount applied to the order. Not the list price. Stacked codes and automatic discounts need to flow through as order-level data.
  3. Refunds and returns, matched back to the original order. A December refund should reduce the profit of the Black Friday campaign that drove it, not float as an unattributed line item.
  4. Shipping and payment fees. Even as flat per-order estimates, they change break-even math meaningfully at 30% off.
  5. Click-verified attribution. Profit math built on inflated revenue is still inflated. Click-only attribution credits a sale to an ad only when there's a recorded click, which removes unverifiable view-through credit from the profit calculation.

Platforms are moving this direction too. Google Ads' conversions with cart data can combine Merchant Center COGS with order data to report gross profit for supported campaigns. That's useful inside Google, but it doesn't tell you how Meta, TikTok, and email compare on the same profit basis. Cross-channel profit is where independent measurement earns its keep.

How to set up BFCM profit tracking before November 27

You have about seven weeks. Here's a practical order of operations:

  • This week: audit cost per item across your catalog and fill gaps, especially on BFCM hero products.
  • Before promos are built: calculate break-even ROAS for each planned discount tier (20%, 25%, 30%) and give your media buyers those numbers as floor targets.
  • Before Thanksgiving: confirm refunds sync back to original orders in your attribution tool, and set a 30 to 45 day lookback for your post-BFCM profit review.
  • During Cyber Week: watch POAS by campaign daily. Kill or cap campaigns that sit under 1.0 without a clear new-customer reason.

AdBeacon's BFCM 2026 Success Guide has more planning detail, and our breakdown of why profitability-based reporting beats ROAS covers the reporting side.

What profit-focused measurement looks like in practice

Brands that shift to profit-based measurement often see the change land in net profit, not just top-line revenue. Three 90-day results from AdBeacon agency partners:

  • Cacao & Cardamom (chocolatier, with Best Practice Media): net profits up 420%, order volume up 318%.
  • Foresight Sports (golf simulator tech, with National Positions): net profit up 249.2%, order volume up 119.9%.
  • Pip Pop Post (jewelry, with Best Practice Media): net profits up 93%, order volume up 76%.

These are individual results, not a promise. Better data doesn't run campaigns. It gives the media buyer a clearer read on which ones are worth funding.

The bottom line on BFCM profit

A Black Friday ROAS only tells you how much revenue your ads touched, and at 30% off with holiday-level returns, break-even can climb past 4x. Measure POAS by campaign, feed your attribution tool real COGS, discounts, and refunds, and you'll know which ads paid for themselves before the January P&L does. If you want to see campaign-level profit next to platform-reported ROAS on your own account, book a live AdBeacon demo and we'll walk through your BFCM setup.

Frequently Asked Questions

How do I know if my Black Friday ads were profitable?

Calculate POAS: gross profit (revenue after discounts and refunds, minus COGS, shipping, and payment fees) divided by ad spend. A POAS above 1.0 means the campaign made money on the first order; below 1.0 means it didn't.

How does a discount change break-even ROAS?

A discount cuts revenue per order while COGS and shipping stay the same, so contribution margin shrinks and break-even ROAS rises. In a typical example, a product with a 1.86x break-even at full price needs about 2.84x at 30% off, and roughly 4x once 17% of orders are returned.

What is the difference between ROAS and POAS?

ROAS is revenue divided by ad spend. POAS is gross profit divided by ad spend, so it accounts for product cost, fulfillment, fees, and returns that ROAS ignores.

What data does ecommerce attribution software need to measure profit?

It needs product-level COGS, the actual discount applied to each order, refunds matched back to the original order, and shipping and payment fee estimates. Without cost data, attribution software can only report ROAS, not profit.

What is click-only attribution?

Click-only attribution credits a sale to an ad only when a recorded click connects the shopper to the order. It excludes view-through credit from people who saw an ad without clicking, which makes revenue and profit by campaign more verifiable than platform self-reporting.

Sources

This website uses cookies

We use cookies to personalize content, provide social media features, and analyze our traffic. We also share information about your use of our site with our analytics partners. You can change your preferences at any time. For more information, please see our Privacy Policy and Cookie Policy. Privacy Policy