Measures

Link to section

Overview

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/meta endpoint.
  • For most sales reporting, use the Sales view instead of the Orders cube. The Sales view pre-filters to closed orders and includes human-readable dimensions. The examples below use Orders.* 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.

Link to section

Understanding Measure Types

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.

Link to section

How to Discover Measure Types

There are two ways to find out what aggregation type a measure uses:

  1. Schema Explorer (recommended for browsing):

    • Visit the Schema Explorer
    • Search for the measure you're interested in
    • View its aggType property
  2. Metadata API (for programmatic discovery):

    • Call /reporting/v1/meta to get the full schema
    • Each measure includes an aggType field
    • See Metadata Discovery for details
Link to section

Common Measure Types

Measure TypeDescriptionExample Measures
sumAdds up all valuesOrders.net_sales, Orders.tips_amount, Orders.discounts_amount
countCounts number of recordsOrders.count, PaymentAndRefunds.count
avgCalculates average valueOrders.avg_net_sales, Orders.avg_total_sales
Link to section

Single measure

{ "measures": ["Orders.net_sales"] }

This returns the sum of all order net sales (because Orders.net_sales has aggType: "sum").

Link to section

Multiple measures

{ "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.

Link to section

Examples by measure type

Link to section

Sum Measures (Most Common)

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.

Link to section

Count Measures

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.

Link to section

Average Measures

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).

Link to section

Combining Different Measure Types

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.

Link to section

Common measure combinations

Link to section

Sales Summary Metrics

{ "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 ] }
Link to section

Payment Analysis

{ "measures": [ "Orders.net_sales", // SUM "Orders.count", // COUNT "Orders.avg_net_sales" // AVG ] }
Link to section

Metadata example

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" }
Link to section

Key takeaways

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