Average revenue per order over the window, total order revenue divided by order count, the cleanest read on basket size.
At a glance
Average Order Value is total order revenue divided by the number of orders in the window. It is the single best indicator of how much each customer spends per purchase, and it moves on three levers: price, units per order, and discounting. A rising AOV on flat order volume means baskets are getting bigger; a falling AOV often means a discount is doing the heavy lifting. Because OpenCart order totals are configurable (the order total lines are extension-driven), exactly what lands in “revenue” depends on which total extensions your store runs.
Calculation
Worked example
A UK auto-parts store on OpenCart 4.x. The 30-day window covers 14 Mar 26 to 12 Apr 26. The store runs the standard sub-total, shipping, coupon, and tax order-total extensions. Mid-window it launches a “free shipping over GBP 75” coupon to lift basket size.
What’s interesting here:
- AOV rose 3.2% vsP, comfortably above the alert floor. The window AOV of GBP 92.84 against a prior GBP 90.00 is a healthy lift, nowhere near the
drop > 10% vsPtrigger. The card stays green and the trend line ticks up. - The free-shipping threshold did its job. Second-half AOV jumped to GBP 96.00 because shoppers added an item to clear the GBP 75 free-shipping bar. The coupon nudged basket composition without cutting price, the most margin-friendly way to lift AOV.
- Order count rose too, so the lift is real. AOV can be gamed by suppressing small orders, but here both revenue and order count grew. The store sold more orders and bigger ones, which is the outcome you want.
- Watch the shipping line, not just the headline. Because shipping is inside the order total, giving it away free changes the composition of AOV even as the number rises. Pair with a shipping-cost view to confirm the margin still works after free shipping is factored in.
Sibling cards merchants should reference together
Reconciling against OpenCart
Where to look in the OpenCart admin: Reports → Sales → Orders gives total revenue and order count for a date range; AOV is the former divided by the latter. There is no built-in “AOV” tile in core OpenCart, so you compute it from the sales report. Sales → Orders lets you filter by status and date to count orders directly. OpenCart admin views that look like the same number but aren’t:- Reports → Sales → Orders “Total” is gross revenue, not an average. Divide it by the order count yourself.
- The Dashboard sales chart shows revenue over time, not per-order revenue.
- Sales → Orders count depends entirely on which statuses you include in the filter, change the filter and the denominator changes.
Cross-connector note: if you run a payment connector (for example Stripe or PayPal), the processor’s average transaction size should be close to AOV but not identical, the processor sees only captured payments and nets refunds differently. Treat OpenCart as the source of truth for AOV and use the processor view as a sanity check.
Known limitations / merchant FAQs
Does AOV include shipping and tax? By default, yes. OpenCart builds the order total from configurable total lines (sub-total, shipping, tax, discount) and the stored order total is what this card averages. If your store excludes a line via its Order Totals configuration, that line is excluded here too. Does it net out refunds? No. OpenCart records a refund as an order status change rather than by rewriting the stored total, so a refunded order still contributes its original total to the average. Pair with Refund Rate to understand realised AOV. My AOV jumped but revenue is flat, what happened? Order count probably fell. AOV is revenue divided by orders; if the numerator holds while the denominator shrinks, the average rises even though the business did not grow. Always read AOV next to Order Volume. Why does a discount sometimes raise AOV and sometimes lower it? A threshold discount (“free shipping over GBP 75”) raises AOV by pushing shoppers to add items. A flat percentage-off coupon lowers the stored total per order and can drag AOV down. The lever matters more than the discount itself. How are Cancelled and Failed orders treated? By default they are excluded from both the revenue sum and the order count, so they neither inflate nor deflate AOV. If your status configuration includes them, expect a lower average. My multi-currency store shows a strange AOV, why? Without FX normalisation the average mixes currencies stored onoc_order. A store taking GBP and EUR produces a meaningless blended number. Use a single-currency view; per-currency AOV is on the OpenCart roadmap.
Why does the alert use 30 days and not today?
A single day’s AOV is volatile, one large B2B order can swing it. The 30-day-vs-prior window smooths that out, which is why the drop > 10% vsP trigger is evaluated on the rolling window rather than on a daily figure.