Gustavo Polin
ConversionFunnel RedesignAnalytics

A CRO audit and rebuild of the InstallPros U.K. landing page.

A Starlink installer buying almost all of its traffic, with no way of seeing where it lost it. Two out of three visits never typed a thing.

Product Designer
2026
Funnel audit, UX/UI, front-end & analytics
installpros-uk.vercel.app
The landing I built: a postcode lookup returning the real district name, Westminster

Where the money went

A business buying all of its traffic, and unable to see it.

£19,000

monthly Google Ads spend

87%

of traffic bought, 5% organic

80%

of visits arriving on mobile

61 → 1

pages sharing one thank-you page

The ads worked: strong click-through, efficient cost per click. The problem started after the click, and nobody could say where — one thank-you page served 61 unrelated pages, so every conversion figure in the account was inflated.

Worse, the primary conversion was a WhatsApp click, so automated bidding went hunting for people who click WhatsApp links. It believed it was paying £5.61 a conversion while a real installation lead cost £10 to £22.

The diagnosis

Two problems that are easy to mistake for one.

A funnel that under-delivers fails in two unrelated ways. The remedies have nothing in common, so the first job was to find out which one this was.

Hypothesis A

They start the form and give up partway through.

A form problem. Fixed by shortening it, splitting steps, rewriting fields.

Hypothesis B

They never start it at all.

A page problem. Fixed by what the first screen promises and asks for.

Every number the client held pointed at A.

Four sources, and the one contradiction between them

Hotjar

Heatmaps & scroll maps

Mobile scroll died at 25% of the page. On desktop the two most-clicked elements were menu entries — no conversion button made the top three.

Paperform

Form analytics

Drop-off by question: 76% postcode, 16% phone, 5% name, 2% email. The only source that let me rebuild continuation field by field.

Google Analytics 4

Web analytics

Mobile converted worse than desktop, 18% against 24%. The easy read was “fix the form on mobile”.

The cross-check · where it broke down

But mobile completed better than desktop once started. The gap wasn't inside the form. It was in getting anyone to touch it.

Form drop-off report: 76% postcode, 16% phone, 5% name, 2% email
The last question answered before someone stopped, over 30 days.Note the second question's own title: “Starlink is Available! What's your Phone Number?”
Click heatmap: the menu concentrates the clicks and the form area appears as an unrecordable zone
The most-clicked element is a menu entry, 5.73%.Where the form should be: “iframe: this zone can't be recorded”. Almost 1 in 5 cursor points fall there — the area holding the most attention is the only one that can't be measured.

Hypothesis B

The leak was at the door, not inside the room.

  1. Landing page visits

    100%

  2. Start the form

    33%

  3. Complete it

    32%

  4. Qualified lead

    ~48%

Each bar is against the previous step. End to end, roughly 5 visits in every 100 become a qualified lead.

Completion, 32%, could be better. But two in three people leave before typing a character — and that is the step nobody was looking at. On mobile, where 80% of them arrive, the offer took 17.6 seconds to finish rendering.

Continuation rate by form step: how many people reach each field and how many carry on from it.
StepReachedContinued
Postcode~12,300
49%
Phone~6,000
78%
Name~4,600
91%
Email~4,200
96%

The drop-off report put 76% of abandonment at the postcode, but abandonment always over-indexes the first step — everybody passes through it. Continuation compares like with like: of those who reach a field, how many go on.

One step loses half the people. The three after it keep nearly everyone.

The two screens that explain it

The form showed one question per screen, and the tool records the last question answered — so that 49% covers two moments the data can't separate: abandoning while typing the postcode, and handing it over only to leave on the next screen. Both are explained by the same pair of screens.

First screen of the original form: a postcode field with an unlabelled arrow as its only control
  1. 1“This allows us to check availability in your area.” A promise of a check.
  2. 2A thin line over a photo: no box, no format example.
  3. 3An unlabelled arrow. Nothing says what pressing it does.
Second screen of the original form: the availability message appears as the title of the phone question
  1. 4The answer takes the slot where “Postcode” used to be — fixed text, identical for every postcode.
  2. 5The phone number, asked for in the same breath.
  3. 6The warning that they'll call you, a second time.

The user hands over the data that costs them little, receives an answer that doesn't answer their question, and is asked in the same movement for the data that costs them a lot. It wasn't the length of the form. It was the exchange.

The answer

Six decisions, each one traceable to a number.

The form itself lives inside a third-party iframe — unmeasurable field by field, and incapable of looking anything up. So the first step could only be rebuilt somewhere else: a landing page of my own, design, front-end and deployment.

01

Separate the answer from the request

Postcode, then the answer with the real district name as a screen of its own, then the contact details. Half the people who gave a postcode went no further.

02

Change what the button promises

From “Get a quote” to “Check if we cover your area”. A quote sounds like a sales call; a check is a query. It lowers the cost of the first click.

03

One call-to-action label

Four different texts for the same button. Four labels split the clicks between options that are the same thing.

04

Minimal navigation on the landing

Logo and phone number; the 40-plus-link menu is gone. Two menu entries were among the five most-clicked elements. On mobile the menu beat the primary button.

05

Trust signals above the fold

Ratings and press credentials moved into the first two screenfuls on mobile. The bottom 75% of the page was never seen on mobile, and the proof lived down there — invisible to 80% of the traffic.

06

Consent, unbundled

One mandatory pre-ticked box covering contact and terms at once. Consent that is pre-ticked, bundled and compulsory is not valid consent — and the call it asked about needed none.

Desktop heatmap: the coverage map concentrates 47 clicks, 4.56% of the page total
The question they arrived with47 clicks on the coverage map, 4.56% of the page total: third most-clicked, ahead of any conversion button.

The same question, answered a different way.

Four comparisons on the same axis: the existing quote page on WordPress on the left, the landing I designed and built on the right.

Before · the iframe form

Fig. 01

Original desktop form: a fixed availability message sitting in the title of the phone question
A signFixed text, identical for any postcode, written into the title of the phone question.

After · my landing

Fig. 02

The new landing on desktop: the lookup returns the real district name, Westminster
An answerThe lookup returns the real district, and asking for the details is a separate step.

Before · mobile

Fig. 03

Original form on mobile: three header bars stacked above the content
Three bars before you startTrustpilot, phone and logo eat a third of the screen before the headline.

After · mobile

Fig. 04

The new landing on mobile: field, answer and button all within the first screenful
One bar, everything visibleField, answer and button fit in the first screenful, which is how 80% of the traffic arrives.

Before · consent

Fig. 05

Original consent step: an “I Agree” option already selected, above the Continue button
One tick doing three jobsA single mandatory box, pre-ticked, bundling permission to call with acceptance of the terms — and its link pointed at a different domain.

After · final step

Fig. 06

The new final step: an unticked, optional marketing checkbox above the submit button, with terms stated as plain text
Each job in its own placeAccepting the terms happens by submitting, stated as plain text. Marketing is a separate checkbox, unticked and genuinely optional — the only real opt-in is now the one that needs to be.

The ICO is unambiguous: consent needs a positive opt-in, so a pre-ticked box is not valid consent. But the tick was the smallest of three problems.

Permission to contact and acceptance of the terms rode on the same tick. Consent has to be separate and granular; packaged with other terms it isn't valid.

You couldn't continue without it. Consent must be freely given, so making it a condition of the service invalidates it — friction and legal weakness at once.

A call about this enquiry needs no consent — the user requests it by submitting their number. Meanwhile future marketing, the one thing that does need an opt-in, was never separated out.

The map was already the third most-clicked thing on the page

It was not a button and it led nowhere, and they clicked it anyway. So the redesign gave that attention somewhere to go.

Before · the old map

Fig. 07

The original coverage map: decorative pins on a static image of the United Kingdom
Pins that did nothingDecorative markers on a static image: nothing to click, nothing behind them, and no indication of where the company actually works.

After · coverage

Fig. 08

The new coverage section: a map of the United Kingdom with clickable city points and London highlighted
Every point is a destinationEach city opens its own local SEO page, so the clicks the map was already earning feed the location pages instead of dying on the spot.

They come from analytics and the ads account: the places the traffic actually arrives from, not a spread of pins to make the country look covered.

Most of the leads come from London, so the default state answers the question the majority of visitors arrive with before they touch anything.

Satellite reaches everywhere. What the map has to prove isn't reach, it's that somebody works near you — which is what a named city does.

The second most-visited page on the site was a speed test with no way out

Before-and-after speed comparison with a drag handle: 3.0 Mbps of typical rural broadband against 239 Mbps with Starlink professionally installed
Measuring a problem you already haveThe site's own speed-test page drew 8,717 views and carried no call to action at all. That traffic arrives mostly from search, and whoever runs a speed test is measuring a problem they already have — so the new landing carries a speed test of its own, where the measurement becomes a comparison and the comparison becomes the reason to ask for a quote.

And 17.6 seconds before the offer finished rendering on mobile

80% of the traffic arrives on mobile and nearly all of it is paid. The page those ads point at takes 17.6 seconds to finish rendering its offer; the new landing takes 3.3. Same route, same offer, same paid traffic, measured on both stacks.

PageSpeed Insights, mobile, 6 August 2026. Both runs on the quote page.

Core Web Vitals measured on the existing WordPress page and on the new landing. Lower is better throughout.
What the visitor waits forWordPress, in productionThe new landing
Largest Contentful Paintthe offer finishes rendering17.6 s3.3 s
First Contentful Paintanything appears at all4.1 s1.1 s
Speed Indexhow fast the page fills in10.1 s2.4 s
Total Blocking Timetaps that do nothing380 ms10 ms
Cumulative Layout Shiftthings moving under your thumb0.2090

Performance

3992

Accessibility

92100

Best practices

73100

SEO

85100

Before · mobile, score 39

Fig. 09

PageSpeed Insights, mobile, existing WordPress page: performance score 39 with the filmstrip showing a cookie dialogue
Nobody waits this longThe filmstrip shows what the visitor gets for their 17.6 seconds: a cookie dialogue over the offer.

After · mobile, score 92

Fig. 10

PageSpeed Insights, mobile, the new landing: performance score 92 with the offer rendering first
The offer, and the fieldSame measurement, same device class. What renders first is the thing the visitor came to do.

Speed is a barrier removed, not a conversion won. It changes how many people get to see the offer, not how many accept it.

Scope and measurement

Inside the budget, not around it.

100+ published pages and a fixed budget. The call was to work inside the existing WordPress template and prioritise by impact over effort, rather than propose the rebuild nobody had asked for. A slice of the time went purely into agreeing that scope in writing before touching production.

Before any improvement could be measured, the measurement itself had to be fixed: with one thank-you page serving 61 pages, no conversion figure in the account was trustworthy.

Baseline figures for each metric and the change expected to move it.
MetricNowWhat should move it
Form starts33%Minimal header, unified label, trust above the fold
First-field continuation49%Expectation microcopy and a credible coverage confirmation
Exits through the menuTop 5Should drop out of the click ranking entirely
Attribution reliability61 → 1One thank-you page per service, instead of 61 pages sharing one

Coverage isn't a variable — it's satellite, it reaches the whole country, so no postcode ever gets a no. What the user needed wasn't a verdict, it was evidence that somebody had looked.

A companion case

Two markets, two kinds of evidence.

This case is the quantitative half: analytics, heatmaps and form data converging on one broken step. The U.S. case is the qualitative half — 300+ support conversations turned into design principles. They read best together.

Emmvi

Figures rounded. The analytics screenshots come from the client's accounts and are shown with their knowledge.