Get Started
All results

Case study · Development · Growth

Technology

A build from the client's own design for a managed IT provider, and a worked example of what a marketing tracking stack costs on mobile.

Built for Macro Technology Group, a managed IT and cybersecurity provider. Live site

macrotg.com
macrotg.com homepage, desktop
macrotg.com homepage, mobile

Scores

Tested Oct 20, 2026 · PageSpeed Insights API, mobile and desktop

Current scores

Performance
mobile
Performance
desktop
Accessibility
desktop
Best Practices
desktop
SEO
desktop

Core Web Vitals, mobile

Lab data · Lighthouse
LCPGood
Largest Contentful Paint
2.5 s
Good ≤ 2.5 s
TBTGood
Total Blocking Time
0 ms
Good ≤ 200 ms · lab stand-in for INP
CLSNot recorded
Cumulative Layout Shift
—
Good ≤ 0.1

This 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, 2026

What's in it

DeliverablesFigma → WordPressFigma → WordPressTechnical SEOTechnical SEO
IntegrationsHubSpot + trackingHubSpot + tracking
ComplianceCMPCMP

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.

  1. 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).

  2. 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).

  3. 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.

  4. 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.

  5. 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.

Mobile score
64–6794–97
LCP, mobile
6.5 s2.5 s
Total Blocking Time
250–330 ms0 ms
Mobile performance by configuration
Full stack in the headShipped
64
Block HubSpot onlyShipped
74
Block the analytics tag onlyShipped
76
Block bothShipped
90
Delay both, block nothingShipped
94

Dashed line: 90, the bottom of Lighthouse's green band.

Accessibility

Accessibility
Lighthouse, desktop

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