GTM跟踪Elementor Pro 表单提交事件
问题:原来一直用GTM跟踪Elementor pro表单,表单提交显示Your submission was successful.文本时,触发表单跟踪转化。如果浏览器视图内,没有可视化到Your submission was successful.文本,则会导致GTM跟踪失败,导致谷歌后台统计转化和真实询盘数对不上问题
新方案:采用Elementor Pro表单提交成功后,监听表单提交成功事件来触发转化,做到100%数据对齐。

监听失败核心原因:JQuery 依赖与执行顺序
Elementor 的前端逻辑高度依赖 jQuery,而 elementorPro/form/success 是一个基于 jQuery 的自定义事件。你使用的原生 JS addEventListener 有时无法直接捕捉到 jQuery 抛出的自定义事件。
解决方案:改用 jQuery 监听方式
<script>
jQuery(document).ready(function($) {
// 1. 监听“开始填表” (Session 级别排重)
$(document).on(‘focus keydown’, ‘.elementor-form input, .elementor-form textarea, .elementor-form select’, function() {
var $form = $(this).closest(‘.elementor-form’);
//所有表单name一致时,GA4 显示 1 个 Started(该用户的整体询价意图),1 个 Success,转化率 100%,更能真实反应获客能力
var formId = $form.attr(‘name’) || $form.closest(‘.elementor-widget-form’).data(‘id’);
// 构造一个唯一的 Session Key,例如:form_started_contact_form
var sessionKey = ‘form_started_’ + formId;
// 检查 sessionStorage 中是否存在该标记
if (!sessionStorage.getItem(sessionKey)) {
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
‘event’: ‘elementor_form_action’,
‘form_id’: formId,
‘form_status’: ‘started’,
‘conversion_value’: 0.0,
‘error_detail’: ”
});
// 存入 sessionStorage,标记该表单在此会话中已触发
sessionStorage.setItem(sessionKey, ‘true’);
console.log(‘会话内首次交互:’ + formId);
}
});
// 监听成功和失败事件
$(document).on(‘submit_success submit_error’, ‘.elementor-form’, function(event, response) {
var isSuccess = event.type === ‘submit_success’;
var errorMsg = ”;
// 如果失败,尝试从 response 中提取详细信息
if (!isSuccess) {
if (response && response.data && response.data.message) {
// 提取后端返回的具体错误信息(如:邮箱格式不正确)
errorMsg = response.data.message;
} else if (response && response.statusText) {
// 提取服务器状态错误(如:Internal Server Error)
errorMsg = response.statusText;
} else {
errorMsg = ‘Unknown validation or server error’;
}
}
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
‘event’: ‘elementor_form_action’,
‘form_id’: $(this).attr(‘name’) || $(this).closest(‘.elementor-widget-form’).data(‘id’) || ‘transformer_form’,
‘form_status’: isSuccess ? ‘success’ : ‘error’,
‘conversion_value’: isSuccess ? 1.0 : 0.0,
‘error_detail’: errorMsg // 这里现在会显示具体的错误内容
});
if (!isSuccess) {
console.error(‘Elementor 表单提交失败详情:’, errorMsg);
} else {
console.log(‘Elementor 表单提交成功’);
}
});
});
</script>
代码适用场景:仅适用于表单提交无跳转感谢页场景。如果你的 Elementor 表单提交成功的同时设置了“提交后跳转到感谢页(Redirect)”,由于页面跳转极快,JS 代码可能还没来得及把数据推送到 dataLayer,上面的代码可能会触发失败。
常见排查手段:
1.开启 GTM 预览模式:在 Tag Assistant 中看左侧栏,当你点提交时,有没有出现 form_submitted_success 这个事件?
- 如果没有:说明上面的 JS 代码压根没运行。
- 如果有但 Tag 触发:说明是 GTM 内部触发器逻辑或变量设置问题。
2.强制测试:直接在浏览器控制台输入 window.dataLayer.push({'event': 'form_submitted_success'}); 然后看 GTM 预览模式。如果这都没反应,说明 GTM 基础代码安装有问题。