What this means for your store
Level of Detail (LOD) expressions aggregate at a grain different from the viz. { FIXED [Customer ID] : AVG([Order Revenue]) } puts each shopper's average order value on every row - critical when the sheet lists SKU-level lines from Shopify. INCLUDE adds viz dimensions to the LOD grain; EXCLUDE drops them. Dragging plain AVG(Order Revenue) onto a product view averages line items, not orders, and merchandising teams will misread margin by collection.
Scenario on a real storefront
Brooklinen's analytics team blends order lines with GA4 session data. Paid media needs AOV by acquisition channel without treating a three-item cart as three separate orders:
// Customer AOV - same value on every line for that customer
{ FIXED [Customer ID] : AVG([Order Revenue]) }
// AOV within each campaign on the viz (INCLUDE adds Campaign to FIXED grain)
{ INCLUDE [Campaign] : AVG([Order Revenue]) }
// Orders per customer (denominator for repeat rate)
{ FIXED [Customer ID] : COUNTD([Order ID]) }
// Viz: Campaign on rows, AVG of customer AOV LOD (not AVG line revenue)
// Filter: Order Date in last 90 days
What to do next
- Reach for FIXED when the question is per customer or per order but the extract is at line-item grain.
- On Black Friday boards, LOD on large blended extracts slows interaction - materialise customer metrics in BigQuery when the sheet serves the whole trading desk.
- Add LOD fields to the data dictionary so media buyers do not rebuild the same calc under a different name before the weekly ROAS review.
Bottom line
FIXED and INCLUDE stop grain mismatches from lying about AOV and repeat behaviour. Use them whenever order lines, sessions, and campaigns sit on one sheet but need different aggregation levels.