Case study · 2024 → 2026

Lead preservation

Visitors who started a demo request and left used to vanish. Now they stay in the pipeline.

Book a Demo widget, on every page
1Book a Demo widget, on every page
steps from first click to Sales
4steps from first click to Sales
in production since
2024in production since
of forms behind a CAPTCHA
100%of forms behind a CAPTCHA
Role
My idea. Designed it and led it with RevOps
Team
The second engineer on my team, RevOps and Sales
Timeline
2024 → today
Stack
In-house WordPress plugin, Account Engagement (Pardot), Salesforce, Turnstile

01·The problem

Before 2024.

Only a couple of pages had a form, and a visitor who started a demo request but didn't finish simply disappeared.

1

Half-finished requests vanished

Someone could fill in their details, get distracted before picking a time and leave. Nothing was kept, so Sales never knew they existed.

2

No attribution

Paid ads had no conversion tracking, so nobody could say which channel actually brought a demo.

3

No protection

No CAPTCHA and little structure inside the forms.

02·The idea

A visitor who starts a request is already a lead. Keep them.

Before

  1. Visitor starts a demo request
  2. Leaves before booking
  3. Lost

Now

  1. Visitor starts a demo request
  2. Leaves before booking
  3. Kept as a lead
  4. Salesforce, with source and UTMs
  5. Sales follows up
  1. 1

    One widget, everywhere

    The in-house Book a Demo engine sits on every page: booking, dynamic time zones and CAPTCHA.

  2. 2

    Details first

    Contact details are saved when the form is sent, before the calendar step.

  3. 3

    No time picked? Still a lead

    If the visitor leaves, the lead still reaches Salesforce, tagged so Sales knows the demo wasn't booked.

  4. 4

    Routed with context

    Source and UTMs travel with it, so Sales knows where the visitor came from.

03·How it evolved

From a couple of forms to a conversion engine.

  1. 2022
    Request-a-demo forms on a couple of pages.
  2. 2023
    A chat-style booking modal, with A/B tests.
  3. 2024
    Forms move to Account Engagement, and lead preservation starts.
  4. Jan 2025
    Our own form handler replaces third-party form logic.
  5. Jun 2025
    The in-house Book a Demo engine: booking, time zones, attribution and Salesforce hand-off.
  6. Oct 2025
    Widget v1.2 rolls out across the site.
  7. Nov 2025
    Cloudflare Turnstile CAPTCHA on every form.
  8. Jun 2026
    Booking analytics, a qualifying question, a sticky Book a Demo bar and a review badge.

04·Attribution

Then the next question: which channel really brought them?

With RevOps, I analyzed the journeys behind our demo leads and proposed recording first and last touch in Salesforce.

  1. 1

    Follow the journey

    We looked at the channels each demo lead touched before converting, over six months.

  2. 2

    Find the gap

    Some leads convert on a different channel than the one they first came from, so a single source field gives the credit to the wrong place.

  3. 3

    Propose the model

    First- and last-touch fields in Salesforce, with AI assistants tracked as their own channel.

05·What it unlocked

The point was never just the feature.

01

Paid ads became measurable

Ad landing pages, Google and Meta conversion events, and ad leads routed into Salesforce with their source.

02

A first- and last-touch model

The attribution work led to a proposal for first- and last-touch fields in Salesforce, plus AI assistants as their own channel.

03

A cleaner hand-off

Every preserved lead reaches Sales tagged as a demo that wasn't booked, with its source, so the follow-up fits the visitor.

More case studies

Every figure on this page is public or my own measurement: Chrome UX Report, PageSpeed captures, git and the site's own content. The company's business data stays private.

Let's build what's next.

Looking for a marketing technology leader who can also ship? Let's talk.

Based in Europe · Open to relocating to the US or Europe

Send a message

© 2026 Pablo PereyraDesigned and built with Next.js, Framer Motion and AI.Privacy