mcpField
A
analytics-integration

analytics-integration

github.com/finsilabsマーケティング・グロース60116 回インストール6 日前に更新
リポジトリ

analytics-integration について

analytics-integrationは、Shopify、WooCommerce、BigCommerce、独自ストアにGA4、Meta Pixel、Google Tag Managerを設定するためのスキルです。共通イベントデータレイヤー、サーバーサイド計測、ブラウザーとサーバー間のイベント重複排除を扱います。

主な機能

  1. 01GA4のコマースイベント設定
  2. 02Meta 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)を使用して、eコマース向けの堅牢なアナリティクススタックを実装します。商品やチェックアウトのイベントに対応した構造化データレイヤーの設計、データ精度の向上とブラウザーの制限の回避を目的としたGTMサーバーコンテナによるサーバーサイドタグ設定、信頼性の高い広告アトリビューションを実現するMeta Conversions APIを扱います。

このスキルを使用するタイミング

  • 新規または既存のストアにGA4のeコマーストラッキング(商品閲覧、カートへの追加、チェックアウトの各ステップ、購入)を追加するとき
  • 広告アトリビューションを改善するため、Meta PixelとConversions APIを併用したデュアルモードのイベント配信を実装するとき
  • データ管理とCookieの有効期間を改善するため、GTMウェブコンテナをサーバーサイドコンテナに移行するとき
  • 広告ブロッカーやクライアントサイドの障害によってコンバージョンイベントが欠落または重複する問題をトラブルシューティングするとき
  • ブラウザーイベントとサーバーイベント間のサーバーサイド重複排除を求めるプライバシー要件に対応するとき

基本的な手順

ステップ1:プラットフォームと推奨される方法を決定する
プラットフォーム推奨されるアナリティクスの設定主な操作
Shopify組み込みのGA4連携+GTMアプリOnline Store → Preferences → Google AnalyticsでGA4を接続します。Meta PixelにはGTM4WPまたは公式のGoogle & YouTubeチャネルアプリをインストールします
WooCommerceGA4用MonsterInsightsプラグイン+GTMGA4用にMonsterInsights(無料プランまたは年額99ドルからのPro)をインストールします。拡張eコマースイベント用に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は標準のeコマースイベント(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ビジネスアカウントを接続します
  3. MetaはShopify連携を通じて、サーバーサイドの重複排除に対応するConversions APIを含むピクセルイベントを自動的に送信します

WooCommerce

GA4 用に MonsterInsights をインストールする:

  1. wordpress.org から MonsterInsights をインストールします(無料プランあり。年額 99 ドルからの Pro では拡張 e コマース機能が追加されます)
  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 には、ViewContent、AddToCart、InitiateCheckout、Purchase イベントに対応する WooCommerce 拡張機能が含まれています

イベントが発火していることを確認する:

  1. Chrome 拡張機能の Meta Pixel Helper をインストールします
  2. 商品ページとチェックアウトページにアクセスします。拡張機能に、各ページで発火したイベントが表示されます
  3. GA4 で Admin → DebugView を使用して、イベントがリアルタイムで届いていることを確認します

BigCommerce

GA4 を接続する(組み込み機能):

  1. Advanced Settings → Data Solutions → Google Analytics に移動します
  2. GA4 Measurement ID を入力します(形式:G-XXXXXXXX)
  3. BigCommerce は、注文データ全体を含む purchase などの e コマースイベントを自動的に発火します

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,
    }],
  },
});

購入イベント(注文の確定後に発火させ、サーバーで生成した注文 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 月以降、EU のトラフィックでは必須です):

// 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"}}]}'

ベストプラクティス

  • 各 e コマースイベントを送信する前に ecommerce: null を設定します — GTM はデータレイヤーのオブジェクトをマージするため、前のイベントの古い item 配列が次のイベントに混入します
  • サーバーで生成した注文 ID を transaction_id として使用します — クライアント側では生成しないでください。ブラウザーとサーバーの両方でイベントが発火した場合に、重複排除が機能します
  • 支払い後の Webhook から Conversions API イベントを送信します — Webhook による配信は、チェックアウト中にクライアントが fetch 呼び出しを完了するよりも信頼性が高いです
  • べき等性チェックで purchase イベントの発火を制御します — 発火済みの transaction_id 値を sessionStorage に保存し、確認ページが再読み込みされた場合は再発火をスキップします
  • ステージングには GTM 環境を使用します — QA トラフィックが本番レポートに混入しないよう、ステージング環境で GTM の変更をテストします

よくある問題

問題解決策
GA4 で購入イベントが重複するプッシュする前に sessionStorage.getItem('purchase_fired_' + order.id) を確認し、プッシュが発火した後に値を設定します
GTM で items 配列が空になるイベントの前に { ecommerce: null } をプッシュし忘れています。GTM は前の items 配列をキャッシュします
Meta Pixel と Conversions API の両方でコンバージョンがカウントされる一致する eventID(ブラウザー)と event_id(サーバー)を渡します。Meta はこのフィールドで重複を排除します
Shopify の GA4 ファネルにデータが表示されないOnline Store → Preferences の GA4 Measurement ID がプロパティと一致することを確認します。GA4 DebugView でイベントが発火していることを確認します
MonsterInsights が WooCommerce の注文をトラッキングしないPro ライセンスが有効であることを確認します(Enhanced eCommerce には Pro が必要です)。インストール後にキャッシュプラグインをクリアします

関連スキル

  • @webhook-architecture
  • @erp-integration
  • @email-service-integration
  • @gdpr-ecommerce

コメント