← All Guides

Fluent Forms Tracking with Google Tag Manager: GA4, Google Ads Enhanced Conversions and Meta

Track WordPress Fluent Forms submissions in Google Tag Manager using the fluentform_submission_success event. Push the form ID and contact details to the dataLayer and fire GA4, Google Ads and Meta on real submissions only.

Atiqul Islam
Written by Atiqul Islam

Tracking & analytics specialist. 278+ GTM, GA4 and server-side tracking projects for clients in the US, UK and Australia.

Rather not do this yourself? I set this up for clients every week. Free 15-minute audit, no obligation.

Book a Free Audit

Fluent Forms has become a popular Gravity Forms alternative, and it behaves well for tracking: every submission goes through AJAX and the plugin fires a fluentform_submission_success event with the form configuration attached. This guide shows how to capture that event in Google Tag Manager and send it to GA4, Google Ads and Meta.

How Fluent Forms Confirms a Submission

On success, Fluent Forms triggers a jQuery event on the document named fluentform_submission_success. The event data includes the form element and a config object containing the form ID. The form stays on the page until the confirmation message replaces it, so field values are still readable at that moment.

Step 1: The Listener Tag

Create a Custom HTML tag named Listener - Fluent Forms Success on All Pages:

<script>
(function () {
  if (!window.jQuery) { return; }
  jQuery(document).on('fluentform_submission_success', function (event, data) {
    var form = data && data.form && data.form[0] ? data.form[0] : null;
    var formId = data && data.config && data.config.id ? String(data.config.id) : '';
    var email = form ? form.querySelector('input[type="email"]') : null;
    var phone = form ? form.querySelector('input[type="tel"]') : null;

    window.dataLayer = window.dataLayer || [];
    window.dataLayer.push({
      event: 'form_submit_success',
      form_tool: 'fluent_forms',
      form_id: formId,
      user_email: email && email.value ? email.value.trim().toLowerCase() : undefined,
      user_phone: phone && phone.value ? phone.value.trim() : undefined
    });
  });
})();
</script>

If a form has no email field of type email, for example a plain text field used for email, change the selector to match the field's name attribute.

Step 2: Variables and Trigger

Data Layer Variables: form_id, user_email, user_phone. Custom Event trigger: form_submit_success. To track one form only, add a condition on form_id matching the ID in the Fluent Forms admin list.

Step 3: Tags

Step 4: Test

  1. GTM Preview, submit the form. Confirm form_submit_success with the correct form_id.
  2. Confirm one fire each for GA4, Google Ads and Meta.
  3. Check the Google Ads request in a tag debugger such as the Insighter Debugger extension for the label and hashed user data.
  4. Submit a form that fails validation. Nothing should fire.

Troubleshooting

Summary

Fluent Forms is one of the easier plugins to track correctly. One listener, one dataLayer event, three tags, and you have accurate leads in GA4, Google Ads and Meta with Enhanced Conversions attached.

Frequently Asked Questions

Does Fluent Forms need any setting changed for this to work?

No. Fluent Forms always submits by AJAX and fires fluentform_submission_success on success, in both the free and Pro versions.

Can I use Fluent Forms' own Google Analytics integration?

Fluent Forms Pro has analytics options, but routing through GTM gives you GA4, Google Ads Enhanced Conversions and Meta from one event, and keeps every tag in one container you can test.

How do I track conversational forms?

Conversational Fluent Forms fire the same success event. The listener below handles both layouts.

What if my form redirects after submission?

The event fires before the redirect, so tags usually complete. If you see losses, switch the confirmation to a message, or use a Page View trigger on the redirect page as a fallback.

Can I track payment forms?

Yes. For Stripe or PayPal payment forms, consider firing a purchase event with the amount instead of a lead event. The payment amount is available in the form fields at submission time.

Want This Done Right the First Time?

Book a free 15-minute audit call. I'll review your setup, show you what is broken, and tell you exactly what it takes to fix it.

Chat Now