Every Built Local site ships with a sticky mobile bar at the bottom of the screen. Two buttons: one green "Get Started - £99" and one WhatsApp. It appears after the hero scrolls off, hides on upward scroll, and never moves on the desktop layout.
It is, by a long way, the highest-ROI 60 lines of code on the site. This is the reasoning, the data, and the three things we got wrong building it.
Why a sticky bar at all
A mobile visitor on a trade website is rarely browsing. They've usually already decided they need a plumber, a sparky, a roofer. They're comparing three tabs. The question they're answering isn't "is this company any good?" - it's "can I just call them right now?"
If the answer requires scrolling back to the top, opening a hamburger menu, or finding the contact page, you've lost them. The next tab is always one swipe away.
We tested removing the sticky bar on one client site for two weeks (a Sunderland heating engineer) as a sanity check. Inbound calls from organic mobile dropped 38%. We put it back.
Why two buttons, not one
The first version had a single phone-call button. It worked, but it left money on the table after 6pm. Looking at the call logs, we saw a clear pattern: between 7pm and 10am, mobile visitors didn't want to ring a stranger. They wanted to leave a message and let the company come back to them in the morning.
So we added a second action. Early experiments tried "Email us" - dead. Then a contact-form modal - 4% tap rate, 0.3% completion. Then WhatsApp.
WhatsApp was the unlock. One tap, the customer's own keyboard opens with a pre-filled message ("Hi, I saw your site about boiler repair in Sunderland..."), the conversation lands in a thread they own. Out-of-hours enquiries roughly tripled the week we shipped it.
For the primary slot we now use "Get Started - £99" on our own marketing site, and either "Call Now" or "Get a Quote" on client sites depending on the trade. Putting the price on a CTA is unusual; it pre-qualifies brilliantly. People who tap a button with a number on it are warm.
Why the phone got demoted to WhatsApp
We changed our minds on this in May 2026. The original sticky bar had Phone + Get Started. We replaced Phone with WhatsApp and left a separate floating WhatsApp bubble for desktop.
The reason: the floating tap-to-call link in the navbar already covers the "I want to ring right now" intent. Two phone buttons on the same screen is wasted real estate. WhatsApp covers a different intent (asynchronous, after-hours, "I want a paper trail") and was being underused.
The three things we got wrong
1. Full-width buttons on tablet
Version one stretched the bar across the full viewport on every screen size. On 768px-wide tablets the buttons looked enormous and amateurish. Now: sm:hidden. The bar only appears on screens under 640px. On larger screens, the regular header CTAs are visible enough.
2. The iOS Safari bottom-nav overlap
iOS Safari has a translucent bottom nav (back/forward/share). It doesn't reduce the viewport height; it sits over your content. Our first version had buttons positioned at bottom: 0. On iPhone, the bottom 30px of the buttons sat under that nav. People kept misfiring taps and hitting "back" instead of "call".
Fix: padding-bottom: env(safe-area-inset-bottom) on the bar, plus bottom: max(0px, env(safe-area-inset-bottom)) on the floating WhatsApp bubble so it clears the bar and the system nav.
3. Showing the bar from page load
First version was visible the moment the page rendered. It covered the bottom 56px of the hero - including, on one client's homepage, the only photo of their work. We added a scroll trigger: bar slides up only after the user has scrolled past 60% of viewport height. Cleaner first impression, no measurable drop in taps.
What we measured
Across six client sites that adopted the current sticky bar (mix of plumbers, electricians, a dog groomer and a man-and-van), in the 60 days before vs 60 days after:
- Mobile call volume: +41% (range +18% to +83%)
- Mobile WhatsApp messages: 0 (we didn't have WhatsApp before) to a median of 23/month
- Mobile bounce rate: -3% (within noise; people who tap leave less, people who don't tap leave the same)
- Lighthouse mobile performance score: unchanged
Caveat: small sample, no control group, seasonal effects baked in. Take the absolute numbers with salt. The direction is robust.
Why we don't add a third button
Every quarter someone asks if we can add an "Email" or "Find us on Facebook" or "Book online" button to the bar. The answer is always no. Two buttons fit comfortably on a 360px screen with proper tap targets (48x48 minimum). Three buttons either shrinks the targets below Google's accessibility threshold or pushes one button off-screen. Pick the two highest-converting actions, and put everything else in the regular nav.
If you want to copy this
The whole pattern is about 60 lines of TSX and a handful of Tailwind classes. The hard parts aren't the code - they're the decisions:
- Pick exactly two actions. Not three.
- One should handle "now" (call/WhatsApp), one should handle "later" (form/quote).
- Put a number on the secondary if you can - either a price or a turnaround.
- Hide it on tablet+ with
sm:hidden. - Use safe-area-inset for the bottom padding.
- Show it after the hero scrolls off, not from page load.
The shortcut
If your current site doesn't have one of these and you're getting mobile traffic, you're leaving money on the table every day. We build this into every site we ship - £99 setup, £49/month, live in 72 hours. No retainer for "tweaks".
