Shopify 分析与像素

Web Pixel 的 checkout 对象字段为空怎么排查

现象#

在 checkout_completed 回调里读 event.data.checkout.totalPrice 得到 undefined,lineItems 是空数组;同一段代码在商品页读 init.data.cart 却有值。

原因#

  • 结账事件的载荷在 event.data.checkout,而 init 快照里只有 cart,两个对象结构完全不同
  • 金额是 MoneyV2 对象,必须读 totalPrice.amount,直接当数字用只会拿到 undefined
  • order 节点只在结账完成后存在,购物车阶段没有订单号可读
  • 行项目商品在 merchandise.product 下,按 cart 的 items 路径取会取空

处理步骤#

  1. 先用 console.log(event.data.checkout) 看真实结构
  2. 金额取 totalPrice.amount,币种取 currencyCode
  3. 订单号取 checkout.order.id,并作为 transaction_id
  4. 遍历 lineItems,取 merchandise.product.id
  5. 把取值封装成函数并对 undefined 兜底,避免一个字段缺失让整个回调抛错

验收标准#

Pixel Helper 展开该事件能看到 totalPrice.amount 与订单号,转发到 GA4 的 value 与后台订单总额一致。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。