Form tracking is the practice of recording every form submission on your website as a measurable event in your analytics platform, so you can link each enquiry, quote request, or sign-up back to the marketing channel that generated it. For South African businesses running Google Ads or Meta campaigns, it is the foundation of any conversion rate optimisation strategy — without it, you are spending on ads and counting phone calls without ever knowing which campaign drove which lead. This post covers the three reliable setup methods, the common failure in GA4's default configuration, and what to do with the data once it is flowing cleanly.

If your site already has a contact form, quote form, or application form and you are not confident every submission is being recorded accurately in Google Analytics 4, you almost certainly have a measurement gap. Most South African business websites use WordPress with Contact Form 7 or WPForms — both require specific configuration before GA4 records submissions correctly. The good news: once set up properly, form optimisation work becomes measurable, and the guesswork comes out of your CRO decisions.

Quick Answer

Form tracking connects your web forms to your analytics platform so every submission is recorded as a named event, linked to its traffic source, and available for conversion reporting. GA4's built-in enhanced measurement attempts this automatically but produces false positives — it can fire form_submit events on failed submissions and from third-party pixels, making the data unreliable. The recommended setup uses Google Tag Manager with one of three methods: thank-you page tracking (simplest, requires a redirect), a GTM Form Submit trigger (no redirect needed, requires careful validation), or an Element Visibility trigger (for on-page confirmation messages). Once a form event is marked as a conversion in GA4, it feeds directly into Google Ads and Meta Ads optimisation.

Are your enquiry forms actually being tracked?

Send us your GA4 property details and we will audit your form tracking setup — identifying false positives, missing events, and unconverted submissions costing you ad spend.

Request a free tracking audit

What form tracking actually measures — and why it matters for SA marketers

Form tracking records a named analytics event each time a visitor successfully submits a form on your site. That event carries metadata: which page the form sat on, what device the visitor used, and — critically — which channel, campaign, and keyword brought that visitor to your site in the first place.

Without form tracking, your GA4 property shows traffic and session data but cannot attribute enquiries to sources. You know 1,200 people visited your contact page last month; you do not know whether the 40 leads came from your Google Ads campaign or from organic search. That ambiguity makes it impossible to optimise your budget or test whether landing page changes are actually lifting conversions.

The stakes are higher than they might appear. Research across more than 1.6 billion form interactions shows that only 45% of visitors who land on a form page go on to submit it — meaning more than half of the traffic you are paying for exits without converting. And among contact forms specifically, the view-to-completion rate drops to around 9%, according to Zuko Analytics. If you cannot see that drop-off happening in your own data, you cannot fix it.

Form tracking also enables downstream measurement: Google Ads smart bidding, Meta's Conversion API, and most CRM attribution tools all rely on a clean conversion event to learn which users are most likely to enquire. Poor form tracking means the algorithm optimises on incomplete signals — and your cost per lead climbs accordingly. For a tighter picture of what each lead costs across channels, see the cluster post on Google Ads conversion tracking in South Africa.

Key Takeaway

Form tracking converts your forms from a communication tool into a measurement asset. Every R spent on paid traffic becomes attributable to a specific lead outcome — or it does not, and you are flying blind on budget decisions.

Why GA4's built-in form tracking is not enough

GA4 includes an Enhanced Measurement feature that attempts to track form interactions automatically. It captures two events — form_start (first interaction with a form) and form_submit (when a submission fires) — without any GTM configuration. For a simple static form on a straightforward site, it works. For most real-world South African websites, it does not.

The core problem is false positives. In documented testing, a site with 22 visitors generated 42 form_submit events — a ratio that is physically impossible if the data were accurate. The cause: GA4's enhanced measurement cannot distinguish between a successful submission and a failed one (a visitor who left a required field blank), and it is also triggered by dummy form submissions that Meta's Pixel and other third-party scripts send in the background. The result is that your "form submissions" metric overstates actual leads, sometimes by a wide margin, and there is no built-in way to filter the noise.

What bad form tracking looks like: GA4 shows 80 form_submit events for the month. Your sales team logged 22 leads. You assume 58 leads did not respond — but in reality, most of those 80 events were false positives from failed submissions or pixel activity. Your conversion rate looks inflated, your Google Ads campaign has been optimising on bad data, and your actual cost per lead is roughly 3–4× what GA4 reports.

A second limitation is AJAX incompatibility. Most modern WordPress form plugins — including Contact Form 7 on its default settings — submit forms without reloading the page. GA4's enhanced measurement cannot detect AJAX submissions reliably. A visitor fills in the form, a thank-you message appears, and GA4 sees nothing.

Finally, the enhanced measurement events cannot be customised. You cannot add a filter to exclude failed submissions, and you cannot push additional parameters (like which specific form or which page) without overriding the default tracking entirely. For anything beyond the most basic site, a GTM implementation is the correct starting point.

Note: Enhanced Measurement is worth leaving enabled for its other automatic events (scroll depth, outbound clicks, file downloads) — just disable the Forms toggle specifically, and replace it with the GTM implementation below.

Three reliable form tracking methods — and when to use each

The right method depends on how your forms behave after a successful submission. Use the table below to identify your scenario.

MethodWhen to useSkill levelReliability
Thank-you page trackingForm redirects to a unique /thank-you/ URL after submissionLowHigh — no false positives possible from a genuine pageview
GTM Form Submit triggerForm shows a success message without a page reload; AJAX not involvedMediumMedium — requires "Check Validation" enabled and thorough testing
Element Visibility triggerForm shows an on-page success message (CSS-identified element becomes visible)MediumHigh — fires only when the success state renders
dataLayer.push() eventAny form type; requires a developer to add one line of codeLow (once coded)Highest — the form logic itself signals GA4, no listener needed

Method 1 — Thank-you page: Configure your form to redirect to a URL like /contact-us/thank-you/ on success. In GA4, this shows as a standard pageview. Create a trigger in GTM that fires on that specific URL path, attach a GA4 event tag (event name: generate_lead), and you are done. This is the simplest, most reliable method — the only limitation is that your form plugin must support post-submission redirects, which all major WordPress plugins do.

Method 2 — GTM Form Submit trigger: In GTM, create a new trigger of type Form Submission. Enable the "Check Validation" checkbox — this prevents the trigger from firing when a user submits an incomplete form and the browser's native validation rejects it. You can further narrow the trigger by specifying a Form ID (visible in your page source) so that a search bar or newsletter sign-up on the same page does not fire your lead conversion event.

Method 3 — Element Visibility trigger: After a successful submission, most form plugins reveal a hidden success message (for example, a div with class .wpcf7-response-output in Contact Form 7). Create a GTM trigger of type Element Visibility, enter the CSS selector for that element, and enable "DOM Change Observation" — this tells GTM to watch for the element being injected dynamically rather than present on load. When the message appears, the event fires.

CF7 and WPForms note for WordPress sites: Contact Form 7 emits a wpcf7mailsent event directly to the dataLayer after a successful submission — making it one of the easier plugins to track accurately. In GTM, create a Custom Event trigger and enter wpcf7mailsent as the event name. This works regardless of whether the form uses AJAX.

Setting up form tracking in GTM and GA4 — the core steps

GTM form tracking setup follows five steps regardless of which method you use: enable form variables, create a GA4 Event tag named generate_lead, attach your chosen trigger, test both a successful and a failed submission, then mark the event as a conversion in GA4.

Step 1: Enable form variables in GTM. Go to Variables → Configure → enable all Form variables (Form ID, Form Classes, Form Element, Form Target, Form URL, Form Text). These become available to your triggers and can be passed as event parameters to GA4.

Step 2: Create a GA4 Event tag. Go to Tags → New → Google Analytics: GA4 Event. Enter your Measurement ID (store it in a Constant variable so it is easy to update). Name the event generate_lead — this is a GA4 recommended event name that appears in standard reports without additional configuration. Do not assign a trigger yet.

Step 3: Create your trigger. Follow whichever method applies to your site (see above). Assign the trigger to the GA4 Event tag created in Step 2.

Step 4: Test before publishing. Open GTM Preview mode, navigate to your form, and complete a successful submission. Confirm the event fires. Then test a failed submission — intentionally leave a required field empty and click submit. Confirm the event does not fire. If it does, your trigger is generating false positives that will inflate your conversion count exactly the same way GA4's enhanced measurement does.

Step 5: Mark as conversion in GA4. Once the event appears in your GA4 property (allow 24–48 hours after publishing), go to Admin → Events, find your generate_lead event, and toggle "Mark as conversion." It will now appear in Conversions reports and, if you have linked Google Ads, feed directly into your campaign's smart bidding.

Key Takeaway

The single most important test is a failed submission. A trigger that fires on validation errors produces the same false-positive problem as GA4's built-in tracking — just with more configuration effort behind it. Two minutes of testing a blank submit saves weeks of corrupted data.

Form data that changes decisions — what to measure

Live form tracking surfaces four metrics that directly drive budget and UX decisions: overall completion rate, field-level drop-off, the field-count-to-conversion curve, and per-channel attribution.

Completion rate: The share of users who land on a page with a form and submit it. Industry-aggregated benchmarks put the cross-industry median at 17.3% among users who interact with the form at all. Contact forms run significantly lower — around 9% of all visitors who reach the form page. If your contact form is well below that 9% median, there is a measurable gap worth closing.

Field-level drop-off: Advanced form analytics tools (Zuko, Hotjar, and similar) show exactly which field causes the most abandonment. The most common culprits are phone number (6.3% per-field abandonment rate), email (6.4%), and any password field (10.5% abandonment, which is why login-gated quote forms should be rethought entirely). You do not need a specialist tool to start — GA4 field interaction events can be pushed to the dataLayer with moderate developer effort.

Field count impact: Benchmark data across hundreds of B2B forms shows a non-linear drop in conversion as fields are added. As a working rule of thumb based on industry benchmarks:

Field countTypical conversion rateGPM note
3 fields23.1%Name, email, message — sufficient for most first-contact forms
5 fields~17%Add one qualifying question; conversion drop is modest
7 fields11.4%Two additional fields roughly halve conversion vs 3-field version
10+ fields6.9%Application forms only — where completion intent is inherently higher

Source: Digital Applied Form Conversion Rate Benchmarks 2026. These are aggregated global benchmarks; your actual rate will depend on your audience, offer, and form placement.

Device split: Two benchmarks measure the mobile gap differently — and both are worth knowing. On a view-to-completion basis (Zuko, global), desktop runs at 47% versus mobile at 42% — a 5-percentage-point absolute difference. On a lead-generation-specific basis (Digital Applied, global), mobile lead-gen converts roughly 32% below desktop in relative terms — a far larger gap once you account for the lower intent of mobile visitors arriving at lead forms. These figures measure different denominators, not the same thing. What they agree on: mobile form conversion is meaningfully weaker, and if your form is not tested on a slow mobile connection, you are losing conversions that paid campaigns are paying to send. For SA-specific mobile usage context, see the post on mobile conversion optimisation in South Africa.

Source attribution: GA4's Acquisition reports show which channels drive form completions when the event is marked as a conversion. This is where form tracking pays back the setup investment — you can see which channel generates the bulk of your enquiries and which campaigns drive click volume with almost no form submissions, then shift budget accordingly. For a broader view of how to interpret these numbers, the post on conversion rate benchmarks in South Africa provides sector-level context.

Not sure which form field is ending the conversation?

Share your GA4 property access and we will map your form drop-off points, identify the field costing you the most leads, and give you a prioritised fix list — no retainer required.

Get a form drop-off analysis

POPIA and form data — what South African businesses must know

Every web form that collects personal information — name, email address, phone number — is a data processing activity governed by the Protection of Personal Information Act (POPIA). The implications for form tracking are practical and specific.

Under POPIA Section 11, there are six lawful grounds for processing personal information. Consent is one of them — but it is not the only one, and in most business enquiry scenarios it is not even the most appropriate. If a visitor submits a contact form asking for a quote, processing their information to respond is grounded in contractual necessity, not a separate consent requirement. Where you do rely on consent — for example, a newsletter sign-up checkbox on a contact form — best practice, and the most defensible approach under Section 11, is a separate, unchecked opt-in that is not a condition of submitting the enquiry, so that consent is demonstrably voluntary and specific.

The data you collect through forms must be limited to what is necessary for the stated purpose (POPIA's data minimisation principle — which, as a side note, also aligns with the conversion-rate evidence above that shorter forms convert at higher rates). Your privacy notice should state what information is collected, why, how long it is kept, and who it may be shared with. If your form data feeds into a CRM, a MailChimp-style platform, or a Google Sheets integration, those are third-party processors who must also handle the data lawfully.

From a tracking perspective, POPIA intersects with cookie consent. GA4's tracking relies on the _ga cookie, which is an analytical cookie requiring disclosure under POPIA. Your cookie banner should describe analytics tracking and allow users to decline — which means a non-trivial share of South African visitors may be excluding themselves from your GA4 data by declining consent. This is a known accuracy limitation worth flagging when interpreting form submission numbers. For a full treatment of cookie compliance, see cookie consent and analytics in South Africa.

Why South African businesses choose Growth Pulse Media for conversion tracking

Growth Pulse Media was built by someone who ran a South African ecommerce business before running an agency — which means our starting point is always the question a business owner actually asks: "Where are my leads coming from, and which ones close?" We implement form tracking as part of a CRO engagement, not as a standalone tech task, because the data only has value if someone is using it to make decisions about the form itself, the landing page, and the campaigns driving traffic to it.

Our implementation covers the full stack: GTM container setup or audit, GA4 event configuration with correct generate_lead naming for Google Ads import, GA4 → Google Ads conversion import so smart bidding learns from actual leads, and a baseline report that tells you your real form completion rate before we touch anything. We work with the platforms South African businesses actually use — WordPress with Contact Form 7, WPForms, Gravity Forms, WooCommerce checkout forms, and custom-built forms on Shopify. We do not hand off the measurement work to a junior; the same person who reads the data recommends the fixes.

Client load is deliberately limited so that every account gets senior attention. If your enquiry forms are running and you do not have confident data on how many leads they are generating and from which source, that is a solvable problem inside one sprint.

Who this is NOT for

You rely exclusively on phone calls for enquiries. If your primary conversion action is a call — and you have call tracking in place — form tracking adds measurement infrastructure you will not use. The right investment is confirming your call tracking is correctly attributed first.
You run a pure ecommerce site with no lead-generation forms. Your conversion events are purchase and add_to_cart, tracked through GA4's ecommerce schema or a Shopify GA4 integration. Form tracking is not a relevant add-on unless you also run a contact form for wholesale or B2B enquiries.
You are not yet running paid traffic and have no analytics budget. Form tracking earns its setup cost back through attribution — knowing which campaign generates leads. If your paid traffic spend is modest and your lead volume is low enough to track manually in a spreadsheet, a GTM implementation may not be the priority yet. Fix the ads first; measure them properly once they are running.
Your website does not have GTM installed and your developer is unavailable. The thank-you page method can be implemented directly in GA4 without GTM — but the more reliable methods require GTM access. If your site is locked down and no one can add a script to the header, the implementation options narrow significantly.

Ready to know exactly where your leads come from?

Tell us what forms you are running and which platforms you are on — we will scope the tracking setup and give you a clear answer on implementation time and what the data will look like once it flows.

Book a 30-minute tracking assessment

Frequently Asked Questions: Form Tracking

What is the difference between form tracking and conversion tracking?

Form tracking is a type of conversion tracking — it is the measurement of a specific user action (submitting a form) as a conversion event. Conversion tracking is the broader practice of designating any important action (purchase, phone call, form submission, file download) as a conversion in GA4 or Google Ads. When a form submission is marked as a conversion in GA4, it becomes part of your conversion tracking data and feeds into ad optimisation.

Does GA4 track form submissions automatically?

GA4's Enhanced Measurement feature attempts to track form_start and form_submit events automatically — but the results are frequently inaccurate. The system cannot distinguish successful submissions from failed ones, cannot handle AJAX-based forms reliably, and can generate false positives from third-party scripts like the Meta Pixel. For reliable data, disable the Forms toggle in Enhanced Measurement and implement form tracking through Google Tag Manager instead.

How do I track Contact Form 7 submissions in GA4?

Contact Form 7 emits a wpcf7mailsent event to the dataLayer when a form is submitted successfully. In GTM, create a Custom Event trigger and enter wpcf7mailsent as the event name. Attach a GA4 Event tag with your Measurement ID and event name (recommended: generate_lead). Publish the container, test using GTM Preview mode, and mark the event as a conversion in GA4 once it appears in your Events report.

How do I mark a form submission as a conversion in GA4?

In GA4, go to Admin (the gear icon at bottom-left) then Events. Find the event name you are using for form submissions (typically generate_lead). Toggle the Mark as conversion switch. The event will now appear in your Conversions section and, if you have linked Google Ads, will be available to import as a conversion action for smart bidding. Note: the event must have fired at least once before it appears in the Events list.

Does form tracking work with WooCommerce or Shopify checkout forms?

Checkout forms on WooCommerce and Shopify are typically tracked via ecommerce events (purchase, begin_checkout) rather than form tracking — the GA4 ecommerce schema is purpose-built for this and provides richer transaction data. Form tracking is most relevant to lead-generation forms, quote requests, contact forms, and application forms. If your WooCommerce or Shopify store also has a wholesale enquiry or B2B contact form, that form should be tracked as a separate generate_lead event alongside your ecommerce events.

Get your form tracking right — and keep it right

Growth Pulse Media implements GA4 and GTM form tracking for South African businesses using WordPress, Shopify, WooCommerce, and custom platforms. Our setup covers accurate event naming for Google Ads import, POPIA-aware configuration, and a baseline report so you know your real conversion rate from day one. No obligation — we will get back to you within 24 hours.

Talk to us about form tracking
Dirk van Greuning — Founder, Growth Pulse Media
Dirk van Greuning Founder, Growth Pulse Media

Founder of Growth Pulse Media and a specialist in South African search dominance. Dirk translates his experience in scaling South African businesses into high-velocity digital strategies for B2B and retail leaders. He writes about SEO, lead generation, and paid media from an operator's perspective — prioritising pipeline value over impressions.

Connect on LinkedIn