Google Tag Manager集成Klaviyo时first_name显示undefined问题求助
问题描述
在Klaviyo中可正常收集邮箱,但first_name字段显示为undefined,无法正确保存到用户档案。
First name Listener Tag(触发条件:DOM Ready)
<script> (function () { var element = document.querySelector('input[name="firstname"]') element.addEventListener("blur", function(e) { dataLayer.push({ 'event': 'first_name', 'first_name': e.target.value }); }, true); })(); </script>
Klaviyo Tracking Tag(触发条件:自定义事件>所有自定义事件)
<script async type="text/javascript" src="//static.klaviyo.com/onsite/js/klaviyo.js?company_id=$$$$$" ></script> <script> var _learnq = _learnq || []; _learnq.push(['identify', { '$email' : '{{dlv - email}}', '$first_name' : '{{dlv - first_name}}' }]); </script>
Tag Assistant Data Layer
{ event: "gtm.load", gtm: { uniqueEventId: 21, start: 1719803388240, element: "HTMLDivElement: html.html_boxed.responsive.av-preloader" + "-enabled.av-default-lightbox.html_header_top.html_logo_" + "left.html_main_nav_header.html_menu_right.html_large.ht" + "ml_header_sticky.html_header_shrinking_disabled.html_mo" + "bile_menu_tablet.html_header_searchicon_disabled.html_c" + "ontent_align_center.html_header_unstick_top.html_header" + "_stretch_disabled.html_av-overlay-side.html_av-overlay-" + "side-classic.html_av-submenu-noclone.html_entry_id_154." + "av-cookies-no-cookie-consent.av-no-preview.html_text_me" + "nu_active.avia_desktop.js_active.avia_transform.avia_tr" + "ansform3d.avia-webkit.avia-webkit-83.avia-chrome.avia-c" + "hrome-83 > body.page-template-default.page.page-id-154." + "rtl_columns.boxed.quattrocento.lora.theme-enfold.woocom" + "merce-js#top > div#wrap_all > div.all_colors#main > div" + ".avia-section.main_color.avia-section-default.avia-no-b" + "order-styling.avia-bg-style-scroll.avia-builder-el-1.el" + "_after_av_section.el_before_av_section.container_wrap.f" + "ullsize#av_section_2 > div.container", elementClasses: "container", elementId: "", elementTarget: "", triggers: "3,4,5", elementUrl: "" }, first_name: "dwdwdwd", email: "wdwd@fwefef" }
解决方案
修正GTM变量配置
- 检查
first_name对应的Data Layer Variable:确保变量名设置为first_name(与dataLayer中的key完全一致),调用时使用{{first_name}}而非{{dlv - first_name}}(移除多余空格和无效前缀,除非你特意命名了带该前缀的变量)。 - 同步确认
email变量的配置正确性,保证{{dlv - email}}能正常读取dataLayer中的email值。
- 检查
优化标签触发条件
- 将Klaviyo Tracking Tag的触发条件从“所有自定义事件”调整为仅
first_name事件和邮箱相关的自定义事件(比如email_submit),避免标签在字段未完全加载时触发,确保调用identify时目标字段已存在于dataLayer。
- 将Klaviyo Tracking Tag的触发条件从“所有自定义事件”调整为仅
验证输入框匹配
- 确认页面中姓名输入框的
name属性确实是firstname,如果实际属性为first_name或其他值,需修改Listener中的document.querySelector('input[name="firstname"]')为对应值。
- 确认页面中姓名输入框的
调试参数传递
- 使用Klaviyo Onsite Debugger查看
identify调用的实际参数,确认$first_name是否被正确传递。若参数为空,检查GTM变量的取值逻辑是否正常。
- 使用Klaviyo Onsite Debugger查看
合并用户标识逻辑
- 允许多次调用
identify(Klaviyo会自动合并同一用户的档案),可以在邮箱事件触发时同步带上已输入的first_name值,或在姓名输入完成时检查email是否已存在,确保用户标识的完整性。
- 允许多次调用
内容的提问来源于stack exchange,提问作者user25882303
相关产品推荐
相关产品推荐

