Formidable Forms GTM Event Listener
Track Formidable Forms submissions in Google Tag Manager. Capture formID and fire GA4 events on formidable_form_submitted using the frmFormComplete jQuery event.
formidable-formswordpressformsgtmga4lead-generation
Event fired
formidable_form_submittedKey variable
formIDFormidable Form
Overview
Formidable Forms is a feature-rich WordPress form builder. It dispatches a jQuery custom event frmFormComplete after a form submission is confirmed. This listener catches that event and pushes the form ID and a formidable_form_submitted event to the GTM dataLayer.
Event fired: formidable_form_submitted
Variable: formID
Common Use Cases
- Track lead form and contact form completions
- Differentiate between multiple Formidable forms using form ID
- Fire Google Ads conversions on form confirmation
- Measure form conversion rates in GA4
Installation
html
<!-- GTM Custom HTML Tag: Formidable Forms Listener -->
<script>
jQuery(document).ready(function($) {
$(document).on('frmFormComplete', function(event, form, response) {
var formID = $(form).find('input[name="form_id"]').val();
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'event': 'formidable_form_submitted',
'formID': formID
});
});
});
</script>Fire on: DOM Ready. Requires jQuery (included with WordPress).
Data Layer Output
json
{
"event": "formidable_form_submitted",
"formID": "5"
}Trigger Configuration
Trigger Type: Custom Event
Event Name: formidable_form_submitted
Variables to Capture
| Variable Name | DL Key | Example |
|---|---|---|
| DLV – FF Form ID | formID | "5" |
GA4 Mapping
| GA4 Event | Parameter | Value |
|---|---|---|
generate_lead | form_id | DLV – FF Form ID |
generate_lead | method | "formidable_forms" |
Debugging
| Problem | Cause | Fix |
|---|---|---|
| No event firing | jQuery load order | Switch to Window Loaded |
formID is undefined | Hidden input not found | Check for input[name="form_id"] in rendered HTML |
Best Practices
- Use a GTM Lookup Table to convert numeric form IDs to human-readable names
- If using Formidable for payment forms, test that the event fires after payment processing