Web development & analytics
A site that takes four seconds to load has lost a quarter of its visitors before it gets to make its case. We build for speed first, measure it against Google's own thresholds, and wire up the analytics so every enquiry traces back to what produced it.
paint
Lighthouse
can go and open
and the hosting
Nine live sites. Go and open them.
Every one of these is in production right now, serving a real business. That's a deliberately higher bar than a portfolio of concepts — you can check the load times yourself.
Google's numbers, not ours.
"Fast" is not a matter of opinion. Google publishes three thresholds and measures every site against them using data from real Chrome users — not a lab test on our machine, which is how most agencies quietly report a good score.
- LCP — how long until the main thing appears. Under 2.5s.
- CLS — how much the page jumps about while loading. Under 0.1.
- INP — how quickly it responds when tapped. Under 200ms.
These are a ranking factor, but that's almost beside the point. They are a proxy for whether the site feels broken on a phone on mobile data, which is where most of your visitors actually are.
Every second has a price.
This is the part that turns speed from a technical detail into a line on the P&L. The share of visitors who give up climbs steeply with load time — and the steepest part of that curve is between one and three seconds, which is exactly where most business sites sit.
The reason it matters more than it used to is that you are usually paying for those visitors. Every one lost to a slow page is spend you have already committed, and it is almost always cheaper to fix the page than to buy replacements for the people it lost.
- 1s 9%
- 2s 17%
- 4s 38%
- 6s 56%
- 8s 71%
A site isn't done when it looks right.
These three are where most builds are quietly signed off unfinished, and all three are expensive to retrofit.
Events, not pageviews
A pageview tells you somebody arrived. These tell you what they did, and which campaign paid for it.
- call_clickTap-to-call from a mobile 214
- form_submitEnquiry, with the source attached 186
- booking_completeSlot confirmed, value passed 92
- page_viewWhat most setups stop at 41,200
Usable by everyone
It's a legal requirement in the UK, and it overlaps almost entirely with just being easier to use.
- Colour contrast31 → 0
- Keyboard navigableAll
- Form labels & alt text148 → 0
- Respects reduced motionYes
Rankings survive the move
The most expensive way to get a new site is to launch one that drops every ranking the old one had.
- /services.php?id=4 /boiler-installation
- /old-blog/2019/06/tips /journal/heating-tips
- /index.html /
- /contact-us-page /contact
mapped
lost
launch
The bits nobody shows you.
A site is a stack of small decisions that never appear in a mockup: what gets preloaded, which events fire, how the old URLs are kept alive. Here are five of them, as they actually get written.
$ npm run build vite v5.4.2 building for production… ✓ 214 modules transformed dist/index.html 2.1 kB │ gzip 0.9 kB dist/assets/index.css 9.4 kB │ gzip 2.6 kB dist/assets/index.js 41.8 kB │ gzip 14.2 kB ✓ built in 1.42s$ npx lighthouse --preset=desktop Performance 99 · LCP 0.8s · CLS 0.00
The order we do it in.
Design first and you get a site that looks right and doesn't sell. Structure first and the design has something to decorate.
Hosting, page speed, crawlability, tracking, and every place the current build loses people. Sometimes the honest answer is that you don't need a new site — you need four templates fixed and the tracking rebuilt, at a fraction of the cost. We'd rather tell you that than sell you a project you didn't need.
Wireframes settle what each page has to do, in what order, and what question it answers before the visitor is asked for anything. Getting that wrong is not fixable with better photography, and it is far cheaper to argue about at the wireframe stage than after the build.
Not for the laptop it was designed on. Images sized and served properly, fonts that don't block the first paint, no framework loaded to animate one button. Accessible by default, and structured so you can edit the content without calling us every time a price changes.
GA4 events on calls, forms and bookings, with values attached and the source carried through. If you can't tell which page and which campaign produced an enquiry, the build isn't finished — and every marketing decision after launch is a guess wearing a dashboard.
Every old URL mapped to its new home before the switch, tested on real devices and browsers, Core Web Vitals checked against field data rather than a lab score. A rebuild that costs you your rankings is the most expensive kind of new website there is, and it is entirely avoidable with a redirect map and an afternoon of care.
The site is where it all lands.
Every other channel spends money sending people here. This is the page that either converts them or doesn't.
Search engine optimisation
Half of technical SEO is web development. This is where the crawl fixes actually get made.
Pay-per-click
A faster, more relevant landing page lowers your cost per click directly. It's the cheapest lever in the account.
Social media
The page the bio link points at, usually opened on a phone with one bar of signal.
Email marketing
Where the sign-up form and the basket live — the two places every automation gets triggered from.
Content creation
The words the templates are built to hold. A fast page with nothing to say still doesn't rank.
Web development
Built for speed, measured against Google's thresholds, with the tracking wired to real outcomes.
You're hereFind out what the site is losing.
Send us the URL and we'll come back with your real Core Web Vitals, what your tracking is currently missing, and whether you need a rebuild or four templates fixed — before you've committed to anything.