Shopify Server-Timing

Shopify exposes information via Server-Timing response headers by default. Aside from choosing "Shopify" from the techstack CMS options, Shopify merchants using RUMvision don't need to do anything else.

Shopify's Server-Timing

RUMvision will then automatically start to track interesting information from the Server-Timing headers and make them available via either filters and group by dimensions or custom metrics.

Auto-collected fields

ValueType/collectedMeaning
processingMetricTotal time spent processing the request inside Shopify Storefront. This starts when the request reaches Shopify and ends when Shopify has finished handling the request.
Useful for spotting server-side delays that can increase TTFB.
dbMetricTime spent querying Shopify’s database during request processing.
This is a subset of processing and can help identify pages where backend data lookups contribute to slower responses.
renderMetricTime spent rendering the storefront response, likely including Liquid/theme rendering.
Useful for identifying pages where theme complexity, sections, snippets, metafields, apps, or personalization increase server-side render time.
edgeFilterCDN edge location that handled the request, using a three-letter airport-style code. For example AMS, FRA, LHR, or DFW.
Useful for spotting regional differences in TTFB, routing, cache behavior, or backend proximity.
speculationTagsFilter
transformed
Shows which speculation rule or prefetch mechanism was involved, for example shopify_storefront.
Useful when debugging the impact of prefetching or Speculation Rules.
prefetchMetric
transformed
Indicates that the page was prefetched. Useful for separating normal navigations from speculative or prefetched page loads.
RUMvision looks at this value when there is no speculationTags value
cfRequestDurationMetricTotal duration from when the request hits Cloudflare until Cloudflare has finished processing it.
Useful as a CDN-level view of request time, including time spent waiting on Shopify/origin.

Other available fields

Data that is not being collected out of the box, but that you could add as custom timing or dimensions:

ValueCollected by
RUMvision
Meaning
db_asyncnot collected
reach out
Time spent on asynchronous database work during request processing.
Shopify does not publicly document this field, so treat it as internal diagnostic data. It may overlap with or sit alongside other processing work.
edge_cartnot collected
reach out
Time spent on Shopify’s edge-side cart handling. The description sometimes includes the number of cart-related trips, for example trips=1.
Useful as a hint when cart state, buyer context, or personalization may affect server response time.
fetchnot collected
reach out
Time spent fetching additional data needed to build the response.
Shopify does not publicly document exactly what is included here, so treat it as an internal timing. It may include backend or service-to-service fetches performed while preparing the page.
parsenot collected
reach out
Older timing for parsing work during Shopify’s server-side page generation.
This field appears on some older or observed responses, but seems to be less common now and may no longer be emitted consistently.
asnnot collected
reach out
Autonomous System Number of the visitor’s network or ISP, for example the network behind the user’s connection.
Useful for network-level diagnostics, but usually less actionable for storefront performance optimization.
countrynot collected
alternative
Country code associated with the request.
RUMvision collects this via AWS pipelines.
themenot collected
alternative
ID of the Shopify theme used to render the page.
Useful when comparing performance across theme versions, preview themes, rollouts, or stores with multiple active templates.
RUMvision collects this from the window.Shopify.theme object.
pageTypenot collected
alternative
Shopify page type for the current request. For example index, collection, product, page, or cart.
Useful for grouping server timings by template type.
RUMvision collects this from the window.ShopifyAnalytics object.
servedBynot collected
reach out
Internal Shopify identifier for the system, host, or service instance that served the request.
This is not publicly documented, so it is mainly useful for Shopify-internal debugging or support escalation.
earlyhintsnot collected
reach out
Present when Early Hints were used for the request.
Early Hints can allow the browser to start fetching important resources before the final response is ready.
compressionLevelnot collected
reach out
Compression level used for the response, for example 5 or 7. Higher levels can reduce transfer size but may cost more CPU time.
Useful together with compressionTime and HTML size.
compressionTimenot collected
reach out
Time spent compressing the response before sending it to the browser.
High values can contribute to TTFB, especially for large HTML responses or higher compression levels.
requestIDnot collected
reach out
Unique request identifier generated for the Shopify request.
Useful for debugging or support escalation, but usually not needed in aggregated RUM analysis.
ipv6not collected
reach out
Present when the request used IPv6.
Useful for low-level network diagnostics, but usually not needed for day-to-day performance analysis.

Important

RUMvision auto-transforms

In a few specific cases, the RUMvision tracking script will automatically transform values or collapse keys:

  • For speculationTags and prefetch, RUMvision will first look at any value for speculationTags. If there is no value there, RUMvision will try and collect the value for prefetch, which is then stored in the same dashboard filter.

Shopify notes

Aside from Cloudflare's official documentation, there is no official documentation for Shopify's own information that they expose via Server-Timing. This also means that naming conventions that they picked, could suddenly change. We as a RUM provider will attempt to stay up to date, but won't benefit from official Shopify release notes or publications around this topic.