关于 analytics-integration
analytics-integration 是面向电商开发与运营团队的技能,介绍为 Shopify、WooCommerce、BigCommerce 和自定义商店配置 GA4、Meta Pixel 与 Google Tag Manager。重点包括统一事件数据层、服务器端追踪以及浏览器和服务器事件去重。
主要功能
- 01配置 GA4 电商事件
- 02部署 Meta Pixel 与 Conversions API
- 03设计统一事件数据层
- 04设置服务器端标记
- 05验证并去重转化事件
适用场景
- 01为商店添加商品与结账事件追踪
- 02改善广告转化归因
- 03迁移到服务器端标记
- 04排查缺失或重复的转化事件
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ finsilabs/ awesome-ecommerce-skills --skill analytics-integration安装后在 Claude Code 中输入/analytics-integration确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
tile.jsonevals/data-layer-schema-and-e-commerce-events/criteria.jsontask.mdevals/meta-pixel-conversions-api-deduplication/criteria.jsontask.mdevals/spa-page-tracking-and-purchase-deduplica/criteria.jsontask.md详细介绍
分析集成
概述
使用 Google Analytics 4(GA4)、Meta Pixel 和 Google Tag Manager(GTM)构建稳健的电商分析体系。涵盖商品和结账事件的结构化数据层设计、通过 GTM 服务端容器进行服务端标记以提高数据准确性并绕过浏览器限制,以及用于可靠广告归因的 Meta Conversions API。
何时使用此技能
- 为新店铺或现有店铺添加 GA4 电商跟踪(商品浏览、加入购物车、结账步骤、购买)时
- 同时实施 Meta Pixel 和 Conversions API,采用双模式事件传递以改善广告归因时
- 将 GTM Web 容器迁移到服务端容器,以更好地控制数据和延长 Cookie 生命周期时
- 排查由广告拦截器或客户端故障导致的转化事件缺失或重复问题时
- 满足要求对浏览器端和服务端事件进行去重的隐私要求时
核心说明
步骤 1:确定平台和推荐方案
| 平台 | 推荐的分析设置 | 关键操作 |
|---|---|---|
| Shopify | 内置 GA4 集成 + GTM 应用 | 在 Online Store → Preferences → Google Analytics 中连接 GA4;安装 GTM4WP 或官方 Google & YouTube 渠道应用以配置 Meta Pixel |
| WooCommerce | 使用 MonsterInsights 插件配置 GA4 + GTM | 安装 MonsterInsights(免费版或每年 $99 起的 Pro 版)配置 GA4;安装 WooCommerce Google Analytics Integration(免费)以跟踪增强型电商事件 |
| BigCommerce | 原生 GA4 集成 + 渠道管理器 | 在 Advanced Settings → Data Solutions → Google Analytics 中连接 GA4;使用渠道管理器中的 BigCommerce's Meta Pixel integration |
| 自定义 / 无头架构 | GTM 容器 + 服务端容器 + 自定义数据层 | 实现规范数据层,在 Cloud Run 或 Vercel 上部署 GTM 服务端容器,并从后端添加 Meta Conversions API |
步骤 2:针对平台设置分析
Shopify
连接 GA4(内置,无需编写代码):
- 前往 Online Store → Preferences → Google Analytics
- 点击 Connect your Google account 并选择 GA4 媒体资源
- Shopify 会自动发送所有标准电商事件:
page_view、view_item、add_to_cart、begin_checkout、purchase - 在 Google Analytics → Configure → Events 中,将
purchase事件标记为转化事件
使用 GA4 探索分析结账漏斗:
- 在 GA4 中,前往 Explore → Funnel exploration
- 创建漏斗步骤:
- 步骤 1:
begin_checkout事件 - 步骤 2:
add_shipping_info事件 - 步骤 3:
add_payment_info事件 - 步骤 4:
purchase事件
- 步骤 1:
- 这样可以准确查看购物者在结账流程中的流失环节
添加 Meta Pixel:
- 前往 Shopify App Store 并安装 Meta 渠道应用(免费)
- 按照设置向导连接 Facebook Business 账户
- Meta 会通过 Shopify 集成自动发送 Pixel 事件,其中包括用于服务端去重的 Conversions API
WooCommerce
安装 MonsterInsights 以接入 GA4:
- 从 wordpress.org 安装 MonsterInsights(提供免费版本;Pro 版每年 99 美元起,支持增强型电子商务)
- 前往 Insights → Settings → General 并连接你的 GA4 媒体资源
- 在 MonsterInsights 设置中启用 Enhanced eCommerce Tracking — 这会将
add_to_cart、begin_checkout和purchase事件连同商品级数据发送到 GA4
添加 Meta Pixel:
- 从 wordpress.org 安装 PixelYourSite(提供免费版本;Pro 版 69 美元起)
- 输入 Pixel ID,并通过 Facebook 的 Business Integration 进行连接
- PixelYourSite 包含 WooCommerce 扩展,可跟踪
ViewContent、AddToCart、InitiateCheckout和Purchase事件
验证事件是否触发:
- 安装 Meta Pixel Helper Chrome 扩展程序
- 访问商品页面并进入结账流程 — 扩展程序会显示每个页面触发的事件
- 在 GA4 中使用 Admin → DebugView,实时确认事件是否到达
BigCommerce
连接 GA4(内置功能):
- 前往 Advanced Settings → Data Solutions → Google Analytics
- 输入 GA4 Measurement ID(格式:
G-XXXXXXXX) - BigCommerce 会自动触发电子商务事件,包括包含完整订单数据的
purchase
添加 Meta Pixel:
- 前往 Channel Manager → Marketplace → Meta
- 连接你的 Facebook Business 账户
- BigCommerce 原生发送 Pixel 事件,并支持 Conversions API,以便在服务器端进行去重
自定义 / 无头架构
先设计规范的数据层 — 无论由哪个供应商接收,每个事件都遵循相同的结构:
// dataLayer must be initialized in <head> before GTM loads
window.dataLayer = window.dataLayer || [];
// Always clear ecommerce before pushing a new event (prevents GTM from merging stale items)
window.dataLayer.push({ ecommerce: null });
window.dataLayer.push({
event: 'add_to_cart',
ecommerce: {
currency: 'USD',
value: product.price * quantity,
items: [{
item_id: product.sku,
item_name: product.name,
item_brand: product.brand,
item_category: product.category,
price: product.price,
quantity,
}],
},
});
Purchase 事件(订单确认后触发,使用服务器生成的订单 ID 作为 transaction_id):
window.dataLayer.push({ ecommerce: null });
window.dataLayer.push({
event: 'purchase',
ecommerce: {
transaction_id: order.id, // Must be unique — deduplicate browser + server events
value: order.total,
tax: order.tax,
shipping: order.shippingCost,
currency: order.currency,
coupon: order.couponCode || '',
items: order.lineItems.map(line => ({
item_id: line.sku,
item_name: line.name,
price: line.unitPrice,
quantity: line.qty,
})),
},
});
使用 Conversions API 去重的 Meta Pixel — 使用共享的 event_id,从浏览器和服务器发送相同事件:
// Browser — pass event_id for deduplication
const eventId = `purchase_${order.id}`;
fbq('track', 'Purchase', {
value: order.total,
currency: order.currency,
content_ids: order.lineItems.map(l => l.sku),
content_type: 'product',
}, { eventID: eventId });
// Send eventId to server for the Conversions API mirror
await fetch('/api/analytics/meta-purchase', {
method: 'POST',
body: JSON.stringify({ orderId: order.id, eventId }),
});
// Server-side Conversions API (Node.js)
import { ServerEvent, EventRequest, UserData, CustomData } from 'facebook-nodejs-business-sdk';
export async function sendMetaPurchase(order, eventId, userAgent, ipAddress) {
const userData = new UserData()
.setEmail(order.customerEmail) // Automatically hashed by SDK
.setClientIpAddress(ipAddress)
.setClientUserAgent(userAgent);
const customData = new CustomData()
.setValue(order.total)
.setCurrency(order.currency)
.setContentIds(order.lineItems.map(l => l.sku));
const serverEvent = new ServerEvent()
.setEventName('Purchase')
.setEventTime(Math.floor(Date.now() / 1000))
.setUserData(userData)
.setCustomData(customData)
.setEventId(eventId) // Matches browser eventID — Meta deduplicates automatically
.setActionSource('website');
await new EventRequest(process.env.META_ACCESS_TOKEN, process.env.META_PIXEL_ID)
.setEvents([serverEvent])
.execute();
}
初始化 Google Consent Mode v2(截至 2024 年 3 月,欧盟流量必须启用):
// Must run BEFORE GTM or gtag.js loads
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('consent', 'default', {
ad_storage: 'denied',
ad_user_data: 'denied',
ad_personalization: 'denied',
analytics_storage: 'denied',
wait_for_update: 500, // Wait for CMP to update consent
});
// After user accepts cookies via your CMP:
gtag('consent', 'update', {
ad_storage: preferences.marketing ? 'granted' : 'denied',
ad_user_data: preferences.marketing ? 'granted' : 'denied',
analytics_storage: preferences.analytics ? 'granted' : 'denied',
});
部署前验证事件:
# GA4 Measurement Protocol validation (returns hit validation report)
curl -X POST \
"https://www.google-analytics.com/debug/mp/collect?measurement_id=G-XXXXXXXX&api_secret=YOUR_SECRET" \
-H "Content-Type: application/json" \
-d '{"client_id":"test-123","events":[{"name":"purchase","params":{"transaction_id":"T-001","value":59.99,"currency":"USD"}}]}'
最佳实践
- 每次推送电子商务数据前清除
ecommerce: null— GTM 会合并数据层对象,因此上一个事件遗留的商品数组会污染下一个事件 - 使用服务器生成的订单 ID 作为
transaction_id— 切勿在客户端生成;这样可确保浏览器和服务器事件同时触发时能够正确去重 - 通过付款后的 webhook 发送 Conversions API 事件 — 与结账期间由客户端完成 fetch 调用相比,webhook 的投递更可靠
- 通过幂等性检查控制
purchase事件 — 在 sessionStorage 中保存已触发的transaction_id值;如果重新加载确认页面,则跳过再次触发 - 使用 GTM 环境进行预发布测试 — 在预发布环境中测试 GTM 更改,避免 QA 流量污染线上报告
常见问题
| 问题 | 解决方案 |
|---|---|
| GA4 中出现重复的 purchase 事件 | 推送前检查 sessionStorage.getItem('purchase_fired_' + order.id);推送触发后设置该值 |
| GTM 中的商品数组为空 | 忘记在事件前推送 { ecommerce: null } — GTM 会缓存上一个商品数组 |
| Meta Pixel 和 Conversions API 都重复统计转化 | 传递匹配的 eventID(浏览器)和 event_id(服务器)— Meta 会根据此字段去重 |
| Shopify GA4 漏斗没有数据显示 | 确认 Online Store → Preferences 中的 GA4 Measurement ID 与你的媒体资源一致;检查 GA4 DebugView,确认事件是否触发 |
| MonsterInsights 未跟踪 WooCommerce 订单 | 确保 Pro 许可证已激活(增强型电子商务需要 Pro);安装后清除所有缓存插件 |
相关技能
- @webhook-architecture
- @erp-integration
- @email-service-integration
- @gdpr-ecommerce
评论
支持 Markdown