Skip to main content
Card class: HeroCategory: Ecommerce Platform
revenue / orders. AOV slipping while orders climb usually = overly aggressive coupon stack, pair with discount_pct.

At a glance

Average value of an order placed in the period. The arithmetic mean of order.total for orders whose status is completed or processing.
What it countsSUM(order.total) / COUNT(orders) WHERE status IN ('completed', 'processing'). Each qualifying order contributes equally, weighted by its customer-billed total.
REST API endpointGET /wp-json/wc/v3/orders (orders list, filter by status + date). Field: total.
VAT / tax treatmentAlways tax-inclusive on the wire. order.total is the post-tax customer-billed figure. Stores configured with woocommerce_prices_include_tax = no (US-style) still see total populated as the tax-inclusive grand total.
Status filterIncludes completed + processing. Excludes pending, on-hold, failed, cancelled, refunded. Same as Total Revenue.
ShippingIncluded. order.total already contains total_shipping.
DiscountsAlready deducted. order.total is the post-discount figure.
RefundsNOT deducted. Refund objects are separate; order.total does not change after a refund. To see post-refund AOV, divide [Net Revenue] by [Total Orders].
Cancelled / failed ordersExcluded (status filter).
CurrencyMulti-currency arithmetic mean WITHOUT FX conversion. Stores using CURCY / Aelia / WMC will mix currencies into a meaningless single number. Filter by currency for accuracy.
Channels / sourcesNot filtered. Web checkout, marketplace plugin orders, REST-API-created orders, and POS plugin orders all contribute. POS orders typically pull AOV down (impulse buys); B2B plugin orders pull it up.
Self-hosted vs managed-WooNo difference in definition; managed hosts produce steadier sync.
Time window30D vsP
Alert triggerdrop >10% vsP, driven by sentiment_key: aov_trend
Rolesowner, marketing, finance

Calculation

Calculated automatically from your WooCommerce data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.

Worked example

A B2B-leaning Woo store on managed-Woo (WP Engine), running WooCommerce Wholesale Prices plugin alongside DTC. The 30-day window covers 14 Mar 26 to 12 Apr 26.
Customer segmentOrdersSum of order.totalSegment AOV
DTC web checkout1,420$128,400$90
Wholesale (wholesale_customer role)84$84,720$1,008
POS plugin orders (in-person trade shows)36$1,440$40
Marketplace (Amazon Connector)92$6,440$70
Blended AOV (this card)1,632$221,000$135
Three things to notice:
  1. Wholesale dominates AOV without dominating volume. 84 wholesale orders (5.1% of count) contribute 84,720(38.384,720 (38.3% of revenue). The blended AOV of 135 is meaningless to either segment, the DTC merchant cares about 90,thewholesaleopsteamcaresabout90, the wholesale ops team cares about 1,008. Use Top Customers to spot the segments.
  2. Plugin-induced data shape variance. Wholesale Prices plugin stores wholesale-specific totals in custom meta (_wholesale_priced_total) and updates order.total to the wholesale figure. The Vortex IQ Woo engine reads order.total as-is, no normalisation needed. But if the merchant later swaps to a different B2B plugin (e.g. WooCommerce B2B), the meta key changes and historical comparisons may shift.
  3. POS pulls AOV down. $40 average from in-person trade-show sales is structurally lower than DTC. A heavy POS month compresses blended AOV without anyone “doing anything wrong”. This is a Woo-specific gotcha because POS plugins are bolt-ons, not a first-class Woo channel.

Sibling cards merchants should reference together

CardWhy pair it with AOV
WC Total RevenueAOV times Orders is Revenue. Without revenue context AOV is misleading.
WC Total OrdersThe denominator. Rising AOV with falling orders means you are selling more to fewer people.
WC Conversion RateTrades off with AOV. Free-shipping thresholds raise AOV but slightly hurt conversion.
WC Top CustomersB2B / wholesale customers pull AOV up. Pair to see segment-driven AOV moves.
BC AOVSame tax-inclusive total semantics. Useful peer for agencies.
Shopify AOVSaaS-platform peer.

Reconciling against the vendor’s own dashboard

Where to look in WooCommerce Admin: WP Admin → WooCommerce → Reports → Orders → Sales by date shows Average gross daily sales and Average net daily sales. For order-level AOV, compute Gross sales / Number of orders manually for the same period; that should match this card to within 1-2%. Other WP Admin views that look like AOV but are not:
  • Analytics → Revenue → Average order value (WC 4.0+): this is post-refund (net) AOV. Reads lower than this card.
  • Stats overview widget: today only, in WP-site timezone.
Why our number may legitimately differ from WooCommerce Admin:
ReasonDirection of divergence
Time-zone. WC reports run on WP-site timezone; Vortex IQ on UTC.Boundary-day effects
Self-hosted server uptime. Sync gaps push AOV either direction depending on which orders are missed.Either
Plugin-version compatibility. B2B plugins overload order.total; subscription plugins create renewal orders at recurring price.Material on subscription / wholesale stores
Refund-object aggregation. WC’s “Net AOV” subtracts refunds; this card does not.This card higher than WC Net AOV
Currency plugin behaviour. Multi-currency stores see arithmetic mean across currencies; meaningless without filtering.Material for international stores
Cross-connector reconciliation (when a payment processor is connected):
CardExpected relationship
stripe.stripe_aovStripe AOV ~= WC AOV for stores using only the WC Stripe Gateway. Gap grows with PayPal / BACS share.
google_analytics.ga_aovWithin ~5% on healthy tagging. Larger gaps mean ad-blocker / cookie-rejection erosion.

Known limitations / merchant FAQs

Hosted-vs-self-hosted, does it affect AOV? The number is the same definition. Self-hosted Woo on flaky shared hosting may produce slightly noisier daily AOVs because some boundary-day orders sync late. Why does WC Analytics show a lower AOV than this card? WC Analytics → Revenue uses post-refund (net) AOV. This card is gross. The two should converge as refunds settle. Refund-object accounting, what does it mean for AOV? Refunds do not change order.total, so a partially refunded 200orderstillcontributes200 order still contributes 200 to AOV here. WC’s Analytics module subtracts refunds from a separate Net AOV figure. Use whichever matches your accounting view. Plugin-induced data shape variance, how does it affect AOV? Subscriptions plugins create renewal orders at recurring (often lower) totals, this pulls AOV down on subscription-heavy stores. B2B / Wholesale plugins push AOV up via large basket sizes. Neither is wrong; they reflect the channel mix. Multi-currency, how should I read AOV? If your store sells in more than one currency, this card’s blended AOV is a mathematical average without FX conversion, treat it as a coarse signal only. Filter by currency for per-currency AOV (per-currency cards on the roadmap). Why does Woo and Stripe disagree on AOV? Stripe-routed payments only. PayPal and BACS orders bypass Stripe. Stripe AOV will track Stripe-paying customer behaviour, this card tracks all paying customers. Today is jumpy, why? Small samples are noisy. A single $1,500 wholesale order on a 50-order day moves AOV by 30%+ on its own. Use rolling 7D / 30D for stable reads. Self-hosted server slowness, will I see weird AOVs? If the indexer caught only half a day’s orders before an outage, the AOV for that half-day skews toward whichever orders did sync. Self-resolves at the next clean poll. My WP Admin shows a different AOV, debug:
  1. Match the date range exactly.
  2. Match the status filter (completed + processing).
  3. Distinguish Gross AOV vs Net AOV (this card is Gross).
  4. If the gap remains, check whether a B2B / subscription plugin overloads order.total shape.

Tracked live in Vortex IQ Nerve Centre

Average Order Value is one of hundreds of KPI pulses Vortex IQ tracks across WooCommerce and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.