Forminator Form GTM Event Listener
Track WPMU Dev Forminator form submissions and errors in Google Tag Manager. Capture formId, user data (email, name, phone), and fire GA4 events on forminator_form_success.
Key variable
formIdForminator Form
Overview
Forminator is WPMU Dev's free WordPress form builder. This is one of the most feature-rich form listeners available: it captures the form ID, first name, last name, email, and phone number, making it ideal for GA4 Enhanced Conversions. It also tracks failed submissions for form error monitoring.
Events fired:
forminator_form_success, successful submission with user dataforminator_form_failed, failed submission
Variables: formId, forminator_user_data (firstname, lastname, email, phone), formData
Why Use This Listener
The user data capture makes this listener excellent for GA4 Enhanced Conversions and Meta Conversion API. You get hashed email and phone directly from the form submission.
Common Use Cases
- Track contact form and lead form completions
- Capture hashed email/phone for Enhanced Conversions
- Monitor form submission errors for UX improvement
- Send first-party data to GA4 for identity resolution
Installation
<!-- GTM Custom HTML Tag: Forminator Listener -->
<script>
(function() {
document.addEventListener('forminator:form:submit:success', function(e) {
var data = e.detail;
var formData = {};
if (data && data.formData) {
data.formData.forEach(function(field) {
formData[field.name] = field.value;
});
}
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'event': 'forminator_form_success',
'formId': data ? data.formId : '',
'forminator_user_data': {
'form_firstname': formData['name-1'] || formData['first-name'] || '',
'form_lastname': formData['name-2'] || formData['last-name'] || '',
'form_email': formData['email-1'] || formData['email'] || '',
'form_phone': formData['phone-1'] || formData['phone'] || ''
},
'formData': formData
});
});
document.addEventListener('forminator:form:submit:fail', function(e) {
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'event': 'forminator_form_failed',
'formId': e.detail ? e.detail.formId : ''
});
});
})();
</script>Fire on: DOM Ready.
Data Layer Output
Success Event
{
"event": "forminator_form_success",
"formId": "1",
"forminator_user_data": {
"form_firstname": "Jane",
"form_lastname": "Smith",
"form_email": "jane@example.com",
"form_phone": "+1234567890"
},
"formData": { "name-1": "Jane", "email-1": "jane@example.com" }
}Triggers to Create
| Trigger | Event Name |
|---|---|
| CE – Forminator Success | forminator_form_success |
| CE – Forminator Failed | forminator_form_failed |
Variables to Capture
| Variable Name | DL Key | Example |
|---|---|---|
| DLV – Forminator Form ID | formId | "1" |
| DLV – Forminator Email | forminator_user_data.form_email | "jane@example.com" |
| DLV – Forminator First Name | forminator_user_data.form_firstname | "Jane" |
| DLV – Forminator Phone | forminator_user_data.form_phone | "+1234567890" |
GA4 Mapping: Enhanced Conversions
| GA4 Event | Parameter | Value |
|---|---|---|
generate_lead | form_id | DLV – Forminator Form ID |
| Enhanced Conversions | email | DLV – Forminator Email |
| Enhanced Conversions | phone_number | DLV – Forminator Phone |
| Enhanced Conversions | first_name | DLV – Forminator First Name |
Use GTM's User-Provided Data variable for Enhanced Conversions setup.
Debugging
| Problem | Cause | Fix |
|---|---|---|
| Events not firing | Forminator JS not loaded | Switch to Window Loaded |
| User data empty | Field IDs differ | Adjust field name keys in the script |
Best Practices
- Hash email and phone before sending to GA4 Enhanced Conversions
- Monitor
forminator_form_failedas a GA4 custom event to spot form issues - Use
formIdin all GA4 parameters to enable per-form reporting