Marketing attribution

How to measure a sale or campaign in WooCommerce

To measure a sale or campaign in WooCommerce, compare its dates with a fair baseline in Analytics › Revenue (the same period last year or the weeks before), then break the result down: coupon use in Analytics › Coupons, and orders by UTM campaign from order attribution. The campaign's effect is the difference from the baseline, not its raw total.

This guide covers setting up the measurement before you launch, reading the result in Analytics, using attribution and coupons to see where it came from, and the checks to run a few weeks later.

Before you launch: set up the measurement

Most campaigns can't be measured properly because nobody decided how beforehand. Five minutes of setup fixes that:

  1. Write down the dates and the baseline. For example: "Autumn sale, 20–26 October. Baseline: 21–27 October last year, and the average of the four weeks before."
  2. Tag every link in emails, posts and ads with UTM parameters, with one utm_campaign value for the whole campaign (say autumn-sale-2026). The UTM tracking guide has a naming scheme.
  3. Use a dedicated coupon code if the sale uses one, and a separate code per audience (newsletter, influencer) if you want to tell them apart.
  4. Check order attribution is on under WooCommerce › Settings › Advanced › Features, and place a tagged test order to confirm it records your campaign.
  5. Decide what success means: extra net sales, extra orders, new customers, or clearing old stock.

The free way: compare the campaign in Analytics

  1. Go to Analytics › Revenue.
  2. Set the date range to the campaign dates.
  3. Under Compare to, choose Previous year (same days last year) or Previous period (the same number of days just before), then Update.
  4. Read the summary: Orders, Gross sales, Coupons, Net sales, Returns.
  5. Open Analytics › Overview or Analytics › Orders for average order value, and Analytics › Products to see what sold.

Which comparison to use matters more than any other choice. Previous period is quick but can mislead around seasonal peaks. Previous year matches the season but ignores growth. Comparing two date ranges explains when to use each, and for big annual events comparing sales year over year goes further.

Worked example

Say your autumn sale ran 20–26 October with 15% off via the code AUTUMN15.

Measure Sale week Same week last year Change
Orders 118 74 +59%
Net sales $9,640 $6,920 +39%
Coupons $1,410 $180
Average order value $81.69 $93.51 −13%

Orders rose much faster than net sales, because the discount lowered the average order. The extra net sales were about $2,720, against $1,230 more in discounts than last year. That's a reasonable result, but the profit picture depends on your margin, which is the subject of how to tell if a coupon paid off.

Where did the campaign's orders come from?

The totals tell you whether sales went up. Order attribution and coupon data tell you why.

  • Orders by UTM campaign: how many orders were credited to autumn-sale-2026, and by utm_source whether the newsletter or Instagram brought more. Core Analytics has no attribution report, so use one of the methods in how to see orders by channel.
  • Coupon use: Analytics › Coupons shows the code's orders and amount discounted. Filter Analytics › Orders by the code for the net sales of those orders.
  • Compare the two. If the coupon was used on 110 orders but only 45 were credited to the campaign, the rest came through other routes: people who saw it and came back via Google, typed your address, or found the code on a coupon site.

Remember that attribution is last click. An Instagram post that made someone search for your store shows as Organic, not as the campaign.

Check again two to four weeks later

A campaign isn't finished when it ends.

  • Pull-forward. Compare the two weeks after the sale with the same weeks last year. A dip means some sale orders would have happened anyway.
  • Refunds. WooCommerce Analytics dates refunds on the refund date, so returns from sale orders appear in later weeks. Look at Returns in Analytics › Revenue for the following month.
  • New customers. A sale that brought first-time buyers who come back later did more than its week suggests. The new vs returning customers guide shows how to check.
  • Stock. If best sellers ran out mid-sale, the result understates demand.

The quick way: ask Askshelf

Askshelf adds Analytics › Askshelf to WordPress admin. Three of its lookups cover a campaign review: "sales summary" for any date range compared with the previous period or the same period last year, "coupon performance" for a code's orders, discount and net sales, and "orders by channel" grouped by UTM campaign or source.

Askshelfexample answer

How did 20–26 October compare with the same week last year?

Net sales were $9,640, up 39% on last year's $6,920, from 118 orders (up from 74). Average order value fell from $93.51 to $81.69, and coupon discounts rose from $180 to $1,410.Sales summary, 20–26 October, compared with the same period last year
An example on a demo store. In your store, the numbers come from your own orders.

Follow up with "how did AUTUMN15 do in that week?" or "which UTM campaigns brought orders that week?". Askshelf doesn't work out how many orders the campaign caused; it gives you the totals, comparisons and breakdowns to judge that yourself. You can also ask for gross profit over the campaign dates compared with the baseline, if Cost of Goods Sold is on and your products have costs. That figure leaves out shipping, payment fees and ad spend, so the campaign's own cost is still yours to subtract. See the order attribution use case for more.

A simple campaign review template

After each campaign, write down:

  1. Dates, offer and baseline used.
  2. Orders, net sales and average order value against the baseline.
  3. Coupon orders and amount discounted.
  4. Orders by UTM campaign and source.
  5. The two weeks after: pull-forward and refunds.
  6. One thing to change next time.

Keep these in one place and your next campaign starts from evidence. For how campaigns fit with the rest of your attribution data, see the hub on WooCommerce order attribution, and for big seasonal events, the questions to ask after Black Friday.

Common questions

What's the best period to compare a WooCommerce sale against?

For a one-off sale, the same days last year is usually fairest because it matches the season. If your store has grown a lot since, use the average of the few weeks before the sale as well and look at both.

Can WooCommerce tell me how many orders a campaign caused?

Not directly. Order attribution credits each order to the last identified source, and coupon reports show who used the code. Neither knows which buyers would have bought anyway, so the extra orders come from comparing against a baseline.

Why did sales drop the week after my sale?

Often because the sale pulled purchases forward: people who would have bought next week bought during the sale instead. Measure the sale together with the weeks after it.

See how Askshelf handles this: Order attribution reports for WooCommerce