Paid ads

How to Track Form Submissions and Phone Calls in GA4 and Google Ads

How to track form submissions and phone calls in GA4 and Google Ads: key events, generate_lead, GTM triggers, call tracking and testing for lead-gen sites.

Sean Melton
November 1, 2026 · 12 min read
Share
Illustration of a browser window with a lead form for a guide to tracking form submissions and phone calls in GA4

GA4 says your site produced two leads last month. Your office manager says the phone rang 70 times and the inbox has 18 form emails. One of those numbers is lying, and it isn’t the office manager.

To track form submissions and phone calls in GA4 reliably, fire one event, generate_lead, only when a form actually succeeds (on a thank-you page or a confirmed success message), mark it as a key event, and count calls using actual call data, since a tap on your phone number proves very little. Then send those same actions to Google Ads so it bids on leads rather than clicks.

That’s the whole idea.

The rest is the plumbing: how to do it on a normal small business site, what breaks, and how to test it without guessing. We set this up for service businesses around The Woodlands and Houston every month, and the same five or six problems show up so reliably we could almost bet on the order.

Conversions are now “key events” in GA4. What changed?

In March 2024 Google renamed GA4’s conversions to key events. As Google’s Ads Liaison put it in Search Engine Roundtable, “In GA4, legacy conversions will be renamed to key events.” The word “conversion” now belongs to Google Ads: a key event only becomes a conversion when you share it with an Ads account.

In GA4 you now mark an event as important under Admin → Data display → Events by clicking the star next to it. Google’s key events help page says standard properties can have up to 30 key events, which is far more than a lead-gen site needs. We’d keep it to three or four. Old tutorials that tell you to “toggle Mark as conversion” are describing the same switch under its old name, so don’t let them confuse you.

The test for what earns a star is simple. Would you pay for this action? A submitted quote form, sure. A real phone call, absolutely. Someone scrolling 90% of your About page is just someone reading your About page.

Can GA4 track form submissions automatically?

Sort of. GA4’s enhanced measurement has a Form interactions option that sends two events. Per Google’s enhanced measurement documentation, form_start fires “the first time a user interacts with a form in a session” and form_submit fires “when the user submits a form.” It costs nothing to switch on, and the parameters (form_id, form_name, form_destination, form_submit_text) only show in reports after you register them as custom dimensions.

We don’t use it as a lead count.

Depending on how the form is built, form_submit may fire when someone clicks Submit even if the form then fails validation because the phone number was missing a digit. So it can count attempts. It also misses plenty of real forms: ones that send without a standard browser submit (common with WordPress plugins and page builders) and embedded forms living inside an iframe from another service often don’t register at all. And it happily counts the wrong forms, because your newsletter box and the search bar in your header are forms too.

Leave it on if you like seeing form starts versus finishes. Just don’t mark form_submit as a key event and send it to Google Ads. You’d be training the bidding on noise.

Thank-you page vs event-based form tracking

To know a form actually went through, you need a signal that only appears on success. The table puts the dependable options next to the automatic one above.

MethodHow it worksReliabilityBest for
Enhanced measurement form_submitGA4 guesses from browser form eventsLow; counts attempts, misses many formsRough engagement data only
Thank-you pageForm redirects to /thank-you/; you track that page viewHigh, if nobody can reach the page any other waySimple sites; any form plugin that can redirect
Success event (GTM)Tag fires on the plugin’s success signal or confirmation messageHigh, once testedForms that show an inline “Thanks!” message
Developer dataLayer pushSite code sends generate_lead after the server accepts the formHighestCustom sites, booking tools, multi-step quotes

Thank-you pages are underrated. They’re easy to test and they work with almost every builder. They also give you somewhere to set expectations (“We’ll call within an hour during business hours”), which cuts down on the person who submits the form and then calls twice. Noindex the page so nobody lands on it from Google, and keep it out of your menu, or every curious visitor becomes a “lead.”

Five steps to track form submissions in GA4 and Google Ads for a Houston lead generation website
Skipping the first step is why most GA4 lead counts are wrong.

How to track form submissions in GA4 with Google Tag Manager

If your form shows an inline success message instead of redirecting, Google Tag Manager is the usual tool. The flow for a typical WordPress or Webflow lead form:

  1. Find the success signal. Submit a test form and watch what changes. It might be a redirect, a “Thanks, we got it” message appearing, or an event your form plugin pushes to the dataLayer (Gravity Forms, WPForms and Contact Form 7 all have one, sometimes with a helper plugin).
  2. Build the trigger. For a standard HTML form, the Form Submission trigger works. Tick Check Validation so it only fires when the form is “successfully sent,” in the words of Tag Manager’s trigger documentation, and Wait for Tags so the tag fires before the page moves on. For inline messages, an Element Visibility trigger on the confirmation text is often more dependable.
  3. Create a GA4 event tag named generate_lead. Add a parameter like form_name = “quote_request” so you can tell the quote form from the careers form. (Yes, people apply for jobs through the quote form. Constantly.)
  4. Fill out the form in Tag Manager’s Preview mode and confirm the tag fires once, after success. A failed submit should fire nothing.
  5. Publish, then mark the event as a key event in GA4 once it has come through.

Whatever else you rush, submit the form with a mistake on purpose. A tag that fires on the failed attempt will count garbage forever.

For more on what to do with the leads once you count them, our guide to measuring marketing success covers cost per lead and the numbers worth watching weekly.

Tracking phone calls: a tel: click isn’t a phone call

For a lot of Houston service businesses (plumbers, roofers, HVAC, med spas), calls outnumber forms by a wide margin. They’re also the leads most sites track worst.

The easy version is a Tag Manager Click - Just Links trigger where Click URL starts with tel:, sending a GA4 event like phone_click. That tells you someone tapped the number. Whether they actually called, stayed on the line, or turned out to be your supplier asking about an invoice, it can’t say. Desktop visitors who read the number and dial it from a desk phone never show up at all.

Google Ads is upfront about this. Its Google Ads’ phone call conversion page lists five ways to count calls: calls from ads (call assets and call-only ads), calls to a Google forwarding number shown on your website, clicks on a number on your mobile website, clicks on call ads and assets, and imported call conversions. On the mobile clicks option, Google’s own words are “we can only track these clicks, not the phone calls themselves.”

Bar chart comparing phone link taps with real calls and booked customers when tracking phone calls in GA4
Tracking only the first bar overstates phone leads by a wide margin.

Start with the cheap part. For calls straight from your ads, set up a call conversion for call assets with a minimum call length; we usually start at 60 seconds, which filters out most wrong numbers and hang-ups. Google’s website call conversion handles the next layer by swapping in a forwarding number for ad visitors, though it only covers Google Ads traffic.

For everything else you need a call tracking service. CallRail, CallTrackingMetrics and WhatConverts are the common ones. With dynamic number insertion, organic, Business Profile, Meta and ad callers each get credited to the right source, and most of these tools can send qualified calls to GA4 and Google Ads. It’s a monthly bill, but for a shop where the phone is the business, we think it pays for itself fast.

Our post on call tracking for local businesses covers how dynamic numbers work and how to keep them from scrambling your Business Profile’s phone number.

Use the generate_lead event (and the lead events after it)

GA4 has a recommended events list that includes a set built for lead generation. generate_lead is the one you’ll use first; Google describes it as when a user “submits a form online or submits information offline.” The rest of the set covers what happens after:

  • qualify_lead and disqualify_lead, for when someone on your team decides a lead is real or junk
  • working_lead, when a rep makes contact
  • close_convert_lead and close_unconvert_lead, for won and lost

Use Google’s names even if “quote_form_success_v2” feels more descriptive. Recommended events slot into GA4’s reports and future features without extra setup, and whoever inherits your account later will know what they mean without calling you.

The later events matter more than most owners realize. A roofing company in Kingwood might get 40 form fills in a hail month, and half are price shoppers from outside the service area. If your CRM can send qualify_lead or close_convert_lead back (most can, through an integration or a CSV upload), Google Ads can learn which clicks became roofs. That’s also what enhanced conversions for leads is for on the Ads side.

Add a value to generate_lead if you can, even a rough one. A $90 drain cleaning lead and a $12,000 repipe lead shouldn’t look identical.

Import GA4 key events into Google Ads, or use Google Ads conversions?

You can do either, and plenty of accounts do both. Google’s import documentation lists the differences that matter:

  • GA4 can credit any channel. Google Ads conversion tracking only measures Google Ads.
  • Google Ads records the conversion on the click date, while GA4 records it on the day it happened. That alone explains a lot of “why don’t these numbers match” emails.
  • Imported conversions can take up to 24 hours to show in Google Ads.
  • Conversions created from GA4 come in as Secondary, so they won’t steer bidding until you change that.

Our default for a local lead-gen account: native Google Ads conversion tracking (through the Google tag or Tag Manager) for forms, Google’s call conversions for calls, both set as Primary. GA4 key events stay in GA4 for cross-channel reporting and get imported as Secondary, if at all.

Comparison of importing GA4 key events versus native Google Ads conversion tracking for a Woodlands business
Differences per Google’s import documentation. Pick one Primary source per lead.

What you don’t want is two Primary actions for the same lead, say a Google Ads form tag and an imported GA4 generate_lead. Every quote request counts twice. Your cost per lead looks like half of what it really is, and smart bidding happily overpays for the next one. If your Google Ads results look too good to be true, check this before you celebrate, and see our Google Ads not converting audit for the other tracking failures.

Either way, auto-tagging has to be on, and nothing on your site can strip the gclid off the URL.

Redirect plugins and some booking tools do exactly that, silently, and you won’t find out until someone asks why Ads shows zero conversions for a month the phones were busy.

Consent mode lets your Google tags adjust to what a visitor agreed to. The consent mode overview lists four signals: ad_storage, analytics_storage, ad_user_data and ad_personalization.

It comes in two flavors. Basic blocks Google tags entirely until someone answers a cookie banner, and if they decline, nothing is sent. Advanced loads tags with consent denied by default and sends cookieless pings, which Google uses to model conversions it can’t observe.

For most Houston-area businesses selling to Texans, consent mode is a lower priority than getting the events right. Google’s strictest consent requirements are aimed at visitors in Europe. Texas has its own law, the Texas Data Privacy and Security Act, in effect since July 1, 2024, but according to the Texas Attorney General, small businesses as defined by the SBA are “generally exempt,” apart from a consent rule for selling sensitive data. If you already run a cookie banner (many WordPress themes add one), make sure it’s wired to consent mode rather than silently blocking every tag. We’ve seen banners that zeroed out a client’s conversions for months.

We’re not lawyers. If you handle health information (a clinic or med spa), talk to one before putting any tracking on booking or intake pages.

Test it with DebugView and Tag Assistant

Never trust a tracking setup you haven’t broken on purpose. We run the same routine on every account we touch, and it’s quicker than it looks.

  1. Open tagassistant.google.com, enter your site, and connect. Per Google’s DebugView help page, Tag Assistant adds a parameter that turns on debug mode for your device only.
  2. In GA4, go to Admin → Data display → DebugView. Your device appears and events stream in as they happen.
  3. Submit the form with an error. Nothing should fire.
  4. Submit it properly. Exactly one generate_lead should appear, with your form_name parameter.
  5. Tap the phone number on your phone. Your click event should appear.
  6. Back in Google Ads, check Goals → Summary and confirm each Primary action shows as active after a day or so.
  7. Call your own call asset from a mobile phone and stay on longer than your minimum call length.
Checklist for testing form and phone call tracking in GA4 and Google Ads for Houston service businesses
Ten minutes a month keeps your lead numbers honest.

After that, once a month, compare GA4’s generate_lead count with the form emails in your inbox, and your call conversions with your call log. Within 10 to 15% is healthy. Off by half means something broke, usually after a plugin update or a site edit.

When to do this yourself and when to hand it off

A single contact form with a thank-you page is a one-hour DIY job. Redirect, track the page, mark the key event, test. Call assets in Google Ads are about the same.

It gets messier fast once you add a second form, an embedded booking tool or another location. Cross-channel call tracking and CRM data flowing back into Google Ads are where most owners (reasonably) tap out. That’s the kind of setup our Google Ads team builds and maintains for businesses from Katy to Conroe.

Your next step: submit your own contact form today and see if GA4 notices. If you’re running ads and aren’t sure the numbers in your account are real, our free Ad Spend Leak Check is a 10-minute video showing where your Google or Meta budget is leaking, tracking included, in your inbox within 48 hours.

Frequently asked questions

How do I track form submissions in GA4?

The reliable way is to fire a generate_lead event only when the form succeeds, either by tracking a thank-you page view or by using Google Tag Manager to catch the form's success message or dataLayer event. Then mark generate_lead as a key event under Admin, Data display, Events. Avoid relying on enhanced measurement's form_submit, which can count failed attempts and miss embedded forms.

What is the difference between key events and conversions in GA4?

In March 2024 Google renamed GA4 conversions to key events. A key event is an action you mark as important in Google Analytics. It becomes a conversion only when you share it with Google Ads, where it can be used for bidding and reporting. Standard GA4 properties allow up to 30 key events, though most lead-gen sites only need three or four.

Can GA4 track phone calls?

GA4 can track clicks on a tel: link, usually with a Google Tag Manager click trigger, but a click is not a completed call. To count real calls, use Google Ads call conversions for call assets and website forwarding numbers, or a call tracking service with dynamic number insertion that sends qualified calls to GA4 and Google Ads, ideally with a minimum call length.

Should I import GA4 conversions into Google Ads?

You can, but for local lead generation we usually make Google Ads' own form and call conversions the Primary actions and keep GA4 imports as Secondary. Native tracking credits the click date and only Google Ads clicks, while GA4 imports can take up to 24 hours. Never set two Primary actions for the same lead, or each lead is counted twice.

How do I test if my GA4 event is working?

Connect your site in Google Tag Assistant, which turns on debug mode for your device, then open Admin, Data display, DebugView in GA4. Submit your form once with an error and once correctly. Only the successful submission should fire generate_lead. For Google Ads, check the conversion action status under Goals and Summary after about a day.

Sean Melton
Written by

Sean Melton is the founder of First Byte, a digital marketing agency in The Woodlands, TX. A former global CMO of a $250M software company, he has spent his career inside the businesses he markets. His team runs paid social, search, CTV and creative for brands like Equinox, Kroger and Viceroy, and shares what works here.

Let’s talk

Want results like these?

Tell us what you’re spending on ads. We reply within 1 hour, Mon–Fri — and your Leak Check video lands within 48 hours.

(713) 578-0634
Call nowGet a free Leak Check →