如何利用GTM、GA4与BigQuery发送事件数组记录列表项曝光
问题描述
我希望记录并分析列表中物品(可为产品、门店等)的曝光量,但这些物品难以适配电商字段。页面加载时我会生成事件,将其添加到DataLayer并传递给Google Tag Manager(GTM)。尝试多种方式后,目前仅能以‘Object’引用字符串的形式捕获事件中的物品。我知道电商功能有步骤可将物品转换为GTM/GA4易处理的格式,但找不到自定义事件的相关文档,恳请指导。
相关截图说明
- 1. BigQuery中捕获的输出

- 2. 生成事件的代码

- 3. 调试扩展中捕获的GTM事件

- 4. 同一扩展中捕获的GA4事件

- 5. GTM中的标签

- 6. GTM中的变量

- 7. GA4中的自定义维度

解决方案指导
针对自定义事件下的物品数据处理,可按以下步骤操作:
1. 修正DataLayer事件数据结构
确保推入DataLayer的物品数据是可序列化的对象数组,避免传递复杂对象(防止被转成'Object'字符串)。提取物品关键字段(如ID、名称、类型等),构造结构化数组:
// 示例代码 window.dataLayer.push({ event: 'item_exposure', exposed_items: [ { item_id: 'store_001', item_name: 'XX门店', item_type: 'store' }, { item_id: 'prod_002', item_name: 'XX产品', item_type: 'product' } ] });
2. GTM中配置对应变量
- 创建数据层变量,指向你定义的物品数组字段(如
exposed_items); - 若需拆分单个物品数据,用自定义JavaScript变量遍历数组,格式化GA4可接收的结构。
3. 配置GA4事件标签
在GTM的GA4事件标签中,将物品数组作为事件参数传递:
- 参数名设为
exposed_items,参数值选择对应的GTM数据层变量; - 为方便GA4解析,可通过自定义JS变量将数组转为JSON字符串:
JSON.stringify({{exposed_items}}),后续在BigQuery中可直接解析该字段分析。
4. GA4配置自定义维度(可选)
若需在GA4界面直接查看物品属性,将item_id、item_type等关键字段配置为自定义维度,关联到item_exposure事件。
关键注意事项
- 禁止在DataLayer中传递无法序列化的对象(如DOM元素、函数),仅保留纯数据字段;
- 推送DataLayer事件时,使用唯一清晰的事件名(如
item_exposure),便于GTM触发规则匹配; - 在GTM预览模式中验证数据层变量是否正确捕获数组,而非'Object'字符串。
内容的提问来源于stack exchange,提问作者James White
相关产品推荐
相关产品推荐

