Skip to main content

Cognito Form GTM Event Listener

Track Cognito Form submissions in Google Tag Manager. Capture form ID, form name, email, and user data. Fire GA4 events on cognito_form_submit_successful.

cognito-formsformsgtmga4lead-generationmulti-step

Key variable

cogformID

Cognito Form

Overview

Cognito Forms is a powerful form builder with conditional logic, multi-step support, and payment integrations. This listener tracks two events: a click on the submit button (to detect attempted submissions) and a confirmed successful submission. It captures form ID, name, email, user name, and error status.

Events fired:

  • cognito_form_submit_button, submit button clicked (pre-success)
  • cognito_form_submit_successful, successful submission confirmed

Variables: cogformID, cogformName, cogInternalFormName, cogformEmail, cogFormNameObj, cogformHasError

Important: Works for embedded Cognito forms. Iframe embeds require alternative approaches.

Why Use This Listener

Two-event tracking gives you both conversion measurement (cognito_form_submit_successful) and error detection (cogformHasError on cognito_form_submit_button). You can calculate error rates and optimize form UX.

Common Use Cases

  • Track form submissions as lead conversions
  • Monitor submission error rates for form UX optimization
  • Capture email for Enhanced Conversions in Google Ads
  • Segment conversions by form name

Installation

html
<!-- GTM Custom HTML Tag: Cognito Form Listener -->
<script>
(function() {
  function cognitoPush(eventName, form) {
    window.dataLayer = window.dataLayer || [];
    var entry = form.entry;
    window.dataLayer.push({
      'event': eventName,
      'cogformID': form.id,
      'cogformName': form.name,
      'cogInternalFormName': form.name.replace(/\s+/g, ''),
      'cogformEmail': entry ? (entry.Email || entry.EmailAddress || '') : '',
      'cogFormNameObj': entry ? (entry.Name || {}) : {},
      'cogformHasError': form.hasError || false
    });
  }
  
  Cognito.on('beforeSubmit', function(event) {
    cognitoPush('cognito_form_submit_button', event.data.form);
  });
  
  Cognito.on('afterSubmit', function(event) {
    cognitoPush('cognito_form_submit_successful', event.data.form);
  });
})();
</script>

Fire on: DOM Ready.

Data Layer Output

Success Event

json
{
  "event": "cognito_form_submit_successful",
  "cogformID": "1",
  "cogformName": "Contact Us",
  "cogInternalFormName": "ContactUs",
  "cogformEmail": "user@example.com",
  "cogFormNameObj": { "First": "Jane", "Last": "Smith" },
  "cogformHasError": false
}

Triggers to Create

TriggerEvent Name
CE – Cognito Submit Successcognito_form_submit_successful
CE – Cognito Submit Attemptcognito_form_submit_button

Variables to Capture

Variable NameDL KeyExample
DLV – Cognito Form IDcogformID"1"
DLV – Cognito Form NamecogformName"Contact Us"
DLV – Cognito EmailcogformEmail"user@example.com"
DLV – Cognito Has ErrorcogformHasErrorfalse

GA4 Mapping

GA4 EventTriggerParameters
generate_leadCognito Submit Successform_id, form_name, email
form_errorCognito Submit Attempt (with error)form_id

Debugging

ProblemCauseFix
Cognito is not definedForm not loadedSwitch to Window Loaded trigger
Only works on embeddedUsing iframe embedAdd alternate approach for iframes

Related Listeners