For most Singapore SMEs, the enquiry form is where marketing turns into revenue. Someone fills in their name, picks a service and presses Send. If you cannot see those submissions in Google Analytics 4, you cannot tell which channel, campaign or page produced them, and every budget decision becomes a guess.

This guide explains how to track form submissions in GA4 and Google Tag Manager (GTM) properly. We compare the main methods, from GA4’s built-in form interactions to thank-you pages, GTM’s form submission trigger and dataLayer events from WordPress form plug-ins, then show how to mark the right event as a key event and test it before you trust the numbers.

If you are still setting up GA4 or campaign tagging, read our GA4 starter guide to conversion tracking and UTM parameters first. This article picks up from there and focuses only on forms.

Why form tracking breaks so often

Forms look simple, but they behave in very different ways behind the scenes. Some reload the page, some redirect to a thank-you page, and many modern forms send data in the background (AJAX) and show a success message without the page changing at all. Each behaviour needs a different tracking method.

The common symptoms of broken tracking are easy to spot once you know them:

  • GA4 shows more form submissions than your inbox received, often because failed or spam attempts are counted.
  • GA4 shows zero submissions even though enquiries are arriving, usually because the form never fires a standard submit event.
  • Submissions are counted twice, because two methods are running at once (for example, enhanced measurement and a GTM tag).
  • Google Ads shows conversions that do not match GA4, because each platform uses a different setup or counting rule.

The goal is one reliable event per genuine submission, with a clear name, a few useful parameters and no personal data.

The four main ways to track form submissions

There is no single best method. The right choice depends on how your form works and how much control you need. The table below compares the options.

MethodHow it worksBest forWatch out for
GA4 enhanced measurement (form interactions)GA4 automatically sends form_start and form_submit events when the setting is on.Quick visibility on simple HTML forms with no extra setup.Can miss AJAX forms and may count attempts that fail validation; hard to control.
Thank-you pageThe form redirects to a unique confirmation URL; you track views of that page.Any form that can redirect, including many plug-ins and booking tools.People can reach the page directly or reload it; exclude it from search and navigation.
GTM form submission triggerGTM listens for the browser’s submit event and fires a GA4 event tag.Standard forms where you want control over which forms and pages count.Many JavaScript forms block the native submit, so the trigger may never fire.
dataLayer event from the form or plug-inThe form (or a small script) pushes a success event into the dataLayer; GTM sends it to GA4.AJAX forms, WordPress plug-ins and embedded forms; usually the most reliable option.Needs a little developer help or plug-in support, and careful testing.

A good rule of thumb: start with a thank-you page if your form can redirect, use a dataLayer success event if it cannot, and treat enhanced measurement as a rough signal rather than your main source of truth.

Method 1: GA4 enhanced measurement form interactions

GA4’s enhanced measurement includes a “Form interactions” option. When it is switched on, GA4 sends a form_start event the first time a visitor interacts with a form in a session, and a form_submit event when a form is submitted. Both events include parameters such as form_id, form_name and form_destination, and form_submit can include the submit button text.

To check it, go to Admin > Data streams, select your web stream, open enhanced measurement settings and look for Form interactions.

It is useful as a quick check, but it has real limits. It depends on how your form is built, it may record a submit even when the form fails validation, and you cannot easily tell a contact form from a newsletter box unless the form has a clear ID or name. To use form_id or form_name in reports, you also need to register them as custom dimensions. If you build your own tracking with one of the methods below, turn this option off so the same submission is not counted twice.

Method 2: track a thank-you page

If your form can send people to a dedicated confirmation page after a successful submission, this is the simplest reliable method. Only people who have actually submitted should see a URL such as /thank-you-enquiry/.

  1. Create a thank-you page for each important form (for example, one for quotes and one for general enquiries) so you can tell them apart.
  2. Set the form or plug-in to redirect to that page after a successful submission.
  3. Mark the page noindex and keep it out of menus and sitemaps so people do not land on it by accident.
  4. In GA4, create an event (Admin > Events > Create event) that fires when page_view occurs with page_location containing your thank-you path, and name it something clear, such as generate_lead.
  5. Mark that new event as a key event once you have confirmed it is recording correctly.

The thank-you page is also a good place to set expectations: tell the visitor when you will reply and offer a WhatsApp or phone option. Our guide to landing page design for Singapore SMEs covers what makes confirmation pages useful rather than a dead end.

Method 3: Google Tag Manager’s form submission trigger

GTM includes a built-in form submission trigger that listens for the browser’s submit event. Pair it with a Google Analytics: GA4 Event tag and you can choose exactly which forms count.

Setting it up

  1. In GTM, go to Variables and enable the built-in Form variables (Form ID, Form Classes, Form Element, Form Target, Form URL and Form Text).
  2. Create a trigger of type Form Submission. Tick Check Validation so it only fires when the form’s default submission goes ahead, and limit it to the pages where the form lives.
  3. Choose Some Forms and add a condition such as Form ID equals contact-form, so newsletter or search boxes are not counted.
  4. Create a GA4 Event tag with an event name such as generate_lead and useful parameters, for example form_name and the page path. Do not include the visitor’s name, email or phone number.
  5. Test in GTM Preview mode, then publish the container.

Leave Wait for Tags off unless you have a specific reason and have tested it, because delaying the submission can interfere with how some forms work.

When this trigger does not fire

Many modern forms, including a lot of WordPress plug-ins and embedded forms, stop the browser’s native submit and send data with JavaScript instead. In that case GTM’s form trigger never sees a submission. If Preview mode shows no gtm.formSubmit event when you submit, move on to Method 4.

Method 4: dataLayer events from your form or plug-in

The most dependable approach is to have the form announce its own success. When the submission is accepted, the site pushes an event into the dataLayer, for example an event called form_submit_success with a form_name of “quote”. In GTM you create a Custom Event trigger listening for that event name and attach your GA4 Event tag to it.

How common form tools handle this

Most form tools offer one of three hooks. Check your tool’s own documentation, because details change between versions:

  • A JavaScript success event. For example, Contact Form 7 documents DOM events that fire when a message is sent successfully. A short listener script in GTM (a Custom HTML tag) can catch that event and push it into the dataLayer.
  • A confirmation redirect. Many plug-ins, such as WPForms and Gravity Forms, let you send people to a thank-you page after submission, which takes you back to Method 2.
  • Built-in integrations or callbacks. Embedded forms from CRMs and marketing platforms, such as HubSpot, often provide a submission callback or their own analytics integration. Use the vendor’s documented method instead of guessing.

If you have a developer, ask them to push the dataLayer event only after the server confirms the form was received. That single change usually fixes over-counting from spam, failed validation and double clicks.

Name the event well and mark it as a key event

Google lists a set of recommended events, and generate_lead is the one designed for lead forms. Using it (rather than inventing a new name for every form) keeps reports tidy and makes the event easier to use in Google Ads. Add parameters such as form_name so you can still split results by form.

Once the event is recording correctly, mark it as a key event in GA4 (Admin > Data display > Key events, or via the Events list). Google renamed GA4 “conversions” to “key events” in 2024; in Google Ads the term conversions is still used, and you can import GA4 key events as Google Ads conversions if you want to optimise campaigns against them.

Keep the list of key events short. If newsletter sign-ups, brochure downloads and quote requests are all key events, your lead numbers will look healthy while the sales team wonders where the leads are. For a deeper look at what each lead actually costs, see our guide to cost per conversion and how to reduce it.

Test before you trust the numbers

A tracking setup is only as good as its testing. Use this checklist every time you change a form, a plug-in or the GTM container:

  1. Open GTM Preview mode and submit the form with real-looking test details. Confirm the trigger and GA4 tag fire once.
  2. Submit the form with a required field left empty. Nothing should fire.
  3. Check GA4’s DebugView to confirm the event name and parameters arrive as expected.
  4. Compare a week of GA4 key events against the enquiries actually received in your inbox or CRM. Small gaps are normal (some visitors block analytics); large gaps mean something is wrong.
  5. Check that no personal data appears in event parameters or page URLs. Google Analytics policies do not allow personally identifiable information to be sent, and Google’s guidance explains how to avoid it.

Spam submissions can inflate numbers too. If GA4 suddenly shows a burst of leads from one country at 3am, read our guide to spotting fake and bot traffic before you celebrate.

Singapore considerations: PDPA, WhatsApp and consent

Form tracking sits close to personal data, so handle it carefully. Under the PDPA, you need a clear purpose and appropriate consent for the personal data your form collects, and that data belongs in your CRM or inbox, not in analytics. Our PDPA marketing compliance playbook covers notices, consent and the Do Not Call rules in more detail.

Many Singapore customers would rather tap a WhatsApp button than fill in a form. Track those clicks as their own event (for example, a click on a link starting with https://wa.me/) and decide whether it deserves key event status. A click is not the same as a confirmed enquiry, so label it honestly in reports. Our guide to WhatsApp Business for SMEs explains how to turn those chats into tracked sales.

How AI can help with form tracking

AI assistants can speed up the fiddly parts of this work, as long as a person checks the output:

  • Explaining your setup. Paste a GTM container export or plug-in settings into an AI assistant and ask it to list which triggers and tags fire on form pages. Verify its answer in Preview mode.
  • Drafting listener scripts. AI can draft a small dataLayer listener for your form plug-in. A developer should review it, because a broken script can stop the form working.
  • Spotting mismatches. Our AI Reporting Agent builds scheduled reports from connected data and names missing numbers instead of guessing them, which makes gaps between GA4 and your enquiries easier to notice.
  • Testing forms. The AI Website Agent can run safe test submissions where agreed and flag broken forms, so you hear about a failure before a week of leads disappears.

The limit: AI cannot see your live site’s behaviour unless it has access, and it can confidently describe settings that do not exist in your version of a tool. Always confirm in GTM Preview and GA4 DebugView.

Common mistakes to avoid

  • Running enhanced measurement form interactions and a GTM form tag at the same time, which counts each submission twice.
  • Counting every form (newsletter, search, login) as a lead.
  • Sending names, emails or phone numbers to GA4 as event parameters or in thank-you page URLs.
  • Publishing GTM changes without testing a failed submission as well as a successful one.
  • Forgetting to re-test after a plug-in update or website redesign.
  • Comparing GA4 key events with Google Ads conversions without checking that both use the same event and counting rules.

Next steps

To track form submissions in GA4 reliably, pick one method that matches how your form behaves: a thank-you page where possible, a dataLayer success event where not, and GTM’s form trigger for standard HTML forms. Name the event generate_lead, mark it as a key event, keep personal data out and test both success and failure. Then compare GA4 with real enquiries every month. Once the numbers line up, you can use them with confidence to improve your Google Ads conversion rate and decide where the next dollar should go.

Frequently asked questions

Does GA4 track form submissions automatically?

GA4’s enhanced measurement can send form_start and form_submit events automatically when Form interactions is switched on. It does not work reliably with every form, especially AJAX forms, and may count failed attempts. For lead reporting, most businesses add a thank-you page or dataLayer event as well.

What is the difference between a key event and a conversion in GA4?

Google renamed GA4 conversions to key events in 2024. A key event is an event you mark as important in GA4. In Google Ads, conversions remain the term used, and you can import GA4 key events as Google Ads conversions.

Why does GTM's form submission trigger not fire on my form?

Many modern forms send data with JavaScript and block the browser’s native submit event, so the trigger never sees it. Check GTM Preview for a gtm.formSubmit event. If it is missing, use a thank-you page redirect or a dataLayer event pushed when the form succeeds.

Can I send the form's email address to GA4?

No. Google Analytics policies do not allow personally identifiable information such as names, emails or phone numbers to be sent. Keep that data in your CRM or inbox and send only non-personal details, such as the form name, to GA4.

Should WhatsApp clicks count as leads?

Track WhatsApp button clicks as their own event, but treat them as intent rather than confirmed enquiries. Some people click and never send a message. Compare clicks with the chats you actually receive before giving them key event status.

Sources and further reading

Related guides

Browse every article in our Social Media & Growth guides.

Discover more from Marketing2u

Subscribe now to keep reading and get access to the full archive.

Continue reading