如何用jQuery绑定多表单gform_confirmation_loaded事件追踪Gravity Forms
解决多Gravity Forms表单的GTM追踪问题
你当前的事件监听代码本身就支持追踪所有表单,不需要额外为每个表单单独绑定事件,原因如下:
- 你的代码是把
gform_confirmation_loaded事件绑定在全局的document对象上,属于事件委托模式,不管页面上有多少个表单,只要表单提交后触发了这个事件并传入对应的formID,回调函数都会捕获到。 - 回调函数里的
formID参数会自动接收触发时传入的表单ID值(比如你测试的5或38),并将其推入dataLayer,GTM可以通过这个参数区分不同表单的提交行为。
若其他表单未触发追踪,排查方向:
- 确认表单提交方式:
gform_confirmation_loaded事件仅在Gravity Forms使用AJAX提交时触发。如果某个表单是页面刷新式提交,这个事件不会执行,需要改用其他追踪方式(比如监听页面加载时的URL表单提交参数)。 - 检查动态表单加载情况:如果表单是通过JS动态渲染到页面的,你当前绑定在
document上的监听逻辑依然有效,但要确保你的代码在DOM就绪后执行(你已经用jQuery(document).ready包裹,这一点没问题)。
代码优化建议(可选)
jQuery 1.7+版本推荐用on方法替代bind,写法更规范,功能一致:
jQuery(document).ready(function(){ jQuery(document).on("gform_confirmation_loaded", function(event, formID){ window.dataLayer = window.dataLayer || []; window.dataLayer.push({ 'event': "dn_form_submit", 'formID': formID }); }); });
GTM配置补充
在GTM中创建触发器时:
- 选择「自定义事件」,事件名填
dn_form_submit - 如果需要单独追踪特定表单,可添加触发条件:
formID等于目标表单的ID(比如38)
内容的提问来源于stack exchange,提问作者Dinizworld
相关产品推荐
相关产品推荐

