conversion optimization

34 seconds to 3 on mobile, nine friction points closed, and 62 sessions that found the leak

A regional US HVAC and insulation contractor

HVAC installation and replacement landing page with free estimate form.

The Brief

A licensed HVAC and insulation contractor serving a large US metro market, working with state and utility rebate programs. High-ticket work, long consideration windows, and homeowners who compare three or four providers before they contact any of them.

The client came to us with a pattern, not a theory. Paid social was converting. Paid search was not. Same business, same offer, same website, same week. That ruled out the offer and pointed at the landing experience.

Search traffic arrives with a defined intent and less patience than social traffic, and it was hitting a page that could not absorb it. Every CTA pushed visitors off to a separate Contact page. Nothing on the page built confidence: no reviews, stock photography, and a projects section that showed finished installs with no context around them. Then the form itself asked for SMS consent as a requirement, carried an asterisk that did not mean what it looked like it meant, and gave no indication of what happens after you press submit.

The page was also slow enough that a share of that traffic never saw any of it.

 

Performance and friction, before and after

Measured on the primary paid landing page, before the first round and after the final round of fixes.

MeasureBeforeAfterChange
Mobile load time (LCP)18.9s to 34.3s~3s-90%
Desktop load timeSlow enough to lose paid clicks~1sFast
Deferred third-party weight~2 MB on every visitDeferred-2 MB
Open friction points90-9
Ways to convert1 (phone)3 (form, booking, chat)+2
Paid sessions reviewed062 over 7 daysBaseline set

The Approach

Fix everything we could control, then prove each fix.

We ran a full UI/UX and performance audit across desktop and mobile first, and documented every friction point with a severity and an effort estimate, so the sequence was visible to the client instead of arriving as a list of opinions. Fixes then shipped in rounds rather than one release. New sections went out as HTML mockups for approval before they went live, which meant nothing shipped on assumption and nothing needed to be argued about after the fact.

Then the part that mattered. The first rounds went live and lead volume stayed flat. We did not call the work finished. A faster site with a better form is a reasonable thing to believe in, but belief is not a result, so we went back and re-tested our own conclusions against recorded sessions from real paid traffic.

That is where the engagement changed shape. The remaining problem was not the one we had assumed.

Hero-image

What we Did

  1. Put the form where the traffic lands. The primary paid landing page now carries the lead form in the hero, with trust signals directly beneath it. Every CTA had previously sent visitors to a separate Contact page, which is one page view of hesitation you are paying for on every click.

  2. Replaced a button that dialed a phone with a real booking flow. The “Schedule Appointment” button initiated a phone call. Nothing about the label suggested that. It now opens an embedded scheduler, site-wide, with a confirmation page, so the visitors who will not talk to a stranger on a Tuesday afternoon have a path that does not require it.

  3. Added a 24/7 assistant that captures the lead rather than answering questions into the void. It responds instantly, takes name, phone, and email, and writes every conversation into the client’s dashboard. Overnight enquiries stopped being lost enquiries.

  4. Told people what happens after they submit. A “What Happens Next” section in three plain steps: free estimate, free home energy assessment, then rebate and paperwork support. On a purchase this size, the hesitation is rarely price. It is not knowing what you are agreeing to.

  5. Made the form answerable. SMS consent became optional and the misleading asterisk came off. Name, Email, and Phone got visible labels across all three forms on the site. The Service Needed dropdown got an “Other” option, because a dropdown with no exit forces a guess or a bounce. Reassurance copy went under the submit button.

  6. Put a call button within thumb reach. A sticky “Call Now” CTA on mobile across every page, plus fixes to the mobile header where contact details were clipping and CTA text was wrapping onto itself.

  7. Cut roughly 2 MB off every visit. Images converted to WebP, hero image prioritized so the largest element renders first, render-blocking code and an unused icon library removed, font loading streamlined, and the chat widget, scheduler, and video all deferred. Those three alone were loading on every page for every visitor, whether or not anyone touched them.

  8. Cleaned up the small stuff nobody reports. Repeated bottom CTAs removed from the financing page, a duplicated subheading removed from a service card, and inconsistent footer hover behavior fixed on an interior page. None of these lose a lead on their own. Together they are the difference between a site that feels maintained and one that does not.

  9. Watched 62 real sessions instead of guessing. Traffic volume did not support a clean A/B test in a reasonable timeframe, and an underpowered test would have produced a number we could not defend. So we reviewed 62 recorded paid search sessions over seven days, end to end, and read the behavior instead of the noise.

    Before

    Energy-Efficient

     

    After

    Get-Estimate

Results in Detail

Mobile load time fell from as much as 34.3 seconds to around 3. Desktop settles at roughly one second on a fast connection. The measurement that matters here is the mobile one: this is a homeowner standing in a cold room with a phone in one hand, and at 34 seconds there is no page to convert on.

Why the tools disagree, and why we reported both. Synthetic tools test fast machines on fast connections and will tell you the site is fine. Lab tools simulate a slower phone, which is closer to an actual customer on cellular. Neither is wrong. Reporting only the flattering one is how a client ends up confident and unprofitable at the same time.

Why the score is still mid-range, and why that is a business decision. The site’s own code is now light. The remaining weight is third-party script: analytics, advertising, scheduling, chat, and cookie consent. Every one of those was added for a reason the client can articulate. That is a tradeoff for them to make with the numbers in front of them, not a defect we can code away quietly.

Before

Mobile-Score-Before

 

After

Mobile-Score-After

The session review found a real audience stopping at the last step. 62 recorded paid search sessions over seven days told us four things we could act on and one we could stop worrying about.

Not a bot problem
Traffic was real and engaged, with measurable active time and a low bounce rate. The click spend was buying attention.

Intent was present

Six sessions showed direct contact intent through CTA clicks, and none of them completed a lead.

The break was at the form

Visitors who reached the contact form were dropping off without submitting it.

Chat was pulling people sideways It was often used immediately after a CTA click, and those visitors exited without booking. A helpful tool sitting in the wrong place on the path.

Nothing was technically broken

No rage clicks, almost no dead clicks, and the JavaScript errors present were not affecting conversions.

Energy-Efficient

We are not putting a conversion lift percentage at the top of this page, because the window that would prove it is still open. What we can show is a conversion path with no detours, a site that loads before people leave, nine friction points closed and verified live, and a documented reason the remaining problem sits where it sits.
The next phase is narrow and already defined: the form and the chat widget are competing for the same moment of intent, and 62 sessions say so.

 

The standard behind every change

Every claim on this page was checked in the browser, in a recording, or in a report. When the first rounds went live and lead volume stayed flat, we went back, watched 62 real sessions end to end, and followed what the evidence showed rather than what the invoice would have preferred.

Audited. Mocked up. Approved. Shipped. QA’d. Then published.

Tools & technologies

What the build runs on

verified

GTmetrix
PageSpeed Insights
Pingdom

Book a free 30-minute call and get the three biggest growth opportunities hiding in your numbers.