

Scores
Tested Oct 20, 2026 · PageSpeed Insights API, mobile and desktop
Current scores
Core Web Vitals, mobile
Lab data · LighthouseThis site doesn't yet have enough traffic for Chrome UX Report field data, so these are lab values from a simulated mobile run. INP needs real users; Total Blocking Time is the lab measure that tracks it.
Mobile performance over time
Daily · Sep 29 – Oct 20, 2026What's in it
What was built
Macro's design team supplied the design; we built it. Forms post to HubSpot through the Forms API with full source attribution (original traffic source, page history, UTM fields) rather than through the HubSpot embed, so every lead arrives with its campaign data intact. Consent runs through a consent management platform, with analytics loading under its statistics integration.
What made it fast
The decisions behind the scores. Written for the next developer.
- 01
The tracking stack is loaded late, not early. HubSpot and the rest of the analytics stack are injected on first interaction or four seconds after load, whichever comes first, instead of as tags in the head. Before: mobile 64–67, LCP 6.5 s, 250–330 ms of blocking. After: 94–97, LCP 2.5 s, 0 ms blocking. Same trackers, same attribution, no data loss (the timer catches bounces).
- 02
First-party weight is 268 KB. The site's own HTML, CSS, fonts and images for the home page total less than the single heaviest tracking script alone (175 KB).
- 03
The hero image is the LCP element and is treated like one: fetchpriority high, eager, discoverable in the initial HTML, sized in the markup.
- 04
Nothing loads that isn't used. Unused framework stylesheets are dequeued; jQuery is in the footer; Inter is self-hosted as a single variable font file.
- 05
No page builder in the delivered page. The markup is the design, not a builder's wrapper around it.
Where the points went
Same page, same trackers, five configurations.
With the full stack in the head, HubSpot analytics cost about 510 ms of main-thread time and the analytics tag about 330 ms, landing in the window where the browser was trying to paint the hero. Blocking each one in turn shows where the points went; delaying both recovered them without blocking anything.
Accessibility
Built to WCAG 2.1 AA and audited with Lighthouse. Current score 96; two low-contrast teaser labels are on the fix list and take it to 100.
Who runs it now
Macro's marketing team runs content and campaigns through HubSpot. We maintain the site's performance, security and technical SEO, measured in a monthly brief.
Don't take our word for it
Verify it yourself
PageSpeed Insights is Google's free, public test. Expect the numbers above, give or take a point or two between runs.
Run macrotg.com through PageSpeed Insightspagespeed.web.dev/analysis?url=macrotg.com