OllieLeads Start free
Feature · 4 min read

Partial form submissions, for the forms you build yourself

OllieLeads saves the contact details of people who leave your form halfway, on any form you or your coding agent built. You keep your markup; Ollie keeps the lead.

On this page
  1. How it works
  2. What is saved, and when
  3. Turn it on
  4. Multi-step forms
  5. The notice for visitors
  6. EU, UK and Swiss visitors
  7. What it costs
  8. Questions

How it works

Most form backends only hear about a lead when the visitor presses Send. Everyone who gives up before that is gone without a trace, even when they had already typed their email. OllieLeads opens a session when the visitor starts, saves the contact fields as each one is filled in, and completes the lead when the form is sent.

  1. The visitor starts typing. Nothing leaves the browser for keystrokes. When they leave a contact field, such as email, Ollie saves that value.
  2. They send the form. Every field arrives once, and the lead is .
  3. Or they leave. After 30 quiet minutes the lead becomes Left early, and you hear about it: Left early at step 3 of 5: mara@keller.ch (Alpenglow Web).

Left early leads land in the same inbox as everything else, go to the same Slack or Discord channel, and fire the same signed webhooks (lead.left_early), so your follow-up runs on one list instead of two.

What is saved, and when

FieldSaved before submitWhy
Name, email, phoneYes, when the visitor leaves the fieldEnough to reply, and nothing more
Fields you opt in, per formYes, with the notice on your formFor the answer that matters, such as a budget
Free text, such as a messageNo, only on submitPeople draft and delete; half a message is not consent to send it
Anything, with consent turned onOnly after the visitor agreesFor visitors in the EU, UK and Switzerland
Passwords, card numbers, IBANsNever, not even on submitThey have no place in a lead

The same rule is enforced twice: by the script in the browser, and again by the capture endpoint, which drops any field that is not a contact field or one you opted in before the form is sent.

Turn it on

Add the script once per page and the attribute to your form. Your form keeps its own action, validation and thank-you page.

<!-- Once per page, before </body> -->
<script src="https://ollieleads.com/sdk/v1.js" data-key="ol_test_connect" defer></script>

<!-- On the form you already have: add one attribute -->
<form data-ollie-form="frm_8kq2" action="/thanks" method="post">
  <input name="name" autocomplete="name">
  <input name="email" type="email" autocomplete="email">
  <textarea name="message"></textarea>
  <button>Send</button>
</form>

Use the test key ol_test_connect while you build: test leads are tagged [TEST] and never count. Remove data-key when the site goes live. An npm package for bundlers ships in the pilot; the script tag works today with React, Next.js, Astro, SvelteKit and sites built in Lovable.

When your own code sends the form

If a submit handler or your server already sends each lead to OllieLeads, add data-ollie-submit="handler" to the form. The script then only saves early, your code keeps sending the lead after its own checks, and the visitor stays one lead. Send the hidden fields _sid and _ssec along with the others; when you build the body yourself, add ...window.ollie?.sessionFields('frm_8kq2').

Multi-step forms

Wizards lose the most people, and they are where knowing the last step matters. When you control the steps yourself, drive the session directly. Every call resolves to true or false and never throws.

const ollie = window.ollie; // from the script tag
const s = ollie.session('frm_8kq2');

// After step 1: only contact fields leave the browser
await s.save({ name, email }, { step: 1, of: 3 });

// The visitor moves on
await s.step(2, 3);

// On the last step: every field, once
await s.complete(allFields);

The notice for visitors

Saving what someone typed before they send it should never be a surprise. Put a short notice next to the form, in words your visitors understand. This one matches what OllieLeads saves by default:

<p class="form-notice">
  We save your name and contact details as you type, so we can
  get back to you even if you don't finish. Anything else is
  sent only when you press Send. <a href="/privacy">Privacy</a>
</p>

What it costs

Partial capture is on every plan. A lead counts once, whether it was submitted or left early, and spam and test leads never count. Free is 500 leads in total with no credit card; Pro is $29 a month with 1,000 leads a month included. See pricing.

Questions people ask

What is a partial form submission?

A partial form submission is what a visitor typed into a form before leaving without sending it. Saving the contact fields of that partial submission, such as name and email, lets a business follow up with someone who was interested but did not finish.

Does OllieLeads work with forms I built myself?

OllieLeads works with any form you or your coding agent built, in plain HTML or any framework. It is a form backend, not a form builder: your markup and design stay exactly as they are, and partial capture is added with one script tag and one attribute.

Is saving form data before someone submits legal?

Saving form data before submit is lawful in many places when it is limited, disclosed and used to reply, but some laws are strict, notably in California and the EU. European regulators treat collecting what someone typed before they send it as needing consent, so for visitors in the EU, UK and Switzerland, turn on consent: nothing is saved early until they agree, in your cookie banner or with a checkbox on the form. Our form abandonment guide covers the details; it is not legal advice. Read the privacy section.

Does a visitor who saves early and then submits count twice?

A visitor whose contact details were saved early and who then sends the form is one lead, shown as Submitted. Someone who leaves and comes back another day makes a second lead, but both sit under the same contact, so you see one person with two visits. A lead counts once on your plan whether it was submitted or left early.

Does partial capture slow down my form?

The OllieLeads script is under 5 KB gzipped, loads with defer and never blocks the form. If OllieLeads is unreachable, the form submits exactly as it did before; the script fails open and never throws to the page.