
Your store scores 95 in Lighthouse. Search Console still says the product template fails Core Web Vitals. Both readings are correct, and Shopify speed optimization work usually goes into the one that doesn’t count.
Google’s assessment is built from real customer sessions at the 75th percentile over a trailing window. Lighthouse is one simulated load, on one machine, on a connection somebody picked. Optimize the simulation and the assessment sits there, unmoved, for another quarter.
Shopify Speed Optimization Fails When You Optimize The Lab Number
Lab data is determined by loading a web page in a controlled environment (opens in new tab) with a predefined set of network and device conditions, while field data reflects the actual devices, network conditions, and geographic locations of your users. So your lab data might indicate that your site performs great while your field data suggests it needs improvement.
Google’s instruction is that field data is what you should use to prioritize your efforts.
Lab runs a cold cache while real customers arrive with warm ones. Lab only measures layout shifts above the fold during load, so a lazy-loaded image or an app banner that shifts the page when a customer scrolls never registers. And lab can’t predict interaction timing at all, because no simulated load taps your variant picker.
Is a Lighthouse score the same as Core Web Vitals? No. Run PageSpeed Insights (opens in new tab) and you get two reports stacked on one screen.
The top half is field data covering the previous 28-day collection period. The bottom half is based on a simulated load of a page on a single device and fixed set of network conditions. Merchants screenshot the bottom half.
What Are Core Web Vitals, And What Google Measures In 2026
Core Web Vitals (opens in new tab) are three metrics that measure real-world user experience for loading performance, interactivity, and visual stability of the page. Nothing in the set or the thresholds (opens in new tab) has been added, removed, or re-thresholded (opens in new tab) since INP replaced First Input Delay in 2024.
| Metric | What it measures | Good | Where it usually breaks on Shopify |
|---|---|---|---|
| Largest Contentful Paint (LCP) | Loading | Within 2.5 seconds | Lazy-loaded hero or first product image, slow Liquid render |
| Interaction to Next Paint (INP) | Responsiveness | 200 milliseconds or less | Variant pickers, cart drawers, collection filters, app JavaScript |
| Cumulative Layout Shift (CLS) | Visual stability | 0.1 or less | Images without dimensions, font swap, app-injected banners |
For INP (opens in new tab), at or below 200 milliseconds is good, above 200 and at or below 500 needs improvement, and above 500 is poor. For LCP (opens in new tab), 2.5 seconds or less is good, greater than 4.0 seconds is poor, and anything in between needs improvement. For CLS (opens in new tab), 0.1 or less is good, greater than 0.25 is poor, and anything in between needs improvement.
Several numbers people call Core Web Vitals aren’t. FID was retired when INP became stable in 2024. Time to First Byte, First Contentful Paint, Total Blocking Time, and the Lighthouse performance score are diagnostics, useful for finding causes and not part of the assessment. Total Blocking Time specifically is the lab stand-in for INP, which is what Lighthouse reports when nobody is clicking.
INP also has a narrow definition of interaction. Only clicking with a mouse, tapping on a device with a touchscreen, and pressing a key on either a physical or onscreen keyboard are observed. Scroll jank and hover lag feel slow to a customer and don’t enter the score.
One thing in the pipeline is worth keeping off your roadmap for now. Chrome ran a final origin trial for Soft Navigations (opens in new tab) and a new Interaction to Contentful Paint entry that brings LCP-style measurement to single-page apps, through Chrome 149, and has enabled the API by default from Chrome 151. Google said on April 20, 2026 that the trial is to evaluate the new API and not how this data will be used in CrUX or tooling.
It isn’t a Core Web Vital. It matters mainly to headless builds, which is a separate decision covered in our breakdown of Hydrogen in 2026.
Your Assessment Is The Slowest Quarter Of Your Sessions
Google grades at the 75th percentile of page loads (opens in new tab), segmented across mobile and desktop devices. A site or URL group is classified good when at least 75% of page views meet the good threshold (opens in new tab), and poor when at least 25% meet the poor threshold. The recommended thresholds themselves aren’t segregated by device, and the same threshold is used for both. Google’s stated reasoning is that most visits to the site (3 of 4) experience the target level of performance or better, while the number stays resistant to outliers.
How fast does a Shopify store have to load? Fast enough for the slowest quarter of your sessions, which is a different question than the one your laptop answers. For most DTC stores that slowest quarter is a mid-range Android phone on a mediocre connection rather than a MacBook on office fiber, and no amount of testing on the second device tells you anything about the first. Check your own device mix rather than assuming ours.
The Shopify Speed Score Out Of 100 No Longer Exists
The weighted Lighthouse score merchants were told to check in their admin was retired. Shopify announced on January 31, 2024 that new metrics replace the old Speed Score (opens in new tab), which used a single Lighthouse score to assess site performance.
What replaced it reports LCP, INP, and CLS from real user metrics (opens in new tab) collected across all Chromium browsers (Chrome, Opera, Edge, Samsung Internet) and Firefox. The data in the report might be delayed by up to 36 hours (opens in new tab), and web performance data is available for only the last 90 days.
Your Shopify dashboard and PageSpeed Insights will disagree, and both can be right. Shopify collects from a broader browser set and reports on UTC, while CrUX draws from opted-in Chrome users only. A low-traffic store simply won’t have the real-user traffic necessary to generate Core Web Vitals.
So the first correction in any Shopify speed optimization project is where you’re looking. There’s no score out of 100 in the admin to chase anymore. There are three metrics, per template, from customers.
Lighthouse Never Clicks Anything, So Certified Apps Still Wreck Shopify Site Speed
Shopify’s requirement for App Store apps is that an app shouldn’t reduce Lighthouse performance scores by more than 10 points (opens in new tab). Shopify tests the app’s effect on store performance (opens in new tab) by measuring the Lighthouse score before and after the app is installed, weighting home at 17%, product details at 40%, and collection at 43%.
Themes clear a lab gate too. A Theme Store theme needs a minimum average Lighthouse performance score of 60 (opens in new tab) across its product, collection, and home page, for both desktop and mobile, alongside an accessibility minimum of 90.
Both gates are Lighthouse. Lighthouse never performs an interaction, so it can’t measure INP and reports Total Blocking Time instead. The merchant-facing dashboard, meanwhile, moved to field data.
Certification is per app with no aggregate ceiling, each app can add third-party JavaScript that competes for the main thread (opens in new tab), and ten apps costing nine points each all pass individually. Your store can have a fully certified app stack and a failing INP, and that isn’t a mistake you made. It’s a property of how the gates are built.
Which is why “uninstall your apps” is a bad instruction. The useful instruction is to find the one interaction, on the one template, that your customers are actually waiting on.
Start Shopify Speed Optimization On Templates, Not The Homepage
Shopify’s own testing weights are the first reason: 40% product plus 43% collection means 83% of the weight sits somewhere other than the homepage. The second is that Google’s Core Web Vitals report (opens in new tab) groups URLs into pages that have a similar user experience, and the LCP, INP, and CLS status applies to the entire group, on the reasoning that grouped pages share a framework and share causes.
The third reason is that most of your product URLs have no individual data to look at. CrUX requires a page to be publicly discoverable and sufficiently popular (opens in new tab), and pages and origins that don’t meet the popularity threshold aren’t included in the CrUX dataset. Google doesn’t disclose an exact number for that threshold.
For a catalog of any size, that means the long tail is largely invisible one URL at a time, while Search Console’s grouping and Shopify’s page-type reporting both let you see it in aggregate. Fix the product template and you’ve fixed thousands of URLs, including every one CrUX will never report on. That’s the same unit of work as any serious product page testing program, and it’s why template-level thinking pays twice.
Page Speed Optimization For LCP: Where The Seconds Actually Go
LCP splits into four subparts (opens in new tab), and Google gives each a budget target. Google’s summary is that the vast majority of the LCP time should be spent loading the HTML document and LCP source, which tells you immediately when something else has crept in.
| LCP subpart | Share of LCP | What it is on a Shopify store |
|---|---|---|
| Time to First Byte | ~40% | Liquid render time on the server |
| Resource load delay | Under 10% | The preload scanner not finding your hero image |
| Resource load duration | ~40% | Image weight and delivery, mostly handled by Shopify |
| Element render delay | Under 10% | Render-blocking third-party CSS and JavaScript |
Real page speed optimization work starts by finding which of those four is eating the budget, because the fixes have nothing in common. A TTFB problem is Liquid. A load delay problem is markup. A render delay problem is somebody else’s script.
The One Second You Lose By Lazy Loading The LCP Image
Shopify calls lazy-loading the LCP image (opens in new tab) one of the most common and damaging performance anti-patterns in Shopify themes. On January 11, 2024, Shopify also put a number on it (opens in new tab): “Shopify sites that lazy load their LCP image have a median LCP that is 1.0 second slower than the eager loaded ones.”
That’s first-party, measured across Shopify’s own platform-wide data, and it’s a median comparison between two populations rather than a controlled test. The mechanism behind it is known, which is what makes it actionable rather than merely suggestive.
Two things cause it. The loading="lazy" attribute deprioritizes the image and defers the download until the browser processes an IntersectionObserver event. JavaScript lazy-loading libraries do worse, swapping src for data-src and completely hiding the URL from the browser’s preload scanner until JavaScript executes.
The fix is a handful of Liquid attributes. Pipe the image through image_url and then image_tag with loading: 'eager', adding fetchpriority: 'high' for the single most important image on the template. Shopify’s guidance is to use section.index so the first few sections load eagerly by default, forloop.index inside image-dense sections, and explicit sizes attributes so the browser isn’t waiting on JavaScript to work out how big the image will be.
Liquid Render Time Is The Shopify Site Speed Lever On The Server
Shopify renders Liquid templates server-side on every page request. The time Shopify spends executing your Liquid code directly determines Time to First Byte (TTFB) (opens in new tab).
The causes Shopify names are worth checking line by line: loops that grow in cost as catalog size increases, especially nested loops and metafield access inside loops; unnecessary database queries caused by iterating variants or products beyond what’s displayed; and expensive operations that repeat work on every iteration.
Shopify’s instruction is to eliminate O(n²) patterns, including nested loops and metafield access inside loops, that make rendering time grow quadratically with catalog size. A theme that’s fast on 10 products can be slow on 100. Shopify’s own worked example is a merchant who put hundreds of metadata checks on the product page.
Client-side rendering is the same problem moved to the browser: nothing renders until the framework finishes executing and inserting content. Shopify’s guidance is that every piece of content visible in the initial viewport should render without JavaScript (opens in new tab). Its recommended pattern is Liquid for the initial render, progressive enhancement for behavior, and the Section Rendering API for updates after load.
INP Is Where Ecommerce Site Speed Breaks On Shopify
INP (opens in new tab) observes the latency of all interactions a user has made with the page, and reports a single value which all (or nearly all) interactions were beneath. FID, the metric it replaced, measured only the delay before the first interaction’s handler started running, ignoring how long that handler took and every interaction after it.
That’s why stores failed overnight in 2024 without changing anything. A theme with a heavy add-to-cart handler passed FID trivially. Under INP, the handler itself is on the clock.
Every slow interaction decomposes into three parts (opens in new tab): input delay, which starts when the user initiates an interaction with the page, and ends when the event callbacks for the interaction begin to run; processing duration, the time it takes for event callbacks to run to completion; and presentation delay, the time it takes for the browser to present the next frame which contains the visual result of the interaction.
Long input delay usually isn’t your theme’s fault. It’s whatever else is executing when the customer taps, including script evaluation still finishing from page load.
The unit of blame is the long task. Any task that takes longer than 50 milliseconds is a long task (opens in new tab), and the browser blocks interactions from occurring while a task of any length is running. Five 60ms third-party tasks stacked between a tap and a paint is roughly a third of a second the customer spends wondering whether the button worked.
The remedies are all about giving the main thread back. Break work in event callbacks into separate tasks, yield explicitly with scheduler.yield(), limit what runs before the next frame to the logic that produces the visual update, avoid synchronous layout queries right after style changes, keep the DOM small, and use CSS content-visibility for off-screen sections.
The list of interactions to test is short and always the same: variant picker, add to cart, cart drawer, quantity stepper, collection filter, mobile menu, and search. Those seven cover the common INP failure points on a Shopify storefront, and they’re the same interactions that decide whether a session reaches the payment step, which is the other half of the checkout abandonment problem.
Attributing A Shopify Site Speed Problem To The Script That Caused It
Field attribution turns INP from a complaint into a work ticket. The attribution build of the web-vitals library (opens in new tab) exposes an interactionTarget field, a CSS selector pointing to the element that produced the page’s INP value, for example button#save, along with the input delay, processing duration and presentation delay breakdown.
It also exposes Long Animation Frame entries, and inside those a scripts array that gives you information about the script that was responsible for the slow interaction, and how it was responsible. The properties include invoker, invokerType, sourceURL, and sourceFunctionName, available from version 4 of the library onward.
sourceURL is the whole reason to do this. On a Shopify store, the file it names is almost always an app, and that converts “our INP is 480 milliseconds” into a sentence with a vendor’s name in it.
CLS Comes From Images, Fonts, And App-Injected Content
Images are the cheapest fix on the list. Shopify’s guidance on preventing image layout shift (opens in new tab) is to always include width and height attributes on image tags, combined with CSS setting max-width: 100% and height: auto, so the browser can reserve the right space before the file arrives. The image_tag filter does it for you, generating src, srcset, sizes and alt, and deriving width and height from the original image’s aspect ratio. Shopify already picks the format, detecting which image formats are supported by the client (WebP, AVIF and others) through image_url (opens in new tab).
Fonts are the second source: web fonts are a render-blocking resource by default and cause visible layout shift when they swap in. Shopify’s recommendation is to use size-adjust and override descriptors on fallback fonts to match web font metrics. Google’s recommendations for CLS (opens in new tab) add font-display: optional, properly specified fallbacks, and preloading the fonts that matter.
There’s a Shopify-specific audit item here that takes two minutes. Fonts pulled through font_url (opens in new tab) come off Shopify’s own CDN in woff2. A theme or app loading Google Fonts from fonts.googleapis.com puts a third-party connection on the critical path for no benefit, and it’s a common leftover from a past customization.
The third source is anything an app renders after the page has settled: cookie banners, review stars, upsell strips, urgency widgets. These are also the shifts lab tools miss entirely, since Lighthouse only sees the shifts that happen above the fold during load.
The 250ms Third-Party Script Budget For Store Speed
There’s a published number for how much third-party JavaScript is too much. Lighthouse calculates how long each of the third-party scripts blocks the main thread (opens in new tab), and if the total blocking time is greater than 250 ms the audit fails.
Blocking time counts only the part of each task past 50 milliseconds. A 50ms task contributes nothing. To fail you need about 250ms of excess, which is five 100ms scripts, or a single 300ms vendor script on its own.
Shopify gives one example of what a single app can do: an app injection blocked rendering on product pages and degraded LCP from 2.1 seconds to 3.4 seconds until the script was deferred. That’s one example rather than a statistic, and it’s enough to move a store from passing to failing on its own.
Any published number for what a specific chat, review, or personalization app costs in milliseconds, like “review widgets cost 300ms,” is somebody’s guess. Google publishes the method instead, and the third-party summary in your own Lighthouse run is a list of your own vendors with your own numbers next to them.
Google’s guidance is that Google Tag Manager helps deploy tags asynchronously so they don’t block each other from loading (opens in new tab). The container itself isn’t your cost. What merchants push through it is. Shopify’s instruction to merchants is simply to audit your tag manager to remove any unused or low-value tags (opens in new tab).
The single cheapest intervention available sits in your theme editor. App embed blocks are rendered and injected by Shopify before the closing head and body tags, and they allow an app to load scripts only on specific pages (opens in new tab), which isn’t possible with the ScriptTag object. Merchants toggle app embeds on and off in the theme editor without uninstalling anything, which makes it a reversible experiment you can run before lunch.
Self-hosting a vendor’s script is the tempting next step and it needs a caveat. It buys more control over how a critical script loads, for example to reduce DNS time or improve HTTP caching headers, while self-hosted scripts won’t get automatic updates for API changes or security fixes. On Shopify it also collides with the script tag migrations below, so keep it narrow.
How To Spot A Fake Shopify Speed Optimization App In Two Minutes
Some services move performance numbers without improving performance. Shopify names three techniques that fake performance apps (opens in new tab) use.
The first is LCP hijacking, injecting an element that paints almost immediately and covers the viewport, typically a transparent 1-pixel image scaled to full size, so the browser reports that element as the Largest Contentful Paint. The second is testing tool detection, where scripts serve two different pages, a stripped-down one to testing tools and the original one to real users, fingerprinting the client by looking for “Chrome-Lighthouse” in the user agent, a Linux platform, or missing touch support.
The third is resource manipulation, patching the browser APIs the theme depends on and releasing the work later by intercepting IntersectionObserver, overriding lazy loading, or queuing third-party tags that only drain on the first scroll, mouse move, or touch.
A change that only moves a number leaves the filmstrip and the interaction timings looking the same as before.
Should you install a speed app? Test first, and the test is free. Run PageSpeed Insights on a URL, then run Lighthouse on the same URL from Chrome DevTools.
Shopify’s threshold is a difference of 20 or more points between the two scores, at which point you’re likely affected. The reason it works is that PSI runs from Google’s infrastructure with a recognizable fingerprint while DevTools runs from your own browser, so a cloaking script fools one and not the other.
If you find something, Shopify’s remediation advice is to test in a duplicate theme first before removing code, and to search theme files for obfuscated JavaScript and telltale strings like Linux x86_64 or references to Lighthouse. Shopify describes the category of behavior rather than naming any particular product.
The honest line between legitimate and illegitimate deferral is whether the deferred work is needed for the page to function. Deferring a chat widget until interaction, loading a review widget when it scrolls into view, running analytics asynchronously: all fine. Deferring your own variant selector until the customer touches something moves the metric and makes the page worse. Over-correcting in the other direction costs you too: Shopify lists overuse of preloads and fetchpriority="high" among the causes of poor FCP, because preloading everything just re-sorts the queue.
Posters on Shopify’s developer forum have reported that some optimization apps change the execution order of app block JavaScript (opens in new tab) and stop it running normally. That’s a user report on a community forum, not Shopify’s position, and it’s a thing to check rather than a thing to conclude.
Two Script Tag Deadlines That Change What Loads On Your Storefront
Script tags are being retired in two separate tracks. On the order status page, apps lost the ability to create script tags (opens in new tab) scoped to order_status or all on February 1, 2025, those tags stopped running for Plus stores on August 28, 2025, and they stopped running on the order status page for all other stores on August 26, 2026. That date has passed, which is why any post-purchase tracking still leaning on it is already dark. We covered the consequences of that specific deadline in what broke on August 26.
The online store track still has a deadline ahead of you. Shopify announced on August 24, 2026 (opens in new tab) that scriptTagCreate and scriptTagUpdate return a user error from October 1, 2026, while existing script tags keep running, and that it will stop injecting script tags into storefronts on March 1, 2027. The migration path Shopify names is app embed blocks shipped in a theme app extension, or a web pixel for analytics and conversion tracking.
That’s a speed story as much as a compliance one. Script tags get injected into every storefront page with no merchant control over placement or conditionality, while app embed blocks can be scoped to the pages that need them. Apps that migrate properly hand you a performance improvement you didn’t have to ask for. Apps that don’t hand you a broken feature on March 1, 2027, so inventory which of your installed apps still ship a script tag while there’s time to replace them.
The Ceiling: What Shopify Controls And You Cannot Change
Shopify has already done a long list of page speed work for you. The platform provides (opens in new tab) a Cloudflare-backed CDN, files minified and compressed automatically using Brotli and gzip, requests over HTTP/3 and TLS 1.3, image caching on thousands of servers around the world, automatic cache-busting version numbers on asset_url, automatic minification of CSS and of JavaScript with valid ES5 syntax, automatic injection of speculation rules in supporting browsers, and the es-module-shims polyfill. Enabling compression and adding a CDN aren’t tasks on your list.
There’s also a hard wall in the head of every page. The content_for_header object dynamically returns all scripts required by Shopify (opens in new tab) and must sit inside the document head, and Shopify explicitly tells developers not to modify or parse it because the contents change. Whatever Shopify injects there isn’t yours to reorder, defer, or strip, and any product claiming to optimize it is either parsing something Shopify warns against parsing or claiming something it doesn’t do.
Certain factors are beyond your control (opens in new tab), such as a customer’s device, network, and location. A store selling to rural customers on older Android phones will show a worse 75th percentile than an identical store selling to urban iPhone owners, with identical code.
Shopify publishes no statement that checkout performance is excluded from your storefront’s Core Web Vitals assessment, so don’t build a plan around the assumption that it is.
Does Shopify Speed Optimization Move Rankings?
Google says both of these things about page experience and ranking (opens in new tab): “Core Web Vitals are used by our ranking systems,” and “There is no single signal. Our core ranking systems look at a variety of signals that align with overall page experience.” No weight has ever been published, so anyone quoting you a percentage is making it up.
Google goes on: “Google Search always seeks to show the most relevant content, even if the page experience is sub-par. But for many queries, there is lots of helpful content available. Having a great page experience can contribute to success in Search, in such cases.”
Shopify compresses this into “LCP, CLS, and INP are the Core Web Vitals (CWV), which Google uses as a ranking signal.” Google is the authority on Google’s ranking systems, so use Google’s version: a tiebreaker among comparably relevant results. For a store selling the same SKU as fifteen other stores with near-identical descriptions, being the tiebreaker candidate is exactly the situation you’re in, which is why this matters commercially without needing to be inflated.
If your rankings dropped and you’re trying to work out why, speed is one line on a longer ranking drop diagnosis, and the same is true during a replatform, where speed changes land alongside everything else on the SEO migration checklist.
The conversion case is stronger and better evidenced. Vodafone ran an actual A/B test (opens in new tab), published by Google on March 17, 2021, where version A was optimized for Web Vitals and had a 31% better LCP score in the field than version B, with both arms getting around 100,000 clicks and 34,000 visits per day. Vodafone’s reported result for version A was an 8% increase in sales, a 15% improvement in lead-to-visit rate and 11% in cart-to-visit.
Read the limits alongside it: telecom landing page rather than a store, and a starting LCP of 8.3 seconds, which is far worse than most Shopify stores and leaves more room to gain.
Google commissioned Deloitte’s Milliseconds Make Millions (opens in new tab), published June 24, 2020, covering 37 European and American brand sites and over 30 million sessions across 30 days at the end of 2019, and reporting that a 0.1 second improvement in mobile site speed increased conversion rates by 8.4% for retail sites.
It’s correlational rather than a controlled test, the data is from the end of 2019, and the four metrics it measured were First Meaningful Paint, Estimated Input Latency, average page load time and max server latency, none of which is a Core Web Vital. It supports “faster sites convert better.” It doesn’t support “0.1 seconds of LCP buys you 8.4%.”
The Amazon 100-millisecond line traces to a 2006 guest lecture at Stanford and was never published with a method or a sample. Trace the Walmart one-second figure, the 53% mobile abandonment stat, and the one-second-costs-7% claim to a primary source before you use any of them. A number you can’t trace doesn’t belong in your business case.
A Shopify Speed Optimization Sequence You Can Run This Quarter
Shopify’s own advice on where to start (opens in new tab), from January 13, 2026, is a single sentence.
If you only do one thing: use Shopify's Web Performance dashboards to identify your real problem areas, then validate the issue using the Chrome DevTools Performance panel to confirm the root causes.
Expanded into a working sequence, that’s seven steps:
- Read field data first, from Shopify's Web Performance dashboard and the Google Core Web Vitals report in Search Console. Lab tools come later.
- Work per template. Home, collection, product, cart, and search, in the order your traffic and Shopify's weighting suggest.
- Identify which metric fails and which subpart of it. LCP splits four ways, INP splits three ways, CLS is images, fonts, or injected content.
- Reproduce it in the Chrome DevTools Performance panel with CrUX field data loaded alongside your local trace, so you're debugging the problem your customers have.
- Attribute the slow interaction to a file using the web-vitals attribution build, then take that filename to the app vendor or remove the app.
- Fix locally with the Shopify CLI, on a duplicate theme, and validate with before-and-after traces.
- Confirm in the field, later than feels comfortable.
That last step is where it’s easy to declare victory too early. PSI field data is a trailing 28-day collection period and Shopify’s dashboard covers 90 days with up to 36 hours of delay, so a Lighthouse rerun the same afternoon proves only that the lab changed. Chrome DevTools can pull CrUX field data into the Performance panel (opens in new tab) alongside your local trace, a capability that arrived with the March 2025 CrUX dataset (opens in new tab), which makes the comparison easy to run properly and hard to fake.
Most failing stores don’t have a speed problem in the abstract. They have one template, one image loading late, and two scripts fighting over the main thread when a customer taps Add to Cart. Shopify speed optimization is the work of finding those four things and nothing else.
If you’d rather hand that off, Shopify Core Web Vitals optimization is exactly this sequence, run on your store, reported in field data. Or start with a free Growth Audit and we’ll show you which template is costing you and why.
Not sure where the gap is? That's exactly what the Digital Marketing Growth Audit is for.
A free, no-obligation look at where your site can win more traffic and conversions, with a clear digital marketing roadmap to get there. Just a straight read on where your digital presence stands and where it's headed.



