Skip to main content

web_performance

The web_performance schema captures online store page-load and Core Web Vitals reporting. It supports performance views by page, storefront, device, browser, and the page elements associated with measured web-vital events.


Counts and calculations that let you track key business indicators. Metrics show up as the columns when queried.

Metrics you can use when querying FROM web_performance.

Anchor to cls_distribution
cls_distribution
<>

A breakdown of page loads by Cumulative Layout Shift, which measures how much content moves unexpectedly while the page loads. The values show measured loads, then good (0.1 or lower), needs improvement (above 0.1 through 0.25), and poor (above 0.25). Use cls_distribution to see how layout stability is spread across visits.

Anchor to cls_good_view_count
cls_good_view_count

The number of page load events with a good Cumulative Layout Shift score. Good CLS means the score is 0.1 or lower. Use cls_good_view_count to track stable page loads over time or by page_type.

Anchor to cls_okay_view_count
cls_okay_view_count

The number of page load events with a Cumulative Layout Shift score that needs improvement. This covers CLS scores above 0.1 through 0.25. Use cls_okay_view_count to find pages where layout stability may need attention.

Anchor to cls_poor_view_count
cls_poor_view_count

The number of page load events with a poor Cumulative Layout Shift score. Poor CLS means the score is above 0.25. Use cls_poor_view_count to spot pages with noticeable unexpected movement.

Anchor to fcp_distribution
fcp_distribution
<>

A breakdown of page loads by First Contentful Paint, which measures how quickly the first visible content appears. The values show measured loads, then good (1.8 seconds or faster), needs improvement (above 1.8 through 3 seconds), and poor (slower than 3 seconds). Use fcp_distribution to see how early loading speed is spread across visits.

Anchor to fcp_good_view_count
fcp_good_view_count

The number of page load events with a good First Contentful Paint score. Good FCP means the first content appeared in 1.8 seconds or less. Use fcp_good_view_count to track fast initial loading over time or by page_type.

Anchor to fcp_okay_view_count
fcp_okay_view_count

The number of page load events with a First Contentful Paint score that needs improvement. This covers first content appearing after 1.8 seconds through 3 seconds. Use fcp_okay_view_count to find pages where initial loading could be faster.

Anchor to fcp_p50_ms
fcp_p50_ms

The median First Contentful Paint time, in milliseconds. Half of measured page loads had first content appear at or below this value. Use fcp_p50_ms to track typical initial loading speed.

Anchor to fcp_p75_ms
fcp_p75_ms

The 75th percentile First Contentful Paint time, in milliseconds. Most measured page loads had first content appear at or below this value. Use fcp_p75_ms to monitor the loading experience for a broad share of visitors.

Anchor to fcp_p90_ms
fcp_p90_ms

The 90th percentile First Contentful Paint time, in milliseconds. This shows the initial loading time that 90% of measured page loads met or beat. Use fcp_p90_ms to watch slower loading experiences.

Anchor to fcp_p99_ms
fcp_p99_ms

The 99th percentile First Contentful Paint time, in milliseconds. This shows the initial loading time that nearly all measured page loads met or beat. Use fcp_p99_ms to investigate the slowest experiences.

Anchor to fcp_poor_view_count
fcp_poor_view_count

The number of page load events in which the first visible content appeared after more than 1.8 seconds.

Anchor to inp_distribution
inp_distribution
<>

A breakdown of page loads by Interaction to Next Paint, which measures how quickly a page responds after visitor interactions. The values show measured loads, then good (200 milliseconds or faster), needs improvement (above 200 through 500 milliseconds), and poor (slower than 500 milliseconds). Use inp_distribution to see how responsiveness is spread across visits.

Anchor to inp_good_view_count
inp_good_view_count

The number of page load events with a good Interaction to Next Paint score. Good INP means the page responded in 200 milliseconds or less. Use inp_good_view_count to track responsive experiences over time or by page_type.

Anchor to inp_okay_view_count
inp_okay_view_count

The number of page load events with an Interaction to Next Paint score that needs improvement. This covers response times above 200 through 500 milliseconds. Use inp_okay_view_count to find pages where interactions may feel delayed.

Anchor to inp_p50_ms
inp_p50_ms

The median Interaction to Next Paint time, in milliseconds. Half of measured page loads responded to interactions at or below this value. Use inp_p50_ms to track typical page responsiveness.

Anchor to inp_p75_ms
inp_p75_ms

The 75th percentile Interaction to Next Paint time, in milliseconds. Most measured page loads responded to interactions at or below this value. Use inp_p75_ms to monitor responsiveness for a broad share of visitors.

Anchor to inp_p90_ms
inp_p90_ms

The 90th percentile Interaction to Next Paint time, in milliseconds. This shows the response time that 90% of measured page loads met or beat. Use inp_p90_ms to watch slower interaction experiences.

Anchor to inp_p99_ms
inp_p99_ms

The 99th percentile Interaction to Next Paint time, in milliseconds. This shows the response time that nearly all measured page loads met or beat. Use inp_p99_ms to investigate the slowest interaction experiences.

Anchor to inp_poor_view_count
inp_poor_view_count

The number of page load events with a poor Interaction to Next Paint score. Poor INP means the page responded after more than 500 milliseconds. Use inp_poor_view_count to spot pages where interactions may feel slow.

Anchor to lcp_distribution
lcp_distribution
<>

A breakdown of page loads by Largest Contentful Paint, which measures how quickly the largest visible content appears. The values show measured loads, then good (2.5 seconds or faster), needs improvement (above 2.5 through 4 seconds), and poor (slower than 4 seconds). Use lcp_distribution to see how main content loading speed is spread across visits.

Anchor to lcp_good_view_count
lcp_good_view_count

The number of page load events with a good Largest Contentful Paint score. Good LCP means the largest visible content appeared in 2.5 seconds or less. Use lcp_good_view_count to track fast main content loading over time or by page_type.

Anchor to lcp_okay_view_count
lcp_okay_view_count

The number of page load events with a Largest Contentful Paint score that needs improvement. This covers the largest visible content appearing after 2.5 seconds through 4 seconds. Use lcp_okay_view_count to find pages where main content could load faster.

Anchor to lcp_p50_ms
lcp_p50_ms

The median Largest Contentful Paint time, in milliseconds. Half of measured page loads had the largest visible content appear at or below this value. Use lcp_p50_ms to track typical main content loading speed.

Anchor to lcp_p75_ms
lcp_p75_ms

The 75th percentile Largest Contentful Paint time, in milliseconds. Most measured page loads had the largest visible content appear at or below this value. Use lcp_p75_ms to monitor main content loading for a broad share of visitors.

Anchor to lcp_p90_ms
lcp_p90_ms

The 90th percentile Largest Contentful Paint time, in milliseconds. This shows the main content loading time that 90% of measured page loads met or beat. Use lcp_p90_ms to watch slower loading experiences.

Anchor to lcp_p99_ms
lcp_p99_ms

The 99th percentile Largest Contentful Paint time, in milliseconds. This shows the main content loading time that nearly all measured page loads met or beat. Use lcp_p99_ms to investigate the slowest loading experiences.

Anchor to lcp_poor_view_count
lcp_poor_view_count

The number of page load events with a poor Largest Contentful Paint score. Poor LCP means the largest visible content appeared after more than 4 seconds. Use lcp_poor_view_count to spot pages with slow main content loading.

Anchor to p50_cls
p50_cls

The median Cumulative Layout Shift score, which measures unexpected movement while the page loads. Half of measured page loads had a CLS score at or below this value. Use p50_cls to track typical layout stability.

Anchor to p75_cls
p75_cls

The 75th percentile Cumulative Layout Shift score, which measures unexpected movement while the page loads. Most measured page loads had a CLS score at or below this value. Use p75_cls to monitor layout stability for a broad share of visitors.

Anchor to p90_cls
p90_cls

The 90th percentile Cumulative Layout Shift score, which measures unexpected movement while the page loads. This shows the CLS score that 90% of measured page loads met or beat. Use p90_cls to watch less stable page experiences.

Anchor to p99_cls
p99_cls

The 99th percentile Cumulative Layout Shift score, which measures unexpected movement while the page loads. This shows the CLS score that nearly all measured page loads met or beat. Use p99_cls to investigate the least stable experiences.

Anchor to page_loads
page_loads

Total number of page load events

Anchor to percent_of_page_loads
percent_of_page_loads

The share of page load events represented by each row in your query results, shown as a percentage. Use percent_of_page_loads with groupings like page_type, page_path, or device_type to see how page loads are split.

Anchor to ttfb_distribution
ttfb_distribution
<>

A breakdown of page loads by Time to First Byte, which measures how quickly the server starts responding. The values show measured loads, then good (800 milliseconds or faster), needs improvement (above 800 through 1,800 milliseconds), and poor (slower than 1,800 milliseconds). Use ttfb_distribution to see how server response time is spread across visits.

Anchor to ttfb_good_view_count
ttfb_good_view_count

The number of page load events with a good Time to First Byte score. Good TTFB means the server started responding in 800 milliseconds or less. Use ttfb_good_view_count to track fast server responses over time or by page_type.

Anchor to ttfb_okay_view_count
ttfb_okay_view_count

The number of page load events with a Time to First Byte score that needs improvement. This covers server response times above 800 through 1,800 milliseconds. Use ttfb_okay_view_count to find pages where server response time may need attention.

Anchor to ttfb_p50_ms
ttfb_p50_ms

The median Time to First Byte, in milliseconds. Half of measured page loads had the server start responding at or below this value. Use ttfb_p50_ms to track typical server response time.

Anchor to ttfb_p75_ms
ttfb_p75_ms

The 75th percentile Time to First Byte, in milliseconds. Most measured page loads had the server start responding at or below this value. Use ttfb_p75_ms to monitor server response time for a broad share of visitors.

Anchor to ttfb_p90_ms
ttfb_p90_ms

The 90th percentile Time to First Byte, in milliseconds. This shows the server response time that 90% of measured page loads met or beat. Use ttfb_p90_ms to watch slower server responses.

Anchor to ttfb_p99_ms
ttfb_p99_ms

The 99th percentile Time to First Byte, in milliseconds. This shows the server response time that nearly all measured page loads met or beat. Use ttfb_p99_ms to investigate the slowest server responses.

Anchor to ttfb_poor_view_count
ttfb_poor_view_count

The number of page load events with a poor Time to First Byte score. Poor TTFB means the server started responding after more than 1,800 milliseconds. Use ttfb_poor_view_count to spot pages with slow server response times.


Attributes of your data that let you look more granularly at aspects of the data. Group and filter by dimensions to shape the rows your query returns.

Dimensions you can use when querying FROM web_performance.

Anchor to browser_family
browser_family

Type of web browser used for the session

Anchor to cumulative_layout_shift_target
cumulative_layout_shift_target

Asset for which cumulative layout shift is measured

Day (timestamp) the data was recorded

Anchor to day_of_week
day_of_week

The day of week a page load happened, with values Monday through Sunday.

Anchor to device_type
device_type

Values are Mobile and Desktop.

Hour (timestamp) the data was recorded

Anchor to hour_of_day
hour_of_day

The hour of day a page load happened, with values 0 through 23.

Anchor to interaction_to_next_paint_target
interaction_to_next_paint_target

Asset for which interaction to next paint is measured

Anchor to largest_contentful_paint_target
largest_contentful_paint_target

Asset for which largest contentful paint is measured

Anchor to micro_session_id
micro_session_id

Shopify identifier for the online store session

Anchor to minute
minute

Minute (timestamp) the data was recorded

Anchor to month
month

Month (timestamp) the data was recorded

Anchor to month_of_year
month_of_year

The month of year a page load happened, with values 1 through 12.

Anchor to page_path
page_path

Values are URL paths that begin with /, without the domain.

Anchor to page_type
page_type

The kind of online store page that loaded. Values are page categories such as Product, Collection, Cart, and Search. You can group or filter by page_type to compare performance across parts of your store.

Anchor to quarter
quarter

Quarter (timestamp) the data was recorded

Anchor to second
second

Second (timestamp) the data was recorded

Anchor to shop_id
shop_id

The unique Shopify identifier for your store. Use shop_id with shop_name to show readable store labels.

Anchor to storefront_id
storefront_id

The identifier for the storefront that served the page load. The regular online store uses the value online_store. You can filter by storefront_id to focus on a specific Hydrogen storefront or online store traffic.

Week (timestamp) the data was recorded

Anchor to week_of_year
week_of_year

The week of year a page load happened, with values 1 through 53.

Year (timestamp) the data was recorded

Anchor to shop_name
shop_name

Name of your store


  • sessions: Session-level behavior to pair performance with shopper engagement.
  • searches: Search activity for shopper intent alongside page performance.
  • sales: Revenue data to tie performance regressions back to sales impact.

Was this page helpful?