Cookie-Einstellungen

Wählen Sie, was wir verwenden dürfen. Unbedingt erforderliche Cookies halten Sie angemeldet und lassen sich nicht abschalten; alles andere entscheiden Sie, und es ändert nichts daran, wie die Website funktioniert. Sie können Ihre Entscheidung jederzeit über den Seitenfuß ändern.

Black-and-white close-up of a person's hands typing on a laptop keyboard at a desk by a window.

Your contact form counts submissions. Count the ones that paid

Photo by Christina Morillo (opens in a new tab) on Pexels

A website form reports every submission as a lead: the bot, the typo, the fake email and the same person twice. Only a fraction of those rows carry a real person you could ever find in your sales records. Here is how to clean form leads, which fields make them matchable later, where the entries actually end up, and how to judge forms by sales.

Contents
  1. A submission is an event, a lead is a person
  2. Spam and bots: the submissions nobody sent
  3. Typos and fake details: the human kind of junk
  4. Which fields make a form lead matchable later
  5. The same person, twice: resubmissions and the form-then-call
  6. Where form entries actually end up
  7. Measuring form leads by sales, worked through
  8. Reporting form leads honestly
  9. A form audit in one afternoon

A form submission is a lead only when a real person left a phone number or email you can find again. Strip out bots, fake details and repeats, require and validate both identifiers, export every entry from wherever it lands, and judge each form source by the sales those people became, not by how often the form was sent.

A remodeling company's website receives 400 quote requests in September. The marketing report says 400 leads, at $24 each, and the paid social campaign that drove most of them is the month's hero. The office manager, who reads every one, would tell a different story: about a fifth were spam, a few dozen had a phone number with nine digits or an email at gmial.com, and a fair number were the same people asking twice because nobody had called them yet.

None of that shows up in the count, because the count is of events, not of people. This post is about turning one into the other: what goes wrong between the submit button and the sale, which form fields decide whether a lead can ever be followed to revenue, and how to report form leads in a way a finance director would sign. It sits beside our posts on live chat and missed calls, which deal with the other two ways people reach a business from its website.

A submission is an event, a lead is a person

A form submission is one press of a submit button. A lead is a person you could contact and later recognize in your sales records. Analytics tools count submissions, and by design they cannot hold the contact details that would let anyone tell the two apart.

That is the right rule for an analytics product, and it settles where form measurement has to happen. The tool that counts your form fills is forbidden from storing the phone and email in them, so it can never tell you whether a submission was a bot, a typo or a customer. The only records that can are the entries themselves, wherever your form delivers them, and those are what this post works from.

Ad platforms have the same blind spot from the other side. A conversion tag fires on the thank-you page whether the person behind it typed a real number or asdf. Every platform's lead count is a count of thank-you pages reached, which is why the totals across platforms add up to more people than contacted you.

Spam and bots: the submissions nobody sent

Spam submissions are form entries made by scripts or paid click farms rather than prospects. They inflate lead counts, flatter cost per lead and land unevenly across channels, so the source with the most junk looks best. A bot check reduces them; it never removes them, and the ones that slip through must be tagged, not hidden.

Not all of that traffic fills in forms, and a vendor that sells bot protection has reasons to count generously. But the direction is not in dispute: any public form will be found, and some share of what arrives through it was never typed by a prospect. The share also differs by source. Placements that pay per click on cheap inventory tend to attract more of it than a branded search, which is exactly how junk ends up making the wrong channel look efficient.

Google's reCAPTCHA v3 makes the same point a different way: it returns a score between 0.0 and 1.0 for each request and leaves the decision to the site, suggesting 0.5 as a starting threshold. Either way, a challenge that is shown in the browser and never checked on the server is decoration. A plugin that claims to stop spam is worth one test: submit the form from a script and see whether the entry arrives.

  • Check on the server. Verify the bot token, the email format and the phone number where the form is received, not only in the browser.
  • Add a honeypot. A field hidden from people and visible to scripts. Anything that fills it in is a bot.
  • Tag, don't delete. Keep spam rows in the export with a status of spam. The count of spam by source is a fact worth reporting, and a deleted row cannot be audited.
  • Write the rule down. Links in the message, a name field full of a URL, the same text from twenty addresses: decide what makes an entry spam and apply it the same way every month, or the trend means nothing.

Typos and fake details: the human kind of junk

A real person can still leave an unusable lead: a phone number with a digit missing, an email at a misspelled domain, or a deliberate fake such as test@test.com or 555-555-5555 typed to get past a required field. Browsers check the shape of an email address, not whether it exists, so these pass every form unless something else stops them.

So the browser will happily accept jane@gmial.com, jane@gmail, and a@a.a. None of them will ever match a sale. The fixes are cheap and mostly mechanical:

  • Suggest corrections for common domain typos. gmial.com, gmal.com, hotmal.com and yaho.com are worth a "did you mean" prompt before submission.
  • Validate the phone as a phone. Check the number of digits for the country and reject obvious placeholders: all one digit, 123-456-7890, 555 exchanges. Parse it with a proper library, as we describe in phone normalization, rather than a pattern someone wrote in 2014.
  • Send an automatic confirmation. A bounced confirmation email marks the lead's address as bad within a minute, while the person may still be on the page.
  • Read Gmail addresses as Gmail does. Google's help page on dotted addresses says that adding dots to a Gmail address does not change where the mail goes, so jane.doe@gmail.com and janedoe@gmail.com are one inbox. Whatever joins your leads to your sales should treat them as one person.

Be careful with how far you push. A rule that rejects every email outside the big providers will reject business addresses, and a phone check that only accepts one country will refuse your out-of-state customers. Validation exists to catch mistakes, not to decide who is allowed to ask for a quote.

Which fields make a form lead matchable later

A form lead can be followed to a sale only through an identifier that also appears on the sale. In practice that means phone and email, in separate fields, both required on a quote form, validated on the server and stored as typed. Name, message and address help a person; they do not help a match.

This is the arguable part. Many conversion specialists will tell you to cut every field you can, and for a newsletter signup they are right. A quote request is different. Somebody asking for a price on a roof, a kitchen or a legal consultation expects a call, and the business is going to ask for the number anyway. Making it required on the form costs a few submissions and saves every lead that would otherwise arrive with only an email the customer never uses again.

Baymard studied online stores, where a phone number really is often unnecessary, so the reluctance it found is if anything stronger than you will meet on a quote form. The lesson carries over directly: the field is not the problem, the silence beside it is. "We'll call to confirm the details and book a visit" is enough.

Quote-form fields and what each does for matching a lead to a sale
FieldRequired?ValidationHelps match to a sale?
PhoneYes, with a reason shownDigit count for the country; reject placeholdersYes: the identifier most often on the sale
EmailYesServer-side format check; typo prompt; confirmation emailYes
NameYesNone beyond not emptyNo: names repeat and get spelled differently
ZIP or service areaOptionalFormat for the countryNo, but filters out-of-area leads
MessageOptionalLength limit; link check for spamNo
Hidden source fieldsFilled automaticallyPresent on every entryNo, but they say which channel the lead came from

The last row deserves a sentence. A form entry with a perfect phone and email but no record of how the person arrived is matchable and unattributable: you will know the customer came through the form, and not which ad or search sent them. Hidden fields that capture the landing page and its campaign tags, written into every entry, are what give the lead its source. Test them by submitting the form yourself from an ad link and reading the entry that arrives.

Keep the phone and email as separate fields, never folded into a single "How should we contact you?" box. A free-text contact field produces entries like "call after 5, 555 0102" that no export will split cleanly, and every such entry is a lead that cannot be matched until a person retypes it.

The same person, twice: resubmissions and the form-then-call

Form leads double count in two ways: the same person submits again because nobody replied, and the same person submits and then calls. Both create a second record for one prospect. Counted as two leads, they make the form's cost per lead look better and its close rate look worse than either really is.

The resubmission is the more telling of the two, because it is a measure of your response time. A prospect who sends the same quote request three times in a day is telling you something about how long the first one sat in an inbox. Count resubmissions by source each month; a rising number is an operations problem before it is a marketing one, and the arithmetic is the same as for the calls nobody answered.

The form-then-call is harder, because the two records live in different systems: the form in the CRM or the inbox, the call in a phone log. They can only be joined by putting both into one lead file and matching on the phone number, which is the strongest argument for making the phone field required. The full routine, and the choice of which record gets the credit, is in our post on duplicate leads; the short version is to count people, keep every row, and credit each sale once by a rule you set before you look at the results.

Where form entries actually end up

A form entry is only as durable as the place it lands. Depending on how the form was built, entries go to an email inbox, a CRM, the form tool's own database or a website plugin's table, and some go only to email and are stored nowhere else. Find out which before you try to measure anything.

That is a design choice by a free plugin, not a flaw, but it means that on a great many small-business sites the only copy of every quote request is an email. If the mail filter eats one, it is gone. If the person who receives them leaves, the history lives in their mailbox. And nobody can export six months of leads from an inbox without copying them out one by one.

Where form entries go, and what that means for measuring them
DestinationCan you export every entry?Typical risk
Email onlyNot without copying by handLost to spam filters, deleted mail, departed staff
Website plugin tableUsually, as CSV from the site adminLost when the site is rebuilt or the plugin removed
Hosted form toolYes, from the tool's submissions viewPlan limits on stored entries; source fields not set up
CRMYes, as contacts or form submissionsMerged into an existing contact, so the form's own row and date disappear

The CRM row is the subtle one. CRMs that deduplicate on email fold a returning person's new submission into the old contact, which is sensible for sales and loses the evidence that the form produced a second inquiry. Where the CRM can export a form's submissions rather than its contacts, as HubSpot can, with a date range and every field on the form, export that rather than the contact list. Hosted tools such as Jotform download their submissions table as CSV, one row per entry, which is the shape you want; check the date column after opening it, because spreadsheets reorder day and month.

Whatever the destination, the export you need is the same: every entry for the period, spam and duplicates included and tagged, with the date, the phone and email as typed, and the source fields. Our guide to exporting files that match covers the column choices and the date range, which has to start well before the first sale you are trying to explain.

Measuring form leads by sales, worked through

Cost per sale from a form source is the source's spend divided by the sales whose customers match a lead from that source. On the way there, spam, invalid contact details and repeat submissions come out of the denominator, and the ranking of sources often reverses.

Here is the remodeling company's month, split between the two paid sources that send traffic to its quote form. The figures are illustrative assumptions built to show the calculation, not benchmarks; every step can be repeated with your own export.

One month of quote-form leads from two sources, same spend (illustrative)
Paid searchPaid social
Spend$4,800$4,800
Form submissions160240
Tagged as spam2270
Real person, unusable phone and email826
Repeat submissions by the same person1416
Distinct people with a usable contact116128
Matched to a closed sale2313
Revenue from those sales$33,350$15,600
Cost per submission$30.00$20.00
Cost per distinct person$41.38$37.50
Cost per sale$208.70$369.23
Revenue per dollar of spend6.953.25
  • People: paid search 160 − 22 − 8 − 14 = 116; paid social 240 − 70 − 26 − 16 = 128.
  • Cost per submission: $4,800 ÷ 160 = $30.00 and $4,800 ÷ 240 = $20.00. On this line social is a third cheaper, and this is the line most reports stop at.
  • Cost per person: $4,800 ÷ 116 = $41.38 and $4,800 ÷ 128 = $37.50. Social is still ahead, by 9%.
  • Cost per sale: $4,800 ÷ 23 = $208.70 and $4,800 ÷ 13 = $369.23. Search is now 43% cheaper per sale.
  • Close rate per person: 23 ÷ 116 = 19.8% against 13 ÷ 128 = 10.2%.
  • Revenue: 23 sales at an average of $1,450 is $33,350; 13 at $1,200 is $15,600. Per dollar, $33,350 ÷ $4,800 = 6.95 against $15,600 ÷ $4,800 = 3.25.

Two things stand out. The spam rate is 22 ÷ 160 = 14% for search and 70 ÷ 240 = 29% for social, so more than half of social's apparent advantage in volume was never a person. And even after the cleanup, social produces more people than search for the same money; it is the closing, not the cleaning, that finishes the argument. That is a real finding about who these prospects are, and it is invisible to any report that counts submissions. Our post on cost per lead makes the general case for why the cheapest lead is so often the most expensive customer.

One honest caution. Sales that came from the form but bought under a different email and a different phone will not match, and neither will the ones whose entries were lost in an inbox. Those sales are not zero; they are unknown, and they belong in their own bucket rather than spread back over the sources. The unattributed revenue post explains why guessing them in does more harm than leaving them out.

Cost per submission rewards the form that attracts the most bots and typos. Cost per sale, from submissions cleaned of spam, fake details and repeats, is the only form metric that can move a budget.

Reporting form leads honestly

An honest form report shows, for each source, the submissions received, how many were spam, unusable or repeats, the distinct people left, the sales those people became and the revenue. Every number traces to rows in an export, and sales that match no lead are reported as unmatched rather than assigned to the form.

  • Submissions, then people. Both columns, so the gap between them is visible and its trend can be watched.
  • Spam and unusable, as counts. Not removed silently. A sudden jump in either is the first sign that a bot found the form or a validation rule broke.
  • Matched sales and revenue by source. Credited the way you agreed in advance, the same way for every channel.
  • Match rate. The share of distinct people who became a matched customer, and the share of all sales that matched any lead at all; our post on match rates covers what a healthy figure looks like.
  • Unmatched revenue, stated. Its own line, never divided among the sources.

CloseRev reads two CSV exports, your closed sales and your leads, and has no connection to your website or form tool, so a form entry counts only when it is a row in the lead file with the phone or email the person typed and a source column. It matches each closed sale to leads by normalized phone and email, and a sale that matches no lead stays in Direct / Unknown rather than being credited to the form.

A form audit in one afternoon

The quickest way to know whether your form leads can be measured is to submit the form yourself, follow the entry to wherever it lands, and export the last ninety days. Six checks, done once, show which of the problems above you have and in what order to fix them.

  1. Submit the form from an ad link on your phone. Check that the entry arrives, where it arrives, and whether the source fields came with it.
  2. Submit it from a script, without the bot token. If the entry arrives, the bot check is running only in the browser.
  3. Export ninety days of entries, from the plugin, the form tool or the CRM's submissions list, not from an inbox.
  4. Count four things: spam, unusable contact details, repeats by the same person, and distinct people left. Write the rules down.
  5. Check the fields. Phone and email required, separate, validated on the server, with a reason shown beside the phone.
  6. Match the distinct people to closed sales for a period long enough to cover your sales cycle, and compute cost per sale by source next to cost per submission.

If the result says your busiest form source is mostly bots and your quietest one closes, that is not an embarrassment. It is the first form report you have had that measures customers, and every month after it is cheaper to produce than the first.

Forms are the one lead source you fully control: the fields, the validation, the spam check and where the entries go. Use that control to make every real submission findable later, and measure the form by the people who paid.

Questions people actually ask

How do I stop spam submissions on my contact form?
Combine a bot check that is verified on your server, such as Cloudflare Turnstile or reCAPTCHA, with a hidden honeypot field and server-side validation of the email and phone. Cloudflare says plainly that its widget alone does not protect a form. Expect some spam to get through anyway, and tag it rather than deleting it, so your reports can say how much there was.
Should a quote request form require a phone number?
For a business that quotes by phone or visits the site, yes, with a sentence beside the field saying why. Baymard Institute found that unexplained phone fields make some people leave or type a fake number. A required, explained and validated phone field is what lets you find the lead again among your customers, because the phone is the identifier most likely to appear on the sale.
Does browser email validation check that an address is real?
No. An input of type email only checks the format, and MDN's reference says a correctly formatted address does not mean the address exists or belongs to the person typing it. It even accepts an address with no dot in the domain. Validate on your server as well, and confirm the address with an automatic reply if it matters.
Why do my form leads not match my sales?
Usually for one of four reasons: the submission was spam or carried a fake detail, the person bought under a different email or phone, the entries never left the inbox or plugin they landed in, or the numbers were written in different formats on each side. Check a sample of twenty by hand before blaming the form or the channel behind it.
What is a good conversion rate for form leads?
The useful rate is sales per real person, not submissions per visit. Remove spam, invalid contact details and repeat submissions first, then divide matched sales by the people left. That figure is comparable across channels and over time; a submission rate is mostly a measure of how easy the form is to fill in, including for bots.

See it on your own numbers.

Two exports and a few minutes. 14 days free, no card, nothing to install.