> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vortexiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Average Order Value, Shopify

> Total revenue / order count. Rising AOV often beats acquisition spend. How to read it, why it matters, and how to act on it.

**Metrics type:** [Supporting Metrics](/nerve-centre/overview#metrics-types-explained)  •  **Category:** [Ecommerce Platform](/nerve-centre/connectors#connectors-by-type)

> Total revenue / order count. Rising AOV often beats acquisition spend.

## At a glance

> Average value of an order placed in the period. The arithmetic mean of `totalPrice` across every order, regardless of fulfilment or refund status.

|                               |                                                                                                                                                                                                                                                                                                                                                               |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **What it counts**            | `SUM(totalPrice) ÷ COUNT(orders)`, every order created in the window contributes equally, weighted by the customer-paid total.                                                                                                                                                                                                                                |
| **VAT / tax treatment**       | **Depends on `Order.taxesIncluded`.** UK / EU stores typically have `taxesIncluded = true`, so AOV is VAT-inclusive (matches what the customer paid). US stores typically have `taxesIncluded = false`, so AOV is exclusive of sales tax (tax sits in `totalTax` separately). The card sums `totalPrice` blindly, it does not normalise across the two modes. |
| **Shipping**                  | **Included.** `totalPrice` already contains `totalShippingPrice`.                                                                                                                                                                                                                                                                                             |
| **Discounts**                 | Already deducted (`totalPrice` is the post-discount figure).                                                                                                                                                                                                                                                                                                  |
| **Refunds**                   | **NOT deducted.** A refunded £100 order contributes £100 to AOV. To see AOV net of refunds, divide *Net Revenue* by *Total Orders*.                                                                                                                                                                                                                           |
| **Cancelled / voided orders** | Included if Shopify indexed them (`displayFinancialStatus = VOIDED` rows still count).                                                                                                                                                                                                                                                                        |
| **Currency**                  | **Multi-currency arithmetic mean WITHOUT FX conversion.** A store taking GBP and EUR orders gets a meaningless single number; use a currency-filtered view for stores transacting in more than one currency.                                                                                                                                                  |
| **Channels / sources**        | **Not filtered.** POS, online store, marketplace-app orders, and orders with `B2B` / `Debenhams` tags all contribute. Same gap as `total_revenue`. Shopify Order index doesn't yet expose `tags` / `sourceName`.                                                                                                                                              |
| **Time window**               | `30D vsP` (default 30D vs the prior 30D)                                                                                                                                                                                                                                                                                                                      |
| **Alert trigger**             | `drop >10% vsP`, driven by `sentiment_key: aov_trend`                                                                                                                                                                                                                                                                                                         |
| **Roles**                     | owner, marketing                                                                                                                                                                                                                                                                                                                                              |

## Calculation

```
AVG(totalPrice)
  WHERE date BETWEEN [period_start, period_end]
```

## Worked example

Imagine your store has 5 orders this week:

| Order | Items                                      | Value (incl. VAT) |
| ----- | ------------------------------------------ | ----------------- |
| #1001 | One t-shirt                                | £45               |
| #1002 | Jumper + scarf bundle                      | £120              |
| #1003 | Single accessory                           | £35               |
| #1004 | Jacket + two shirts (10% discount applied) | £210              |
| #1005 | Returning customer, two items              | £80               |

```text theme={null}
Total revenue        £45 + £120 + £35 + £210 + £80 = £490
Number of orders     5
Average Order Value  £490 ÷ 5 = £98
```

**What it means:** on average, every customer who places an order spends £98. That's your starting point. Now think about levers, if you nudged each customer to add just one extra £10 item (a sock pack, a gift card, a small accessory), this same week would have made you **£50 more revenue with zero extra ad spend**. That's the power of AOV.

## Sibling cards merchants should reference together

AOV is rarely useful on its own. Pair it with these to make decisions:

| Card                                                                               | Why it matters next to AOV                                                                 | What the combination tells you                                                                                                                  |
| ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| [Total Revenue](/nerve-centre/kpi-cards/shopify/total-revenue)                     | AOV × Order Count = Revenue. AOV without revenue context is misleading.                    | High AOV + low revenue = small audience of premium buyers; low AOV + high revenue = mass-market volume. Each calls for a different growth play. |
| [Total Orders](/nerve-centre/kpi-cards/shopify/total-orders)                       | The denominator. Rising AOV with falling orders means you're selling more to fewer people. | If revenue is flat but orders dropped and AOV rose, you didn't grow, you just lost low-value customers.                                         |
| [Conversion Rate](/nerve-centre/shopify/ecommerce_conversion_rate)                 | Trades off with AOV. Free-shipping thresholds raise AOV but slightly hurt conversion.      | The right balance is whichever moves total revenue. Track both before changing thresholds.                                                      |
| [Repeat Customer Rate](/nerve-centre/kpi-cards/shopify/repeat-customer-rate)       | Repeat buyers usually spend more per order than first-timers.                              | Rising AOV often correlates with rising repeat rate, proof your retention program is working.                                                   |
| [Discount % of Revenue](/nerve-centre/kpi-cards/shopify/discount-of-revenue)       | Heavy discounting suppresses AOV mechanically.                                             | If AOV dropped sharply this period, check discount % first, a 25% sale lowers AOV by \~25% even if behaviour didn't change.                     |
| [Top Products by Revenue](/nerve-centre/kpi-cards/shopify/top-products-by-revenue) | Tells you *which* items move AOV up or down.                                               | If your top-3 SKUs are accessories, AOV will be low; if they're bundles or premium items, AOV will be high. Mix-shift drives most AOV changes.  |

## Reconciling against the vendor's own dashboard

**Where to look in Shopify's own dashboard:**

The closest Shopify-native view is:

> **Shopify Admin → Analytics → Reports → "Average order value over time"**
> (Under the *Sales* category. If you don't see it, click **View all reports**.)

Pick the same date range you've selected here, and you should see a near-identical figure. For a quick sanity check, *Analytics → Dashboards → Overview* shows a headline AOV tile for the last 30 days.

If you run multiple sales channels (Online Store, POS, marketplaces), use the **Sales channel** filter at the top of the report to compare your dashboard against ours apples-to-apples.

**Why our number may legitimately differ from Shopify's:**

A small gap is normal. The usual suspects:

| Reason               | Direction                 | Why                                                                                                                                                                                                                                                   |
| -------------------- | ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Refunds**          | Theirs lower (some views) | Some Shopify reports show "net" AOV that subtracts refunds. We show **gross** AOV, every order at its original total. Use *Refund Value* / *Net Revenue* if you want the netted view.                                                                 |
| **Tax inclusion**    | Either                    | If your store toggles between VAT-inclusive and VAT-exclusive pricing on different channels (e.g. wholesale vs retail), your Shopify report and our card may pick different rows. UK-only stores rarely see this.                                     |
| **Time zone**        | Boundary days off         | Shopify uses your store's time zone (set in Settings → General). We use UTC for period boundaries. For a 30-day window the gap averages out; for "today" or "yesterday" it can shift the number meaningfully.                                         |
| **Cancelled orders** | Ours higher               | If `displayFinancialStatus = VOIDED` rows are in the index, we count them. Shopify's "Average order value" report typically excludes cancelled orders.                                                                                                |
| **Multi-currency**   | Ours is the wrong shape   | If you take orders in more than one currency, our card produces an arithmetic mean with no FX conversion, i.e. a meaningless single number. Shopify's report converts everything to your store currency. Use the currency-filtered view for accuracy. |
| **Sync lag**         | Ours lower for "today"    | Our index is updated by Shopify webhooks; the most recent 5-15 minutes of orders may not be in yet. Yesterday and earlier are fully caught up.                                                                                                        |

**Internal identity (within Shopify):**

`shopify.aov = shopify.total_revenue ÷ shopify.order_count`

These three cards are mathematical siblings, if they don't match, it's a sampling or rounding artefact, not a real disagreement.

* [`shopify.total_revenue`](/nerve-centre/kpi-cards/shopify/total-revenue)
* [`shopify.order_count`](/nerve-centre/kpi-cards/shopify/total-orders)

**Cross-connector reconciliation. Google Analytics 4 vs Shopify:**

If you have GA4 connected and tagged correctly, [`ga4.ga_aov`](/nerve-centre/kpi-cards/google-analytics/average-order-value) should be **within roughly ±5%** of this card. They view the same purchases through different lenses. Shopify sees the orders that completed checkout; GA4 sees the `purchase` events that fired in the browser.

A larger gap is normal, not an error. The usual reasons:

* **Ad blockers**. 10-25% of UK shoppers run uBlock Origin or similar; their `purchase` events never reach GA4, so GA4's order count is lower (which makes its AOV calculation jumpy). Shopify, by contrast, sees every paid order regardless.
* **Cookie consent**. Customers who reject analytics cookies are invisible to GA4. Shopify still sees the order.
* **Session vs order**. GA4 attributes purchases to a *session*; Shopify counts an *order*. A customer who returns three times before buying is one Shopify order but one GA4 purchase event tied to the latest session, the AOVs end up close but the underlying populations differ.
* **Attribution windows**. GA4's default is last-non-direct-click, with conversion windows that can be days long. A purchase in Shopify on Tuesday may be attributed in GA4 to Monday's ad click. Time alignment isn't perfect.
* **Tag-fire delay or failure**. If the customer closes the tab before GA4 fires, the event is lost. Shopify still records the order (the payment processor confirms before the page even tries to load).

**Treat Shopify as the source of truth for AOV.** Use GA4 to understand *where the AOV came from* (which channel, which campaign, which device). They serve different jobs.

***

<details>
  <summary><em>Documentation cross-reference (for agencies running multiple platforms)</em></summary>

  The AOV metric exists with the same definition on other commerce platforms. This is **not** a reconciliation, your Shopify store doesn't have a parallel BigCommerce or Adobe Commerce store to compare against. These references exist purely so an agency running clients on multiple platforms can cross-link the same metric across docs.

  * [`bigcommerce.aov`](/nerve-centre/kpi-cards/bigcommerce/average-order-value)
  * [`adobe_commerce.aov`](/nerve-centre/kpi-cards/adobe-commerce/average-order-value)
</details>

## Known limitations / merchant FAQs

**Why is my AOV dropping?**
Three usual culprits, in order of likelihood:

1. **Discounting**. A 20% sale or coupon-heavy week mechanically lowers AOV by \~20% even if customer behaviour is unchanged. Check *Discount % of Revenue* alongside this card.
2. **Product mix shift**. If lower-priced items moved to the top of your top-sellers (e.g. a sock pack went viral), AOV drops because more orders are for cheaper SKUs. Check *Top Products by Revenue*.
3. **New-customer surge**. First-time buyers typically spend less than returning customers. A successful ad campaign or PR moment that brought in lots of new shoppers will pull AOV down. Check *New vs Returning*.

**Action:** before "fixing" AOV, identify which of the three it is. Each calls for a different response (rein in discounts, refresh merchandising, or lean into the acquisition wave and worry about repeat-rate later).

**Does AOV include refunds?**
**No**, refunds are NOT deducted. A fully refunded £100 order still contributes £100 to AOV. If you want the post-refund view, divide *Net Revenue* by *Total Orders* (or wait for the planned *Net AOV* card on the backlog).

**Why is my AOV different from Google Analytics?**
GA4 misses 10-25% of orders due to ad blockers, cookie rejection, and tag-fire failures, so its order count runs lower, which makes its AOV calculation noisier. **Treat Shopify as the source of truth for AOV.** Use GA4 for traffic and channel attribution, not for revenue figures. Full reasoning is in the *Reconciling against Shopify dashboard* section above.

**How can I increase AOV?**
Five practical levers, ranked by typical lift:

1. **Free-shipping threshold**, set it £10-15 above your current AOV (e.g. AOV £45 → threshold £60). Easiest single change; usually adds 5-15% to AOV with a small (1-2%) hit to conversion rate.
2. **Bundles**, pair complementary items at a small discount (e.g. shirt + matching scarf at 10% off). Lifts AOV more than either item alone.
3. **Cart upsells**, "frequently bought together" or "complete the look" widgets in the cart. Apps like Bold, ReConvert, or native Shopify Functions.
4. **Tiered discount ladders**, "spend £100 save £15, spend £200 save £40". Pushes shoppers up to the next tier.
5. **Premium tier or larger sizes**, if you only sell single-units, add a "5-pack" or "subscribe & save" option. New higher price points pull AOV up.

Pick one. Test for 2-4 weeks. Measure AOV *and* conversion rate together, the right answer is whatever moves total revenue.

**Why does my AOV swing so much day-to-day?**
Small numbers are noisy. If you do \<50 orders a day, a single £500 wholesale order can move AOV by 10%+ on its own. **Look at the rolling 7-day or 30-day AOV, not the daily figure**, that's why we default the alert window to 30D vsP and not 1D.

**Does my POS or marketplace AOV affect this card?**
Yes, every Shopify channel contributes: Online Store, Shop POS, Buy Button, Facebook & Instagram Shop, TikTok Shop, Amazon-via-Shopify, and any other channel you've enabled in *Settings → Sales channels*. Each channel's typical order size is different. POS orders are often impulse purchases (lower AOV), wholesale/B2B orders skew much higher, so a heavy mix shift between channels can move the number on its own. To see channels separately, filter the *Average order value over time* report in Shopify Admin (top of the report → **Sales channel** dropdown).

**My subscription store, does AOV count each subscription order?**
Yes. Each Shopify Subscriptions order is a separate row. So a customer paying £20/month over 12 months shows up as **12 orders × £20 → AOV £20**, not one £240 order. If you want a customer-lifetime view, that's a separate metric (*Customer Lifetime Value*, on the roadmap).

**Should I optimise for AOV or conversion rate?**
Both, but they trade off. Raising the free-shipping threshold lifts AOV but slightly hurts conversion rate (some shoppers won't add a filler item just to qualify). The right balance is the one that pushes **total revenue** highest. Always track AOV and CR side-by-side when you change anything in the cart or checkout.

***

### Tracked live in Vortex IQ Nerve Centre

*Average Order Value* is one of hundreds of KPI pulses Vortex IQ tracks across Shopify 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](https://app.vortexiq.ai/login) or [book a demo](https://www.vortexiq.ai/contact-us) to see this metric running on your own data.
