Performance reports

How fast your storefronts feel to real visitors — Core Web Vitals measured from actual sessions, store by store, so a slow theme shows up before it costs you sales.

9 built-in reports — every one opens in the report editor, runs across all connected stores in one currency, and can be saved, exported or scheduled. The query under each report is the whole report — readable, and yours to change.

Cumulative Layout Shift (CLS): Over Time

Daily 75th-percentile layout shift with the good / needs-improvement / poor split, as Shopify measures it.

FROM web_performance
  SHOW cls_p75, cls_good_rate, cls_measurements, cls_good, cls_needs_improvement, cls_poor
  WHERE grain = 'day'
  SINCE startOfDay(-30d) UNTIL yesterday
  TIMESERIES day WITH TOTALS
  ORDER BY timeseries ASC
  VISUALIZE cls_p75 TYPE line

Largest Contentful Paint (LCP): Over Time

Daily 75th-percentile largest contentful paint in milliseconds, with the good / needs-improvement / poor split.

FROM web_performance
  SHOW lcp_p75, lcp_good_rate, lcp_measurements, lcp_good, lcp_needs_improvement, lcp_poor
  WHERE grain = 'day'
  SINCE startOfDay(-30d) UNTIL yesterday
  TIMESERIES day WITH TOTALS
  ORDER BY timeseries ASC
  VISUALIZE lcp_p75 TYPE line

Interaction to Next Paint (INP): Over Time

Daily 75th-percentile interaction to next paint in milliseconds, with the good / needs-improvement / poor split.

FROM web_performance
  SHOW inp_p75, inp_good_rate, inp_measurements, inp_good, inp_needs_improvement, inp_poor
  WHERE grain = 'day'
  SINCE startOfDay(-30d) UNTIL yesterday
  TIMESERIES day WITH TOTALS
  ORDER BY timeseries ASC
  VISUALIZE inp_p75 TYPE line

Cumulative Layout Shift (CLS): Page Type

Layout shift by page type — share of page loads, traffic, and the good / needs-improvement / poor split.

FROM web_performance
  SHOW percent_of_page_loads, page_loads, cls_p75, cls_good_rate, cls_measurements, cls_good, cls_needs_improvement, cls_poor
  WHERE grain = 'day_page'
  SINCE startOfDay(-30d) UNTIL yesterday
  GROUP BY page_type WITH TOTALS
  ORDER BY percent_of_page_loads DESC
  LIMIT 1000
  VISUALIZE percent_of_page_loads TYPE horizontal_bar

Cumulative Layout Shift (CLS): Page URL

Layout shift by page URL — share of page loads, traffic, and the good / needs-improvement / poor split.

FROM web_performance
  SHOW percent_of_page_loads, page_loads, cls_p75, cls_good_rate, cls_measurements, cls_good, cls_needs_improvement, cls_poor
  WHERE grain = 'day_page'
  SINCE startOfDay(-30d) UNTIL yesterday
  GROUP BY page_path WITH TOTALS
  ORDER BY percent_of_page_loads DESC
  LIMIT 1000
  VISUALIZE percent_of_page_loads TYPE horizontal_bar

Largest Contentful Paint (LCP): Page Type

Largest contentful paint by page type — share of page loads, traffic, and the good / needs-improvement / poor split.

FROM web_performance
  SHOW percent_of_page_loads, page_loads, lcp_p75, lcp_good_rate, lcp_measurements, lcp_good, lcp_needs_improvement, lcp_poor
  WHERE grain = 'day_page'
  SINCE startOfDay(-30d) UNTIL yesterday
  GROUP BY page_type WITH TOTALS
  ORDER BY percent_of_page_loads DESC
  LIMIT 1000
  VISUALIZE percent_of_page_loads TYPE horizontal_bar

Largest Contentful Paint (LCP): Page URL

Largest contentful paint by page URL — share of page loads, traffic, and the good / needs-improvement / poor split.

FROM web_performance
  SHOW percent_of_page_loads, page_loads, lcp_p75, lcp_good_rate, lcp_measurements, lcp_good, lcp_needs_improvement, lcp_poor
  WHERE grain = 'day_page'
  SINCE startOfDay(-30d) UNTIL yesterday
  GROUP BY page_path WITH TOTALS
  ORDER BY percent_of_page_loads DESC
  LIMIT 1000
  VISUALIZE percent_of_page_loads TYPE horizontal_bar

Interaction to Next Paint (INP): Page Type

Interaction to next paint by page type — share of page loads, traffic, and the good / needs-improvement / poor split.

FROM web_performance
  SHOW percent_of_page_loads, page_loads, inp_p75, inp_good_rate, inp_measurements, inp_good, inp_needs_improvement, inp_poor
  WHERE grain = 'day_page'
  SINCE startOfDay(-30d) UNTIL yesterday
  GROUP BY page_type WITH TOTALS
  ORDER BY percent_of_page_loads DESC
  LIMIT 1000
  VISUALIZE percent_of_page_loads TYPE horizontal_bar

Interaction to Next Paint (INP): Page URL

Interaction to next paint by page URL — share of page loads, traffic, and the good / needs-improvement / poor split.

FROM web_performance
  SHOW percent_of_page_loads, page_loads, inp_p75, inp_good_rate, inp_measurements, inp_good, inp_needs_improvement, inp_poor
  WHERE grain = 'day_page'
  SINCE startOfDay(-30d) UNTIL yesterday
  GROUP BY page_path WITH TOTALS
  ORDER BY percent_of_page_loads DESC
  LIMIT 1000
  VISUALIZE percent_of_page_loads TYPE horizontal_bar

FAQ

Do these performance reports cover all my Shopify stores? Yes — every report on this page aggregates across all connected stores and converts to one currency. Group by store inside any of them for the per-store split.

Can I change what a report shows? Yes — every report opens in the report editor, where metrics, groupings, filters, date ranges and the chart are all editable, and your version saves to your own library.

Can I get these reports automatically? Yes — any report can be downloaded as CSV or Excel, or scheduled to arrive by email or FTP on the cadence you choose.