Web performance

Core Web Vitals — Cumulative Layout Shift, Interaction to Next Paint and Largest Contentful Paint by day, page type, page URL and device, as Shopify measures them. Requires the read_reports scope; empty on stores that have not granted it.

27 fields — 5 dimensions, 22 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 web_performance
  SHOW page_loads
  GROUP BY grain
  SINCE -30d

See Querying with SoloQL for the language.

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

Fields

FieldTypeRoleDescription
grainstringdimensionWhich aggregation Shopify computed the row at. day carries the exact per-day percentiles; day_page carries the per-page counts. Filter on this in every query — mixing the two double-counts.
page_typestringdimensionType of the page of an online store session, such as collection.
page_pathstringdimensionPath of the page of an online store session.
device_typestringdimensionType of device used for the session.
page_loadsnumbermetricNumber of page loads. This is REAL traffic — unlike the vitals' measurement counts, which Shopify samples.
percent_of_page_loadspercentmetricShare of all page loads in the result that fall into this group.
cls_p75numbermetric75th-percentile Cumulative Layout Shift, pre-computed by Shopify. Unitless. ⚠️ A percentile is not additive — this is exact only at the grain Shopify computed it at.
cls_measurementsnumbermetricPage loads measured for CLS. ⚠️ SAMPLED — not traffic. Use page_loads for traffic.
cls_goodnumbermetricMeasurements with a good Cumulative Layout Shift.
cls_needs_improvementnumbermetricMeasurements needing improvement. Only available inside Shopify's distribution array.
cls_poornumbermetricMeasurements with a poor Cumulative Layout Shift.
cls_good_ratepercentmetricShare of measured page loads with a good Cumulative Layout Shift.
lcp_p75numbermetric75th-percentile Largest Contentful Paint in milliseconds, pre-computed by Shopify. ⚠️ Not additive.
lcp_p90numbermetric90th-percentile Largest Contentful Paint in milliseconds. ⚠️ Not additive.
lcp_measurementsnumbermetricPage loads measured for LCP. ⚠️ SAMPLED — not traffic.
lcp_goodnumbermetricMeasurements with a good Largest Contentful Paint.
lcp_needs_improvementnumbermetricMeasurements needing improvement. Only available inside Shopify's distribution array.
lcp_poornumbermetricMeasurements with a poor Largest Contentful Paint.
lcp_good_ratepercentmetricShare of measured page loads with a good Largest Contentful Paint.
inp_p75numbermetric75th-percentile Interaction to Next Paint in milliseconds, pre-computed by Shopify. ⚠️ Not additive.
inp_p90numbermetric90th-percentile Interaction to Next Paint in milliseconds. ⚠️ Not additive.
inp_measurementsnumbermetricPage loads measured for INP. ⚠️ SAMPLED — not traffic.
inp_goodnumbermetricMeasurements with a good Interaction to Next Paint.
inp_needs_improvementnumbermetricMeasurements needing improvement. Only available inside Shopify's distribution array.
inp_poornumbermetricMeasurements with a poor Interaction to Next Paint.
inp_good_ratepercentmetricShare of measured page loads with a good Interaction to Next Paint.
storestringdimensionThe shop the record belongs to. Filter with WHERE store IN ('Shop name') or GROUP BY store.