Measurement Planning

Promotion analysis

Assess an ecommerce promotion through retained sales, contribution, customer and product effects, and an estimate of demand without the offer.

Judge a promotion against the goal set before it ran. For profitable growth, assess retained sales and contribution plus an estimate of demand without the offer. For stock clearing or customer acquisition, report the outcome and its cost separately. A sales spike alone does not show whether the promotion worked.

Define the offer and its goal

Record eligible products, prices, discount rules, channels, audience and start and end times. Decide whether the review covers the whole event, one offer or one product. Note simultaneous advertising, stock gaps and site changes that could affect the result.

Classify orders from an order and line-item ledger. Distinguish orders placed during the event from orders that received an offer, and count each order once in the event total. A tracked banner impression identifies exposure, not discount use or an order caused by the banner.

On Shopify, discount codes, automatic discounts and product sale prices are different mechanisms. A product sale price is not necessarily recorded as a checkout discount. Google Analytics documents an apply-promotion event when implemented, but that interaction does not establish an incremental sale.

Record the mechanics and the exposure

Shopify discount codes can be a monetary value, percentage, buy X get Y or free shipping discount. The discount is applied to the order subtotal before taxes, with tax applied afterwards. Record the discount type and mechanism alongside the event definition.

A product sale price uses the Price field and the Compare-at price field. Compare-at must be higher than Price to display a sale price, and only the sale price is displayed at checkout. Bulk edit multiple products or variants when the offer covers a range.

Shopify Plus merchants can create a custom discounts app. Rollouts can schedule when a discount is activated or deactivated, or test a discount against existing offers. Sidekick, Shopify's built-in free AI commerce assistant, can help create, edit or troubleshoot discounts.

Google Analytics ecommerce events can record select item, view item, add or remove from cart, begin checkout, purchase or refund, and apply promotion. Item arrays support up to 27 custom parameters, and currency is set at event level.

Read the result in layers

LayerQuestionMeasure
ActivityWhat sold during the event?Distinct orders, units and product sales
AdjustmentsWhat remained after discounts and reversals?Retained sales under a stated definition
EconomicsWhat did the event cost and earn?Contribution using available product and event costs
IncrementalityWhat changed because of the offer?An estimate against a credible no-offer comparison

Keep tax, shipping, order status and refunds consistent. Shopify defines gross sales as product price multiplied by quantity before taxes, shipping, discounts and sales reversals for a collection of sales.

Pending, cancelled and unpaid orders are included in gross sales; test and deleted orders aren't. Use an explicit order-status rule if the decision concerns paid or completed orders, and allow a stated adjustment window before treating the result as settled.

For contribution, deduct applicable product costs and incremental event costs from retained sales. Account for returned stock according to whether its cost is recoverable. Show missing cost data rather than presenting a precise margin that the records cannot support.

Shopify defines units per transaction as net quantity divided by total orders. Average order value equals gross sales excluding adjustments minus discounts excluding adjustments, divided by the number of orders. Adjustments include all edits, exchanges or returns made after the order is initially created. Test and deleted orders are excluded from gross sales.

Key Promotion Metrics from Shopify and GA4

Gross Sales (Shopify)
Product price × quantity before taxes, shipping, discounts, or reversals
Average Order Value (AOV)
Gross sales excluding adjustments minus discounts excluding adjustments ÷ number of orders
Units per Transaction
Net quantity ÷ total orders
Apply-Promotion Event (GA4)
Tracks when a promotion is applied, but does not confirm incremental sales

Check what else explains the result

For promotion-buyer cohort comparisons, see the dedicated article in this cluster.

Check nearby products and the period after the event. A discounted item may gain while a substitute loses, or customers may buy earlier than planned. Review the relevant product group before treating one item's gain as additional business.

Estimate a seasonal baseline using comparable trading days and conditions, then show how the conclusion changes under reasonable alternatives. A planned holdout of comparable eligible customers or markets can provide stronger evidence if the offer and outcome are defined before launch and exposure between groups is controlled.

End with a bounded decision: repeat, change or stop the offer, for which products or customers, and what uncertainty could change that choice. Keep recorded sales, estimated uplift and contribution distinct.

Name the uncertainty and the constraints

Shopify sales reports are up to date give or take about 1 minute; you can reopen or refresh the report to display newer data. Refresh before recording a final result, especially if the decision is made soon after the event.

Privacy changes and browser-cookie restrictions can fragment measurement, making digital campaign attribution difficult. There is no perfect attribution solution, and approaches are never standardised across businesses. Treat platform conversion counts as estimates, not proof of incremental sales.

First-party data and identifiers can help businesses activate and measure existing customers, but building this capability may require investment in CRM or CDP platforms and changes to measurement frameworks.

In this guide

  1. Measuring a sale event after discounts and returnsReconcile sale-event orders, discounts, returns and costs without double-counting orders or treating an early result as final.
  2. Comparing promotion buyers with ordinary customersDefine buyer groups, use equal follow-up windows and interpret repeat purchasing without mistaking selection for a promotion effect.
  3. Estimating cannibalisation between discounted productsEstimate whether a discounted product displaced nearby items by comparing product and group outcomes against a stated baseline.
  4. Separating seasonal demand from promotional upliftBuild a seasonal baseline for an ecommerce sale, show uncertainty in estimated uplift and plan a stronger comparison for the next offer.

More from Measurement Planning