Note
- The measure names and examples below reflect the current schema. For the most up-to-date list of available measures, use the Schema Explorer or the
/v1/metaendpoint. - For most sales reporting, use the
Salesview instead of theOrderscube. TheSalesview pre-filters to closed orders and includes human-readable dimensions. The examples below useOrders.*to teach measure concepts, but the same patterns apply to any view or cube.
Measures define what you want to calculate. They are numeric aggregations like sums, counts, or averages.
Warning
Measure aggregation types (sum, count, average) are pre-defined in the schema. When you build a query, you simply select measures by name—the API automatically applies the correct aggregation logic.
You cannot change a measure's aggregation type in your query. For example, Orders.net_sales is always a sum, and Orders.count is always a count.
There are two ways to find out what aggregation type a measure uses:
Schema Explorer (recommended for browsing):
- Visit the Schema Explorer
- Search for the measure you're interested in
- View its
aggTypeproperty
Metadata API (for programmatic discovery):
- Call
/reporting/v1/metato get the full schema - Each measure includes an
aggTypefield - See Metadata Discovery for details
- Call
| Measure Type | Description | Example Measures |
|---|---|---|
sum | Adds up all values | Orders.net_sales, Orders.tips_amount, Orders.discounts_amount |
count | Counts number of records | Orders.count, PaymentAndRefunds.count |
avg | Calculates average value | Orders.avg_net_sales, Orders.avg_total_sales |
{ "measures": ["Orders.net_sales"] }
This returns the sum of all order net sales (because Orders.net_sales has aggType: "sum").
{ "measures": [ "Orders.net_sales", "Orders.net_sales_with_tax", "Orders.tips_amount", "Orders.sales_tax_amount" ] }
All of these are sum measures, so you get the total for each.
Sum measures add up monetary amounts or quantities:
{ "measures": [ "Orders.net_sales", // Sum of all net sales "Orders.tips_amount", // Sum of all tips "Orders.discounts_amount" // Sum of all discounts ], "timeDimensions": [{ "dimension": "Orders.sale_timestamp", "dateRange": ["2024-01-01", "2024-01-31"] }], "segments": ["Orders.closed_checks"] }
Result: Total amounts for the entire period.
Count measures tell you how many records exist:
{ "measures": [ "Orders.count", // Number of orders "PaymentAndRefunds.count" // Number of payments ], "timeDimensions": [{ "dimension": "Orders.sale_timestamp", "dateRange": ["2024-01-01", "2024-01-31"], "granularity": "day" }], "segments": ["Orders.closed_checks"] }
Result: Daily count of orders and payments.
Average measures calculate mean values:
{ "measures": [ "Orders.avg_net_sales", // Average net sales per order "Orders.count" // For context ], "dimensions": ["Orders.location_id"], "timeDimensions": [{ "dimension": "Orders.sale_timestamp", "dateRange": "last 30 days" }], "segments": ["Orders.closed_checks"] }
Result: Average order size per location (with order count for context).
You can mix measure types in a single query:
{ "measures": [ "Orders.net_sales", // SUM: Total revenue "Orders.count", // COUNT: Number of orders "Orders.avg_net_sales" // AVG: Average net sales per order ], "dimensions": ["Orders.location_id"], "timeDimensions": [{ "dimension": "Orders.sale_timestamp", "dateRange": "this month" }], "segments": ["Orders.closed_checks"], "order": { "Orders.net_sales": "desc" } }
Result: Complete performance metrics by location.
{ "measures": [ "Orders.top_line_product_sales", // SUM "Orders.discounts_amount", // SUM "Orders.itemized_returns", // SUM "Orders.net_sales", // SUM "Orders.sales_tax_amount", // SUM "Orders.tips_amount" // SUM ] }
{ "measures": [ "Orders.net_sales", // SUM "Orders.count", // COUNT "Orders.avg_net_sales" // AVG ] }
When you query /reporting/v1/meta, each measure includes its aggregation type:
{ "name": "Orders.net_sales", "title": "Net Sales", "description": "Total sales after discounts and returns, excluding tax", "type": "number", "aggType": "sum", "format": "currency" }
{ "name": "Orders.count", "title": "Order Count", "description": "Number of orders", "type": "number", "aggType": "count" }
{ "name": "Orders.avg_net_sales", "title": "Average Net Sales", "description": "Average net sales per order", "type": "number", "aggType": "avg", "format": "currency" }
✅ Measure types are fixed — You select measures by name; the API applies the aggregation
✅ Use Schema Explorer — Browse all measures and their types interactively
✅ Use Metadata API — Programmatically discover measure types for validation
✅ Mix measure types — Combine sum, count, and average measures in one query
❌ Cannot override — You cannot change a measure's aggregation type in your query