Referring channel performance

Attributed traffic performance — sessions, sales, orders and customers by referring channel and traffic type, under Shopify's last-non-direct-click attribution. Includes direct and organic, unlike the marketing-campaign dataset. Requires the read_reports scope; empty on stores that have not granted it.

13 fields — 6 dimensions, 7 metrics. Date clauses (SINCE, UNTIL, DURING) use day.

The live, authoritative list is always GET /v1/datasets — this page is regenerated from the same catalog, but the endpoint reflects exactly what is deployed.

Query it

FROM referring_channel_performance
  SHOW sessions
  GROUP BY referring_channel
  SINCE -30d

See Querying with SoloQL for the language.

This dataset is queryable through SoloQL; it has no record-retrieval endpoint.

Fields

FieldTypeRoleDescription
referring_channelstringdimensionWhere the visit came from — google, facebook, direct, an app's domain… ⚠️ Can be blank, and on some stores that untagged bucket carries most of the money.
traffic_typestringdimensionHow the visit was classified: organic, paid, direct, unknown or none. ⚠️ 'unknown' and 'none' are DIFFERENT upstream values, both real.
sessionsnumbermetricSessions on this channel. The one column Shopify does NOT attribution-suffix in the joined statement.
total_salesmoneymetricSales attributed to this channel under last-non-direct-click attribution.
ordersnumbermetricOrders attributed to this channel.
new_customersnumbermetricFirst-time customers attributed to this channel. Additive — a customer is new exactly once, and their first order attributes to exactly one channel.
returning_customersnumbermetricReturning customers attributed to this channel. ⚠️ A DISTINCT count, so it is FETCHED LIVE from Shopify for the selected window and never summed from stored days — someone who came back through two channels is one returning customer. The total is therefore smaller than the rows added up, and the column blanks (never guesses) when the live call cannot deliver.
conversion_ratepercentmetricAttributed orders divided by sessions — Shopify's own formula from the captured report. Blank where the channel drove no sessions.
average_order_valuemoneymetricAttributed sales divided by attributed orders. A ratio of sums, exact at any grouping.
daydatedimensionThe attribution day — Shopify's shop-timezone calendar label, stamped as UTC midnight. ⚠️ Recent days RESTATE as late conversions attribute.
storestringdimensionThe shop the record belongs to. Filter with WHERE store IN ('Shop name') or GROUP BY store.
store_idstringdimensionThe shop's raw identifier — what an export or the API reports. Same shops as Store, shown as ids.
store_domainstringdimensionThe shop's myshopify.com domain. Filter with WHERE store_domain = 'shop.myshopify.com'.