BFCM, Agencies, part 4

Offer tests for clients: sign-off, margins and discount conflicts

Run a Black Friday discount A/B test for a client: get product costs, work out break-even, agree sign-off and avoid clashes with the client's own codes.

Benchmyrk teamPublished 7 min read

In short

Short answer

  • Test the offer's format before the sale (20% off against $20 off, a flat discount against spend tiers), not its depth during the sale.
  • Get the client's product costs before you start. Judge the test on profit per visitor, and don't call a profit winner while costs cover less than 90% of revenue.
  • Work out the break-even for each arm with the client, in writing, before launch. It turns "did it win?" into a number everyone agreed in advance.
  • List every discount the client already runs (codes in emails, loyalty perks, automatic discounts) and check how each combines with the test.
  • Get written sign-off for the offers, the dates and the person who can pause the test.

Who this is for: agency strategists setting up a discount test for a client before Black Friday.

The 2026 timeline for an offer test

The 2026 timeline for an offer test
DateStep
By Wednesday, October 21Costs from the client, break-even agreed, offers signed off
By Sunday, October 25Launch (a three-week test)
Sunday, November 1Latest launch for a two-week test
By Sunday, November 15Read the result, build the sale offer from it
Monday, November 16Freeze: no new offers or offer tests

Step 1: Get product costs before you plan anything

A discount test judged on orders or revenue per visitor will almost always favor the deeper discount, because more people buy. Whether those extra orders paid for the discount is a profit question, and you can't answer it without the client's costs.

Ask the client for three things:

  1. Unit costs on their products in Shopify. Shopify stores a cost per item on each variant. Many clients have filled it in for some products and not others.
  2. Payment fees as a percent of the order (their payment provider's rate).
  3. What shipping costs them per order, or as a share of order value.

Then check coverage. If unit costs exist for products that make up only 60% of revenue, a profit result covers only part of the store. Benchmyrk won't call a profit winner until costs cover at least 90% of order value, and you shouldn't either. If the client can't fill the gaps in time, fall back to revenue per visitor and say in the report that profit wasn't measured.

The difference between the two goals matters. Revenue per visitor is total revenue divided by all visitors in the arm, so it already includes both conversion and order value. Profit per visitor subtracts what the goods, fees and shipping cost. The help article on revenue per visitor versus conversion rate explains why "conversion went up" doesn't mean "it made more money", and profit per visitor covers the cost setup.

Step 2: Agree the break-even in writing

Before launch, work out how many more orders each discount needs just to earn the same gross profit as no discount. This is plain arithmetic, and it is the most useful page in your test brief.

ExampleExample

(illustrative client, not a real store; plain arithmetic, the same order values in every arm)

The client's gross margin is 45%: on a $100 order, the goods cost $55 and $45 is left.

  • With 15% off, the same order brings $85 and leaves $30. To earn the same $45 in total, the client needs 45 ÷ 30 = 1.5 times the orders: 50.0% more orders.
  • With 25% off, the order leaves $20, so the client needs 45 ÷ 20 = 2.25 times the orders: 125.0% more orders.

If the client's normal week brings 1,000 orders, 25% off needs 2,250 orders in the same week just to stand still. Few offers more than double orders, which is why depth is decided with arithmetic and format with a test. Put both break-evens in the brief the client signs: the general rule is d ÷ (m − d) more orders for a discount d at margin m.

Put the break-even for each arm in the brief and ask the client to confirm it. When results come in, you compare against a number they already agreed to, rather than debating what "good" means after the fact. Our post on testing prices or discounts first has the formula and a table for other margins.

Step 3: Map every discount the client already runs

An offer test adds a discount to a store that usually has others. Before launch, list:

  • Codes in emails and SMS scheduled for the test period.
  • Automatic discounts already active, including ones from other apps.
  • Loyalty and referral perks that apply at checkout.
  • Free-shipping offers, which are a separate discount class.

Shopify applies product discounts first, then order discounts, then shipping discounts, and discounts combine only when each one's settings allow it. When they can't combine, the shopper gets the best discount for the cart. Shopify allows up to 25 active automatic discounts per store, app discounts included (Shopify Help Center, read October 11, 2026). Benchmyrk's price, offer and shipping tests use up to four of them.

For the test, that means:

  • An order offer in the test doesn't stack with another order discount such as an email code: Shopify gives the shopper the better one. Every arm faces the same codes, so the comparison stays fair, but a big email campaign during the test means many shoppers in every arm use the code instead of the offer. Avoid sending a sitewide code while the test runs, or plan the test around it.
  • Only one live offer test per store at a time in Benchmyrk, so a shopper is never promised two offers of the same kind.
  • Count automatic discounts before the freeze, adding the sale offer you'll build from the result.

Step 4: Get sign-off on offers, dates and the stop button

Discounts cost the client money from the first order. Your sign-off document should name:

  • The offers in each arm, with their exact wording on banners.
  • The primary goal (profit per visitor, or revenue per visitor if costs are missing) and the break-even for each arm.
  • Start and end dates, and that no new offer tests launch after the freeze.
  • Who can pause the test without asking, and how the client is told.
  • What happens to shoppers who saw a smaller offer and ask for a bigger one. Decide whether support honors the larger offer on request, and agree it in advance.

Mistakes to avoid

  • Testing depth instead of format. 20% off against 30% off will usually "win" on orders for the deeper offer. Decide depth with the break-even, test format.
  • Judging on conversion rate. A discount can raise conversion rate and lower revenue per visitor, and lower profit per visitor even more.
  • Running a sitewide email code during the test. Shoppers in every arm use the code, and the test measures very little.
  • Banners that promise more than checkout gives. A banner saying 15% on an arm that gets 10% misleads shoppers and breaks the test.
  • Running offer-depth tests over the peak. Deals are screenshotted and shared. Settle depth before the sale; part 9 of this series, on what agencies shouldn't test over BFCM, is listed on the BFCM hub.

Checklist

  • [ ] Unit costs cover at least 90% of revenue, or the report says profit wasn't measured
  • [ ] Payment fees and shipping costs entered
  • [ ] Break-even per arm agreed in writing
  • [ ] Every active and scheduled discount listed, and how each combines
  • [ ] No sitewide code planned during the test
  • [ ] Offers, banner wording, dates, primary goal and pause owner signed off
  • [ ] Test ends by November 15

Running an offer test for your own brand rather than a client? See Black Friday offers judged on profit.

Sources

  1. Shopify Help Center, Combining discounts, read 11 October 2026
  2. Shopify developer documentation, Discount Function API, read 11 October 2026

Talk through your clients' test plans with us.

We'll show the agency workspace on demo data and answer your questions. Agency management is built and tested but has not yet run on a live merchant store.

Book an agency walkthrough