Merchgain
EN
Available now
Next, in this order
  • FrançaisFR
  • ItalianoIT
  • PortuguêsPT
  • NederlandsNL

A language appears here once its pages are written. Nothing on this site is machine-translated, except the German and Spanish pages, which no native speaker has reviewed yet.

Install freeInstall

Did Black Friday pay off? How to check the profit from a sale

More revenue during a sale does not yet tell you whether the sale made money. A better guide is the gross profit from the sale days, compared with the profit from the same days a week earlier. The form above builds both links to the report in your store, and the text below explains how to read them.

Updated

Which period to compare

The sale period is the days your sale prices were live. In 2026, Black Friday falls on Friday, November 27, and Cyber Monday on Monday, November 30. If your sale ran from Friday to Monday, enter November 27–30.

Compare it with the same days of the week one week earlier, November 20–23: the same length and the same run of weekdays. For a longer sale the form moves the comparison back by whole weeks, so the two periods do not overlap. Leave December out of it: holiday shopping is a season of its own.

If customers held off buying until the sale, the week before it is weaker than usual, and the comparison flatters the sale. To be safe, also look at the same days two weeks earlier: just change the dates. You can compare with Black Friday 2025 (November 28 to December 1, 2025) only if your costs were already being recorded then. The cost field arrived in WooCommerce 10.3, on October 22, 2025.

Revenue goes up, profit does not have to

Merchgain counts revenue after discounts and coupons, without tax and shipping, and gross profit as revenue minus the cost of goods recorded on the order. So a discount shows up in the profit, not only in the revenue (how profit and margin are calculated).

An example: everything in the store is 20% off, and twice as many items sold as the week before.

Nov 20–23Nov 27–30, 20% off
Revenue$10,000$16,000
Cost of goods$6,500$13,000
Gross profit$3,500$3,000
Margin35%18.8%

Revenue went up by 60%, and gross profit went down by $500. At a 35% margin, 20% off needs 133% more sales, not 100%, to earn the same. It is the same calculation as in the discount margin calculator. So in the report look at the Gross profit card, not at Revenue.

Margin also falls when products with a lower margin sell better during the sale, even though no product got any less profitable. The By category view shows where it came from: more in profit by category.

Products sold below cost

The links from the form open the report sorted by profit, lowest first, so products with a negative profit sit at the top of the list, with a minus. One cause is discounts that stack: a sale price and a percentage coupon on the same product. 20% off plus a 10% coupon is 28% off the regular price. Merchgain counts a line’s revenue after the coupon, so such a sale shows up with a minus whenever 28% is more than the product’s margin.

A negative profit with a negative number of items is something else: refunds of earlier sales issued on those days, not a sale at a loss. Export CSV saves the table with the same range and sort order.

When to open the report, and when to open it again

Orders on hold. The report counts orders that are completed, processing, or refunded. An order on hold, for example one waiting for a bank transfer, joins the sale days only once its status changes (which orders are counted).

Refunds land in December. Merchgain counts a refund as a negative on the day it was issued, not on the day of the sale (which month a refund belongs to). So the report for November 27–30 does not lose revenue when customers start sending things back: the refunds from the sale show up as negatives in December, next to your ordinary December sales. The profit for the sale days is the profit before refunds. If more comes back from the sale than usual, the report shows the sale as better than it turned out.

How long refunds take. In the EU, a customer who buys online has 14 days from delivery to withdraw from the purchase. From the day they withdraw, they have up to 14 days to send the goods back. The store refunds the money no later than 14 days after the withdrawal, but it may wait until the goods are back or the customer shows proof of sending. So an order placed on November 27 and delivered on November 30 can still be withdrawn from on December 14, and the money may go back to the customer at the end of December. Outside the EU the rules differ, and your store’s own policy may allow longer. So you see the refunds from the sale in the report for December, and with a longer return window in your policy, later still.

The cost can change on a refund. Issuing a refund makes WooCommerce recalculate the cost of the whole original order from the product’s cost today (a refund changed my historical profit). If you change a product’s cost between the sale and the refund, the cost recorded on the sale changes too. So right after the sale, save the report for its days with Export CSV.

Products without a cost, and the ≈ estimate

Under the report’s cards is the coverage line: it says what share of revenue has a cost recorded. The gross profit and margin on the cards are worked out from that share only, and the report lists the products without a cost by name. Before you compare two periods, check the coverage in both. If a product without a cost sold better during the sale than the week before, a bigger share of the sale’s revenue stays out of the profit, and the profit comparison goes against the sale.

If you entered your costs only after the sale, the orders from the sale have no cost recorded at the moment of sale, because WooCommerce does not fill it in backwards. Merchgain shows an estimate for them from the product’s cost today, in a separate panel and marked ≈. The estimate is off by however much the cost has changed since the day of the sale (estimate for orders without a cost). To find the products sold below cost in that case, sort the table by the Estimated profit column, lowest first. When both periods are from before you entered costs, both have an estimate from the same cost today, and you can compare them. When the costs came in between the two periods, one has a recorded cost and the other only an estimate, and the comparison is an approximation at best.

For the next sale, enter your costs before it starts. To fill in many products at once from a spreadsheet, see bulk cost import.

What this report leaves out

Merchgain shows gross profit: revenue minus the cost of goods. It does not take off shipping, including free shipping during the sale, payment fees or ads. Work out your Black Friday campaigns separately: break-even ROAS. The report also cannot know how many customers would have bought without the discount, or bought during the sale what they would have bought in December.

Two reports side by side are a comparison you make yourself: Merchgain does not work out the difference between periods.

How the form works

The form builds two links to the Merchgain screen in your store’s admin, for example:

https://yourstore.com/wp-admin/admin.php?page=merchgain&range=custom&from=2026-11-27&to=2026-11-30&orderby=profit&order=asc

The dates are in the YYYY-MM-DD format, the way the report takes them. You can set the same range by hand in the Profit & margin report: choose Custom range and enter the dates. The links work when Merchgain, a free profit report for WooCommerce that only reads your data, is installed and active in your store.

Nothing you type into the form above leaves your browser. Your store address and the dates stay on this page, and the link opens your own store’s admin, not our server. The page view itself is counted, without a cookie, like every page here: see privacy.