Average order value
The easiest metric in ecommerce to calculate and one of the easiest to calculate four different ways without noticing.
Also called AOV, Average basket size, Average transaction value.
What it is
Average order value is total order revenue divided by the number of orders in a period. It exists to answer one question: if I get one more order, roughly how much is it worth. That framing matters, because it is what decides every ambiguity below.
order revenue ÷ order count
- order revenue
- What customers paid, before or after refunds and shipping depending on the choice you make below
- order count
- Completed orders, excluding cancellations and test orders
The part the formula leaves out
The mean is the problem. Order values are almost always right-skewed: a long tail of small orders and a short tail of very large ones. A single wholesale order twenty times the size of a normal one moves the mean by more than a month of trading, and the figure it produces describes no order anyone actually placed.
The second fork is refunds. AOV gross of refunds tells you what a new order is worth at the checkout; net of refunds tells you what it is worth once the year is over. For a catalogue with a 5% return rate the two are close enough to ignore. For one with a 26% return rate they are different businesses, and quoting the first while planning against the second is how a marketing budget gets set on a number that cannot pay for it.
Then shipping. Charging for delivery inflates AOV without changing what the customer bought, so a store that switched from free shipping to paid shipping shows AOV growth that is entirely an accounting artefact. Whichever choice is made, it has to be the same in every comparison, and stated where the number is shown.
How it is usually computed wrongly
01
Reporting the mean when the distribution is skewed
One wholesale order can move the mean past the point where it describes anything. The mean and the median can differ by 40% in a perfectly ordinary catalogue, and only one of them answers the question you asked.
Report the median beside the mean, and if they diverge, say so. A gap between them is itself a finding, because it tells you the business has two customer types in it.
02
Counting cancelled and test orders
Cancelled orders sit in the same export as completed ones with a status field nobody filters on, and internal test orders often carry unusual values that pull the average around.
Filter to completed orders explicitly and state the filter. An unstated exclusion is an invisible claim about what counts as an order.
03
Comparing AOV across channels with different fee structures
A marketplace order and a direct order at the same price are not worth the same to you. Comparing their AOV ranks the channel that sells expensive things badly above the one that sells cheap things well.
Compare contribution per order rather than revenue per order once fees differ by channel. Revenue per order is only comparable where the cost of an order is the same.
04
Watching AOV monthly on low volume
Below a few hundred orders a month, AOV moves on who happened to order rather than on anything you did. A 12% jump on 180 orders is noise that will reverse next month.
Use a rolling window long enough to hold several hundred orders, and read the trend rather than the point.
What your file needs
- One row per order, or order lines that can be grouped back to an order
- An order value column, and ideally the components of it
- An order status, so cancellations can be excluded
- A date, for anything comparing periods
Anything missing is reported as unavailable rather than substituted with something weaker computed on worse evidence.
Compute it on your own file
No account needed to start. You only pay when you like what you see.