Skip to content
Get a quote

Ecommerce Core Web Vitals: what actually moves the numbers

Kay PatelFounder & DirectorPublishedLast reviewedReading time7 min
Illustrated panel of the three Core Web Vitals: loading speed, interactivity and visual stability.

On an ecommerce store, Largest Contentful Paint is usually decided by the first image, Interaction to Next Paint by third-party scripts, and Cumulative Layout Shift by content that arrives after the page has drawn. Field data from real visitors is the only measurement that counts. Lab scores are a debugging tool, not a target.

Core Web Vitals arrive in most stores as a red panel in Search Console and leave as a quote for a rebuild. Between those two events there is usually a week of work that would have fixed it, and the reason it does not happen is that nobody separates the three metrics from each other.

The three metrics, and what each one means on a store

Three numbers, each measuring a different kind of failure. The definitions are on web.dev; what follows is what each tends to mean when the site selling something is the one being measured.

MetricMeasuresUsual ecommerce culpritThreshold
LCPHow long until the main content appearsThe first image, unoptimised or discovered late2.5s
INPHow long the page takes to respond to a tapThird-party JavaScript from apps and tags200ms
CLSHow much the layout jumps after drawingBanners, badges and images without reserved space0.1

Treating them as one score is the mistake that produces rebuild quotes. They have different causes, different fixes and different costs, and a store usually fails one of them rather than all three.

Field data is the only measurement that counts

Two kinds of measurement exist and only one of them is the thing being assessed.

Lab data is a single run on hardware you chose, on a connection you have, with your cache state. Lighthouse produces it. Its value is diagnostic: it tells you what is slow and why.

Field data is what real visitors actually experienced, gathered from Chrome and reported through the Chrome UX Report and Search Console. Its value is judicial: it decides whether you have a problem.

The two will disagree, sometimes dramatically, and the field data is the one that is right. A store whose lab score is 95 on a developer’s laptop and whose field LCP is four seconds has a four-second problem, because visitors are on mid-range phones on mobile networks, and a good number of them are on the other side of the world from the server.

Test the templates that carry traffic. Field data is grouped by URL pattern precisely because a homepage and a product page are different pages, and the homepage — the one everybody tests — is usually the fastest and least representative page in the store.

LCP: it is the image, and it is the first one

On stores, LCP is an image problem almost every time, and there are only three ways it goes wrong.

The image is too large. A 2400px hero delivered to a 390px phone is the most common single fault we find. Responsive sources and a modern format fix it, usually cutting the transferred bytes by most of their weight.

The image is discovered late. If the browser only learns about the hero after parsing CSS or running JavaScript, the download starts late no matter how small the file is. The fix is to make it discoverable in the initial HTML and, where warranted, to preload it.

The image is lazy-loaded when it should not be. Lazy loading is correct for everything below the fold and actively harmful for the LCP element, because it defers exactly the thing being measured. This is a one-attribute fix that we find on a surprising share of audits.

There is a fourth case, less common and more expensive: LCP is text, and the text is waiting for a web font. Font display strategy fixes that without a redesign.

INP: the apps are doing it

Interaction to Next Paint replaced First Input Delay because it measures every interaction rather than the first one, and it exposed something that stores had been getting away with: INP is dominated by third-party JavaScript.

On a typical store that means the app stack. A review widget, a chat launcher, two analytics tags, a personalisation script and a consent banner each want main-thread time, and a tap on the variant selector waits behind whichever one is busy.

The fixes, in order of how much they usually return:

  • Remove apps nobody uses. This is the largest and cheapest win available on most stores, and it is the one that gets deferred because removing things feels risky.
  • Load what remains after interaction becomes possible rather than during page load.
  • Move tags behind a consent gate that genuinely defers them until consent, which many implementations do not.
  • Break up your own long tasks last, because on most stores your code is not the problem.

We have measured stores where removing three unused apps moved INP more than a fortnight of code optimisation would have.

CLS: reserve the space

Cumulative Layout Shift is the cheapest of the three to fix and the most irritating to a customer, because it is what makes a tap land on the wrong thing.

Four causes account for nearly all of it: images without width and height attributes, banners injected above existing content, badges and star ratings arriving after the card has drawn, and web fonts swapping to a face with different metrics.

Every one is fixed by reserving space before the content arrives. Dimensions on images, a fixed height on the announcement bar, a placeholder the size of the review widget, and font metrics that match the fallback.

What to do first, and what it costs

Ordered by return against effort, which is not the order a rebuild quote suggests.

OrderWorkTypical effortMoves
1Audit and remove unused appsA dayINP, LCP
2Fix image sizing and formatsA day or twoLCP
3Add dimensions and reserve spaceHalf a dayCLS
4Correct lazy loading on the LCP elementAn hourLCP
5Defer remaining third-party scriptsA dayINP
6Theme or template workWeeksAll three

Rows one to five are configuration and housekeeping on most platforms. Row six is a project. Quoting row six before trying rows one to five is how performance work gets a reputation for being expensive.

The honest case for doing this

Core Web Vitals are a real ranking signal and a modest one. A slow page about the right thing still beats a fast page about the wrong thing, and any agency implying otherwise is selling the wrong benefit.

The better argument is the customer. A visitor who taps a variant and sees nothing happen for half a second does not file a bug; they leave, and they were already interested enough to tap. That loss does not appear in any report — which is precisely why it goes unfixed for years.

Our stated position, offered as opinion: fix these because the store is unpleasant to use, and take the ranking effect as a bonus. Stores that chase the number tend to optimise the homepage, which is the page the least revenue depends on.

Measuring your own store this week

Three steps, no tooling to buy.

Read the field data. Search Console’s Core Web Vitals report, grouped by URL pattern. Note which template fails and which metric.

Reproduce it in the lab. Run Lighthouse on that template with mobile throttling — not on your desktop connection, which describes nobody.

Fix one thing and wait. Field data is a 28-day rolling window, so the report will not move tomorrow. Changing five things at once and watching one number is how teams end up unable to say what worked.

Sources

Questions we get about this

Do Core Web Vitals actually affect rankings?

They are a real ranking signal and a small one, weighed against relevance and quality rather than in place of them. A slow page about the right thing still outranks a fast page about the wrong thing. The stronger argument for fixing them is the customer who leaves before the page draws, which costs revenue regardless of ranking.

Why does my Lighthouse score not match Search Console?

Lighthouse runs a single simulated load on your machine; Search Console reports what real visitors experienced over the preceding 28 days. The two measure different things and will not agree. Use the field data to decide whether a problem exists and the lab tool to work out what is causing it.

Which page should I test?

The templates customers actually use, which usually means a product page and a category page rather than the homepage. Field data is grouped by URL pattern for exactly this reason, and on most stores the homepage is the fastest page and the least representative one.

How much can I improve without a rebuild?

On most stores, a great deal. Removing unused apps, sizing images correctly, deferring scripts that do not affect the first view and reserving space for late-arriving content are all configuration and housekeeping. A rebuild is warranted when the theme itself blocks those changes, which is less often than it is proposed.

Does a faster site guarantee more sales?

No, and anybody promising a specific uplift is guessing. Speed removes a reason to leave rather than creating a reason to buy. The honest framing is that a slow store loses customers it had already convinced, and recovering them is cheaper than acquiring new ones.

Thinking about this for your store?

This post comes out of our Running a Store work. Tell us what you are planning and we will come back within one business day, including if the honest answer is that you do not need us yet.

We reply within 1 business day