← Back to KPIs

Average Order Value

RevenueRetail, E-commerce

Average Order Value measures the average revenue generated per completed order or purchase transaction. It matters because it helps teams understand monetization efficiency, evaluate merchandising and pricing strategies, and identify opportunities to increase revenue without necessarily increasing traffic.

Business Use Case

An e-commerce merchandising team monitors Average Order Value by device and campaign. If paid social traffic has strong conversion volume but low AOV, the team can test product bundles, cart upsells, free-shipping thresholds, or landing pages featuring higher-margin products to increase revenue per order.

Business Criticality

High

Journey / Navigation Area

Digital Analytics

Scope

Global

Formula

Total Revenue / Total Orders

Calculation Notes

1️⃣ Use completed purchase transactions and deduplicate by unique transaction_id. 2️⃣ Exclude cancelled, refunded, test, fraudulent, or zero-value orders unless included by the business. 3️⃣ Define revenue as gross or net of discounts, tax, shipping, and refunds consistently. 4️⃣ Convert all orders to a reporting currency for multi-currency businesses before aggregation.

Technical Details

Measure TypeAverage
Aggregation WindowEvent, Session, Hourly, Weekly, Quarterly, Daily, Monthly, Yearly, User

Events

PlatformEvent
Google Analytics 4purchase
Adobepurchase

Data Mappings

W3 Data Layer
{
  "event": "purchase",
  "ecommerce": {
    "transaction_id": "T12345",
    "currency": "USD",
    "value": 149.97,
    "items": [
      {
        "item_id": "SKU-001",
        "item_name": "Running Shoes",
        "price": 99.99,
        "quantity": 1
      },
      {
        "item_id": "SKU-002",
        "item_name": "Socks",
        "price": 24.99,
        "quantity": 2
      }
    ]
  },
  "kpi": {
    "average_order_value": 149.97
  }
}
GA4 Data Layer
{
  "event": "purchase",
  "ecommerce": {
    "transaction_id": "T12345",
    "affiliation": "Online Store",
    "value": 149.97,
    "tax": 12.5,
    "shipping": 5.99,
    "currency": "USD",
    "coupon": "SPRING10",
    "items": [
      {
        "item_id": "SKU-001",
        "item_name": "Running Shoes",
        "item_category": "Footwear",
        "price": 99.99,
        "quantity": 1
      },
      {
        "item_id": "SKU-002",
        "item_name": "Socks",
        "item_category": "Accessories",
        "price": 24.99,
        "quantity": 2
      }
    ]
  }
}
Adobe Client Data Layer
{
  "event": "purchase",
  "commerce": {
    "order": {
      "purchaseID": "T12345",
      "currencyCode": "USD",
      "priceTotal": 149.97
    },
    "productListItems": [
      {
        "SKU": "SKU-001",
        "name": "Running Shoes",
        "priceTotal": 99.99,
        "quantity": 1
      },
      {
        "SKU": "SKU-002",
        "name": "Socks",
        "priceTotal": 49.98,
        "quantity": 2
      }
    ]
  },
  "_experience": {
    "analytics": {
      "customDimensions": {
        "eVars": {
          "eVar10": "average-order-value"
        },
        "events": {
          "event1": 149.97
        }
      }
    }
  }
}
XDM Mapping
{
  "eventType": "commerce.purchases",
  "commerce.order.purchaseID": "transaction_id",
  "commerce.order.priceTotal": "ecommerce.value",
  "commerce.order.currencyCode": "ecommerce.currency",
  "productListItems[].SKU": "ecommerce.items[].item_id",
  "productListItems[].name": "ecommerce.items[].item_name",
  "productListItems[].priceTotal": "ecommerce.items[].price",
  "productListItems[].quantity": "ecommerce.items[].quantity"
}

SQL Queries

Google Analytics 4 (BigQuery)
WITH orders AS (SELECT event_date, ecommerce.transaction_id AS transaction_id, ANY_VALUE((SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'purchase_revenue')) AS order_revenue FROM `project.dataset.events_*` WHERE event_name = 'purchase' AND ecommerce.transaction_id IS NOT NULL GROUP BY event_date, transaction_id) SELECT SAFE_DIVIDE(SUM(order_revenue), COUNT(DISTINCT transaction_id)) AS average_order_value FROM orders;
Adobe Experience Platform (AEP Query Service)
WITH orders AS (SELECT xdm.eventType, xdm.commerce.order.purchaseID AS transaction_id, ANY_VALUE(xdm.commerce.purchases.value) AS order_revenue FROM dataset WHERE xdm.eventType = 'commerce.purchases' AND xdm.commerce.order.purchaseID IS NOT NULL GROUP BY xdm.eventType, transaction_id) SELECT SUM(order_revenue) / COUNT(DISTINCT transaction_id) AS average_order_value FROM orders;

Source Data

Digital Analytics, Business Intelligence, ERP, Order Management SystemDigital Analytics, Business Intelligence, ERP, Order Management System

Dependencies

Prerequisite: List the dependencies required for this KPI

Events:

purchase

Metrics:

tracnsaction _idorder_valuecurrency

Report Attributes

Dimensions: Date, Device Category, Channel, Source/Medium, Campaign, Product Category, Country, New vs Returning Customer Metrics: Revenue, Orders, Average Order Value, Items Purchased, Conversion Rate

Recommended Reporting Views

Views
Executive Revenue DashboardE-commerce Performance DashboardMerchandising DashboardChannel Performance Dashboard

Segment Eligibility

True

Governance

Data SensitivityInternal

Governance

Created byswapnamagantius
Created on5/20/2026
Last modified bydevyendarm
Last modified on5/30/2026
StatusPUBLISHED

GitHub

View related Pull Requestcatalog/kpis/average-order-value.yml

Community Discussion