dataLayer.pushの仕組み
GTM(Googleタグマネージャー)は、ページ内の dataLayer という配列を常に監視しています。 そこに dataLayer.push({ event: "purchase", value: 11000 }) のような情報を入れると、 GTMが「purchaseという出来事が起きた」と認識し、設定済みのタグ(GA4イベント送信や広告コンバージョン)を発火させます。 つまりdataLayer.pushは「サイトからGTMへの合図」です。
このツールの使い方
- プリセットを選ぶか、イベント名を入力:purchase等のGA4推奨イベントはプリセットで一発入力できます。
- パラメータを追加:キー・値・型(文字列/数値/真偽値)を指定します。金額は「数値」型にすると引用符なしで出力されます。
- コピーして設置:計測したい出来事が起きる場所(完了ページ等)に貼り付けます。
- GTM側を設定:カスタムイベントトリガー+データレイヤー変数+GA4イベントタグ(FAQ参照)。
型の使い分け(重要)
| 型 | 出力例 | 使いどころ |
|---|---|---|
| 文字列 | currency: "JPY" | ID・通貨コード・名前など |
| 数値 | value: 11000 | 金額・個数。引用符付き("11000")だとGA4で集計できないことがある |
| 真偽値 | is_member: true | 会員/非会員などのフラグ |
よくある間違い
- 金額を文字列で送る:
value: "11000"はGA4の収益集計で正しく扱われないことがあります。数値型を使いましょう。 - GTMスニペットより前に実行:
window.dataLayer = window.dataLayer || [];を付けていれば消失はしませんが、実行順序は意識しておきましょう(本ツールの出力には自動で付きます)。 - イベント名の表記ゆれ:purchase と Purchase は別イベントです。小文字で統一しましょう。
- 送って終わり:GTMのプレビューモードとGA4のDebugViewで、実際に届いているか必ず確認しましょう。
よくある質問(FAQ)
dataLayer(データレイヤー)とは何ですか?
Webページからタグマネージャー(GTM)へ情報を受け渡すための「受け渡し場所」です。ページ側で dataLayer.push を実行すると、GTMがその情報を受け取り、GA4へのイベント送信や広告タグの発火に使えます。
生成したスニペットはどこに貼ればよいですか?
計測したい出来事が起きる場所(購入完了ページ、フォーム送信完了の処理など)に貼ります。生成コードの冒頭に window.dataLayer = window.dataLayer || []; が含まれているため、GTM本体のスニペットより先に実行されても情報は失われず、GTM読み込み時に処理されます。HTMLに直接貼る場合は「scriptタグで囲む」をオンにしてください。
GTM側では何を設定すればよいですか?
①トリガー:「カスタムイベント」タイプを作成し、イベント名(例: purchase)を入力します。②変数:パラメータを使う場合は「データレイヤーの変数」を作成し、キー名(例: value)を指定します。③タグ:GA4イベントタグを作り、①のトリガーを設定して公開します。
eコマースのitems配列には対応していますか?
本ツールはシンプルなキーと値のパラメータに対応しています。商品明細(items配列)が必要な完全なeコマース計測では、生成したスニペットをベースに items: [{ item_id: "SKU_123", ... }] を手で追記してください。
イベント名は何でもよいのですか?
技術的には任意ですが、GA4には purchase・add_to_cart・generate_lead などの推奨イベント名があり、これらを使うとGA4の標準レポートで自動的に活用されます。小文字英字とアンダースコアで統一するのが慣習です。
このツールは無料ですか?入力した内容は送信されますか?
完全無料・登録不要です。生成はすべてブラウザ内で行われ、入力した内容がサーバーに送信されることはありません。
流入元の計測には UTMパラメータ生成ツール(複数まとめてなら UTM一括生成)を。本番環境でコンバージョン計測が正しく発火しているかの検証には、XTVの ConversionOK もご活用ください。