Skip to content

How do I stop spam form submissions from inflating my Google Ads conversions?

Count the lead only after your server accepts it, not on the submit click, and set the action to one conversion per click. Across 33 Google Ads accounts I manage, 30 days to October 21, 2026, 3 of 28 lead-gen accounts counted a biddable lead action as every conversion. Then bid on booked appointments, not raw fills.

Why the spam counts in the first place

Almost every spam-inflation problem I diagnose comes down to one wiring mistake. The conversion fires on the click of the submit button, not on a real submission. A bot lands on the page, fills the fields, clicks submit, and the GTM trigger registers a form submission the instant that button is pressed. It never checks whether the form passed validation. It never checks whether the server accepted the lead. The click is the event, so the bot gets counted.

Google Ads then sees that conversion. Smart Bidding sees it too. Because the algorithm optimizes toward whatever you call a conversion, it starts buying more of the traffic that produces those cheap form-fills. On accounts I take over, more than 30% of the form leads being counted are typically spam or junk. That’s my experience on takeovers, not a measured benchmark. The spam isn’t a reporting nuisance. It’s steering your budget toward worse traffic.

The tag doesn’t even need a submit click to count junk. One home-services account in my home-services benchmark reported a 114% conversion rate because it counted a 50% page scroll and starting to type in a form as conversions. It logged more conversions than clicks and no completed leads.

There are two fixes, and you need both. One lives in the browser tag layer. One lives in how you define a conversion. I’ll take them in order.

Fix the trigger: gate the event on server confirmation

The browser tag container (GTM web) is a traffic cop, not the form processor. Its job is to fire the conversion event when a real lead has been accepted, and only then. That means the trigger can’t watch the submit button. It has to watch for proof that the submission succeeded.

Concretely:

  • Stop using the submit-click or generic Form Submission trigger. Both fire before validation. Replace them with an event that only exists after the server has accepted the lead.
  • Fire the conversion on the server-confirmed thank-you state. The cleanest signal is a redirect to a thank-you URL the server serves only after it has validated and stored the lead, or a custom dataLayer event your backend pushes on a successful response. Either way, the trigger reacts to server confirmation, not a button press.
  • Add a honeypot field and check it server-side. A hidden field that humans never see but bots fill in. If it has a value, the server rejects the submission and never pushes the success event. No event, no conversion. It catches the simple bots that fill every field, at no cost.
  • Add reCAPTCHA v3 and read the score on the server. v3 shows no checkbox. It returns a score from 0.0 to 1.0 for each request. Pass the token to your backend, verify it there, and push the success event only above your threshold. Low-score submissions never become a conversion. reCAPTCHA keys are now managed in a Google Cloud project, and Google’s migration moves existing v2 and v3 keys over without code changes.

The principle under all four is the same. The conversion event belongs downstream of the validation, not in front of it. If a submission can reach Google Ads without your server confirming it’s a real lead, your trigger is in the wrong place.

I’ve seen what the click version costs. On one fence contractor’s account, the only website conversion fired on a click whose button text read “Send.” A click trigger like that counts button presses, so a submission that failed validation or got caught by the spam filter still counted as a lead. When someone renamed the button to “Submit,” it stopped counting anything at all. I rebuilt it on the form plugin’s own success event, which fires only after the mail is sent. The dead form case walks through the fix.

One more setting sits outside the tag. Open the conversion action and check how it counts. A lead action should count one conversion per click. Set to every conversion, one person who submits twice counts as two leads, and one bot that submits ten times counts as ten. Across 33 Google Ads accounts I manage, 30 days to October 21, 2026, 3 of 28 lead-gen accounts had a biddable lead action set to every conversion.

Fix the definition: one primary conversion, and it’s a qualified lead

Cleaning up the trigger stops the obvious bot fills. It doesn’t stop the low-quality humans, the out-of-area inquiries, the wrong-service requests. For that you change what you let Google Ads optimize toward.

In a service business, your one primary conversion should be a qualified lead, not a raw form-fill. For me that means a booked appointment: a booked consult or a booked estimate. A form-fill is an action. A booked appointment is something your CRM or lead platform records after a person on your team has talked to the lead. When the qualified lead is the primary conversion, spam never reaches the signal Smart Bidding learns from, because it never gets qualified.

Gating spam is half the fix. Whether to bid on form fills or on qualified leads at all is its own decision, covered in form fills or qualified leads.

On one law firm account I took over, every form submit counted as a conversion, spam and bot traffic included. Fixing the conversion signal and rebuilding the account cut spend in half and doubled qualified signups in 90 days.

That works like this:

  1. The form-fill lands in your CRM with its gclid attached, captured at the click.
  2. Qualification happens in the CRM or lead platform. A lead that’s spam, out of area, or out of scope never books, so it never advances.
  3. Only the booked record is imported back into Google Ads as the conversion, with the gclid and the hashed email or phone so enhanced conversions can make the match. Google began combining the web and leads settings for enhanced conversions into one in 2026 (Google’s notice).

Now your bidding optimizes against leads a human confirmed were real. Keep the raw form-fill as a secondary, observe-only conversion if you want a read on volume, but keep it out of the bid strategy. Run Smart Bidding as tCPA on the booked-appointment conversion, or value-based bidding once qualified values flow. Never run Maximize Conversions against raw fills, or you reward the algorithm for finding more of the junk you’re trying to escape.

The order to do it in

Patch the trigger first. It’s fast and it stops the bleeding the same day. Then build the qualified-lead definition, because that’s what protects you long term. The trigger fix removes bots. The definition fix removes everything a human would call a bad lead. Together they mean the number in your Google Ads account starts matching the number of real opportunities your team works.

This sits inside the broader architecture in my Lead Quality Stack, where the browser tag layer (L02) and the qualified-lead conversion (L06) are two of eight layers that have to agree. To find where your own form tracking is leaking before you touch anything, my free 25-page Google Ads Setup Checklist walks the conversion setup you can check on your own account, and the free ads audit reads the whole conversion setup end to end.

When to bring me in

Bring me in when the account reports plenty of leads but few become booked appointments, when spam or short calls count as conversions, or when closed deals never make it back to Google Ads.

I'm Conner Crowe, and I write every audit myself. Send the free audit request and add me as a read-only user, and within 24 hours of access you'll have a written read on what your account counts as a lead and what to fix first. No call needed, and nothing in your account or store changes.

Request a free Google Ads audit

See how I run Google Ads for service businesses.

Where to look in your account.

What Google is allowed to count

Goals, then Summary, then View all conversion actions

  1. Tracking status. Inactive or Needs attention means the tag hasn’t recorded anything lately, so check it before you trust the totals.
  2. Primary or Secondary. Only Primary actions feed Smart Bidding; Secondary ones are reported and ignored by the bidding.
  3. Count. One per click for leads, Every for purchases. A lead form set to Every counts a double-submit twice.
  4. Included in account-level goals. Yes is what the campaigns actually optimize toward.

From my own Google Ads account, October 2026. Tap or click the screen to see it full size.

Tools for this diagnosis

All my free tools

Related questions

Back to the full lead quality: the diagnosis library

Same diagnosis,
run on your leads.

Add me as a read-only user and I'll write the audit myself: what your account counts as a lead and what to fix first, 5 to 7 pages, back within 24 hours of access. No call needed. If you'd rather talk first, a call is open too.