mcpField
A
analytics-integration

analytics-integration

github.com/finsilabs营销与增长60116 次安装5 天前更新
代码仓库

关于 analytics-integration

analytics-integration 是面向电商开发与运营团队的技能,介绍为 Shopify、WooCommerce、BigCommerce 和自定义商店配置 GA4、Meta Pixel 与 Google Tag Manager。重点包括统一事件数据层、服务器端追踪以及浏览器和服务器事件去重。

主要功能

  1. 01配置 GA4 电商事件
  2. 02部署 Meta Pixel 与 Conversions API
  3. 03设计统一事件数据层
  4. 04设置服务器端标记
  5. 05验证并去重转化事件

适用场景

  1. 01为商店添加商品与结账事件追踪
  2. 02改善广告转化归因
  3. 03迁移到服务器端标记
  4. 04排查缺失或重复的转化事件

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill analytics-integration

安装后在 Claude Code 中输入/analytics-integration确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

tile.json
evals/data-layer-schema-and-e-commerce-events/
criteria.json
task.md
evals/meta-pixel-conversions-api-deduplication/
criteria.json
task.md
evals/spa-page-tracking-and-purchase-deduplica/
criteria.json
task.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(内置,无需编写代码):

  1. 前往 Online Store → Preferences → Google Analytics
  2. 点击 Connect your Google account 并选择 GA4 媒体资源
  3. Shopify 会自动发送所有标准电商事件:page_view、view_item、add_to_cart、begin_checkout、purchase
  4. 在 Google Analytics → Configure → Events 中,将 purchase 事件标记为转化事件

使用 GA4 探索分析结账漏斗:

  1. 在 GA4 中,前往 Explore → Funnel exploration
  2. 创建漏斗步骤:
    • 步骤 1:begin_checkout 事件
    • 步骤 2:add_shipping_info 事件
    • 步骤 3:add_payment_info 事件
    • 步骤 4:purchase 事件
  3. 这样可以准确查看购物者在结账流程中的流失环节

添加 Meta Pixel:

  1. 前往 Shopify App Store 并安装 Meta 渠道应用(免费)
  2. 按照设置向导连接 Facebook Business 账户
  3. Meta 会通过 Shopify 集成自动发送 Pixel 事件,其中包括用于服务端去重的 Conversions API

WooCommerce

安装 MonsterInsights 以接入 GA4:

  1. 从 wordpress.org 安装 MonsterInsights(提供免费版本;Pro 版每年 99 美元起,支持增强型电子商务)
  2. 前往 Insights → Settings → General 并连接你的 GA4 媒体资源
  3. 在 MonsterInsights 设置中启用 Enhanced eCommerce Tracking — 这会将 add_to_cart、begin_checkout 和 purchase 事件连同商品级数据发送到 GA4

添加 Meta Pixel:

  1. 从 wordpress.org 安装 PixelYourSite(提供免费版本;Pro 版 69 美元起)
  2. 输入 Pixel ID,并通过 Facebook 的 Business Integration 进行连接
  3. PixelYourSite 包含 WooCommerce 扩展,可跟踪 ViewContent、AddToCart、InitiateCheckout 和 Purchase 事件

验证事件是否触发:

  1. 安装 Meta Pixel Helper Chrome 扩展程序
  2. 访问商品页面并进入结账流程 — 扩展程序会显示每个页面触发的事件
  3. 在 GA4 中使用 Admin → DebugView,实时确认事件是否到达

BigCommerce

连接 GA4(内置功能):

  1. 前往 Advanced Settings → Data Solutions → Google Analytics
  2. 输入 GA4 Measurement ID(格式:G-XXXXXXXX)
  3. BigCommerce 会自动触发电子商务事件,包括包含完整订单数据的 purchase

添加 Meta Pixel:

  1. 前往 Channel Manager → Marketplace → Meta
  2. 连接你的 Facebook Business 账户
  3. 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