Core Web Vitals measure three things Google has decided matter to real visitors: how fast the page's main content loads (LCP), how quickly it responds to input (INP), and how much it jumps around while loading (CLS). HubSpot CMS gives you a fast starting point — global CDN, managed hosting — but the theme and page content still decide whether you pass.
LCP is almost always an image problem. Serve hero images through HubSpot's File Manager so they get automatic responsive srcset, set explicit width and height attributes so the browser reserves space before the image loads, and mark anything above the fold as loading="eager" rather than lazy — lazy-loading your largest visible element is a common self-inflicted LCP hit.
INP degrades from JavaScript doing too much work on the main thread. Every third-party embed — chat widgets, analytics snippets, video players — is a candidate for deferred loading. Load what renders the page first; load what tracks or chats with the visitor after the page is interactive.
CLS comes from content whose size the browser could not predict: images without dimensions, web fonts swapping in and shifting text, or ad and embed slots with no reserved height. Set width and height on every image, and reserve space for embeds with a fixed-height container even before their content loads in.
PageSpeed Insights gives you lab data instantly; HubSpot's own website performance panel and Google Search Console's Core Web Vitals report give you real-user field data, which is what Google actually uses for ranking. Fix for the field data, not just the lab score — they can diverge more than people expect.