2026年9月29日

2026年9月29日

WordPress(WooCommerce)のeコマーストラッキングをGA4で設定する方法

WordPressのネットショップでGA4のeコマーストラッキングを設定するには、「商品閲覧・カート追加・購入」などをGA4の推奨イベント名と決められたパラメータで送ることが要点です。WooCommerceなら、まずは連携プラグインで基本のイベントを送り、足りない部分だけをGoogleタグマネージャー(GTM)や子テーマのコードで補う進め方が安全です。この記事では、送るべきイベントの全体像、プラグインでの設定、コードで購入イベントを送る例、重複計測を防ぐ方法、正しく届いているかの確認手順までを説明します。

GA4のeコマース計測で送るイベント

GA4では、eコマース用の「推奨イベント」があらかじめ定義されています。名前やパラメータを独自に決めると、GA4の「収益化」系のレポートに集計されないため、公式の名前に合わせることが出発点です。

主なイベントは次のとおりです。

  • view_item_list:商品一覧(カテゴリページなど)を表示した
  • select_item:一覧から商品を選んだ
  • view_item:商品詳細ページを表示した
  • add_to_cart / remove_from_cart:カートに追加・削除した
  • view_cart:カートを表示した
  • begin_checkout:購入手続きを開始した
  • add_shipping_info / add_payment_info:配送情報・支払い情報を入力した
  • purchase:購入が完了した
  • refund:返金した

どのイベントにも、currency(通貨コード、例: JPY)、value(金額)、items(商品の配列)を付けるのが基本です。itemsの各要素にはitem_idかitem_nameのどちらかが必要で、priceやquantity、item_categoryなども付けられます。purchaseでは、注文を一意に識別するtransaction_idが重要です。GA4はこの値を使って同じ購入の重複を抑えるため、WooCommerceの注文番号などを入れます。

仕様の細部は更新されることがあるので、実装前にGoogleのデベロッパー向けドキュメント「eコマースの測定」を確認してください(2026年10月現在)。

方法1:連携プラグインで設定する

WooCommerceとGA4をつなぐ主な選択肢は次のとおりです。

  • Google Analytics for WooCommerce:WooCommerce開発元が提供する連携プラグインで、GA4のeコマースイベントを送る機能があります。
  • GTM4WP(GTM for WordPress):GTMのコンテナを設置し、WooCommerceのデータをdataLayerにGA4形式で出力できるプラグインです。GTM側でGA4のイベントタグを組む前提になります。
  • MonsterInsights:eコマース計測は有料版の機能として提供されています。

どのプラグインで、どのイベントまで送れるかはバージョンや無料版・有料版の区分で変わります。導入前にプラグインの説明ページで対応イベントを確認してください。

プラグインで設定するときの注意点は、GA4のタグを二重に入れないことです。テーマの設定欄、Site Kit by Google、別のプラグインなどですでにGA4のタグ(G-から始まる測定ID)を入れていると、ページビューや購入が二重に計測されます。プラグインを入れる前に、ページのソースや開発者ツールで既存のタグを洗い出し、出力元を1つに絞ります。

方法2:GTMで送る

GTMを使う場合は、プラグインやコードでdataLayerにeコマースデータを積み、GTMのGA4イベントタグで送ります。GA4のイベントタグには、dataLayerのecommerceオブジェクトをそのまま送る設定があり、項目を1つずつ変数にしなくても済みます(設定項目の名前は画面の更新で変わることがあります)。

dataLayerにeコマースデータを積む前には、前回のデータが残らないようにecommerceをnullでクリアしておくのが定石です。

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({ ecommerce: null }); // 前のイベントのデータをクリア
window.dataLayer.push({
  event: 'add_to_cart',
  ecommerce: {
    currency: 'JPY',
    value: 3300,
    items: [{
      item_id: 'SKU-001',
      item_name: 'サンプル商品',
      price: 3300,
      quantity: 1
    }]
  }
});

GTMのトリガーはカスタムイベントadd_to_cartなどで作り、イベント名もGA4の推奨名に合わせます。

方法3:子テーマのコードで購入イベントを送る

プラグインを増やしたくない場合や、購入イベントだけを細かく制御したい場合は、WooCommerceのサンクスページでpurchaseを送るコードを書けます。以下はGA4のタグ(gtag.js)がすでにサイトに設置されている前提の例です。作業前にバックアップを取り、ステージング環境でテスト注文をして確認してください。

<?php
// 子テーマの functions.php または mu-plugin に記述
add_action( 'woocommerce_thankyou', 'mysite_ga4_purchase_event', 20 );

function mysite_ga4_purchase_event( $order_id ) {
	if ( ! $order_id ) {
		return;
	}

	$order = wc_get_order( $order_id );
	if ( ! $order ) {
		return;
	}

	// 失敗した注文や、すでに送信済みの注文は送らない
	if ( $order->has_status( 'failed' ) || $order->get_meta( '_mysite_ga4_sent' ) ) {
		return;
	}

	$items = array();
	foreach ( $order->get_items() as $item ) {
		$product = $item->get_product();
		$items[] = array(
			'item_id'   => $product && $product->get_sku() ? $product->get_sku() : (string) $item->get_product_id(),
			'item_name' => $item->get_name(),
			'price'     => (float) $order->get_item_total( $item, false ),
			'quantity'  => (int) $item->get_quantity(),
		);
	}

	$payload = array(
		'transaction_id' => (string) $order->get_order_number(),
		'currency'       => $order->get_currency(),
		'value'          => (float) $order->get_total(),
		'tax'            => (float) $order->get_total_tax(),
		'shipping'       => (float) $order->get_shipping_total(),
		'items'          => $items,
	);

	// 送信済みフラグ(HPOS でも動くよう注文オブジェクト経由で保存)
	$order->update_meta_data( '_mysite_ga4_sent', 'yes' );
	$order->save();

	$json = wp_json_encode( $payload, JSON_HEX_TAG | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE );
	wp_print_inline_script_tag( "if (typeof gtag === 'function') { gtag('event', 'purchase', {$json}); }" );
}

ポイントは3つあります。

1つ目は、wp_json_encode()にJSON_HEX_TAGを付けて、商品名に</script>のような文字列が含まれてもスクリプトが壊れないようにしていることです。データを手で連結してJavaScriptに埋め込むのは避けてください。

2つ目は、送信済みフラグを注文メタに保存していることです。サンクスページは再読み込みやブックマークからの再訪で何度も表示されるため、フラグがないと同じ購入が重複して送られます。update_meta_data()とsave()を使うと、WooCommerceの高性能注文ストレージ(HPOS)を有効にしていても動作します。

3つ目は、valueに何を含めるかです。上の例では送料・税込みの合計金額を入れています。商品代金だけで比較したい場合は計算方法を変え、社内で定義をそろえてください。

サンクスページ計測の弱点を知っておく

サンクスページでpurchaseを送る方式は、訪問者がそのページを表示しなければ計測されません。外部の決済画面で支払ったあとサイトに戻らなかった場合や、広告ブロッカー、同意管理で計測を拒否した場合は記録されません。そのため、GA4の購入件数はWooCommerceの注文数より少なく出るのが普通です。

差を小さくしたい場合は、サーバーからGA4へイベントを送るMeasurement Protocolを補助的に使う方法があります。ただし、クライアント側の計測と同じclient_idをひも付ける必要があり、同意状況の扱いも含めて設計が難しくなります。まずはクライアント側の計測を正しく動かすことを優先しましょう。

正しく計測できているか確認する

設定したら、次の順で確認します。

  1. GA4のDebugView:Tag AssistantやGTMのプレビューモードで自分のブラウザをデバッグ状態にし、商品ページ・カート・購入の各イベントが順に届くかを見ます。
  2. パラメータの中身:DebugViewでイベントを開き、currencyがJPY、valueが数値、itemsに商品が入っているかを確認します。金額が文字列になっていたり、カンマ入りになっていたりすると集計されません。
  3. テスト注文:ステージング環境やテスト用の決済モードで注文し、transaction_idがWooCommerceの注文番号と一致するか確かめます。
  4. レポート反映:標準レポートへの反映には時間がかかることがあります。翌日以降に収益化系のレポートで件数と金額を確認します。
  5. 重複の確認:サンクスページを再読み込みしてもpurchaseが追加で送られないことを確かめます。

あわせて、プライバシーポリシーにGA4で計測していることと送信先を記載し、同意管理ツールを使っている場合はGoogleの同意モードとの連携も確認しておきます。

まとめ

  • GA4のeコマース計測は、推奨イベント名(view_item、add_to_cart、purchaseなど)とcurrency・value・itemsのパラメータに合わせることが基本です。
  • WooCommerceでは連携プラグインかGTM4WPで基本のイベントを送り、GA4タグの二重設置を避けます。
  • コードでpurchaseを送る場合は、wp_json_encode()で安全に埋め込み、送信済みフラグで重複を防ぎます。
  • GA4の購入数は注文数より少なく出るのが普通です。DebugViewとテスト注文で、イベントとパラメータの中身を確認してください。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲