ツールなしでもABテストはできる?GA4とGTMを使って5ステップで計測する方法

「GA4でABテストをしたい」と調べ始めると、最初につまずくのは、GA4の管理画面のどこにもテストを開始するボタンが見当たらないことです。結論から言うと、GA4にはA案とB案を出し分ける機能はありません。Google Optimize終了後、出し分けは実験ツール・GTM・LP実装のいずれかで行い、GA4は「どちらの案が成果につながったか」を計測して判定する場所として使います。
一方で、有料の実験ツールを入れなくても、GTMで訪問者をランダムに振り分け、variant_id をGA4へ送れば、無料の範囲でABテストの計測は実現できます。この記事では、その設定をテスト設計→GTM振り分け→variant_id 送信→カスタムディメンション登録→探索レポート比較の5ステップで解説します。
ツールの選び方や必要サンプル数の計算は姉妹記事に分け、ここではGA4での計測設計と検証手順に集中します。
この記事でわかること
- GA4単体でできること・できないこと
- GTMでA/Bを振り分ける設定手順
- variant_idをGA4へ送る設定と登録方法
- 探索レポートでA/Bを比較する手順
- 差が小さいときの採用・再テストの判定基準
GA4にABテスト機能はあるかを最初に確認する

まず前提の確認です。GA4公式ヘルプのABテスト解説では、ABテストは1つのページで複数パターンをランダムに表示し、成果に貢献するパターンを特定する手法と説明されたうえで、GoogleアナリティクスでABテストを実施するには、サードパーティのABテストツールを統合する必要があると明記されています。
つまり、GA4が担当するのは出し分けではなく、計測と判定です。実施ルートは大きく3つに分かれます。
| 実施ルート | 出し分けの担当 | 向いているケース |
|---|---|---|
| 実験ツール連携 | ABテストツール | 継続的に多くのテストを回す |
| Google広告の実験 | Google広告 | 広告の配信条件だけ比較する |
| GTMで自作(本記事) | GTM+LP実装 | ツール費用をかけずに始める |
実験ツールを連携する場合は、サードパーティ実験ツールとの統合に関するGA4公式ヘルプにあるとおり、実験開始時にバリアントごとのオーディエンスが作られ、Experience-variant IDディメンションで結果を確認できます。この場合、以降の手順2〜4はツール側が肩代わりしてくれます。
本記事で扱うのは3つ目の、GTMとGA4だけで完結させる自作ルートです。テスト頻度が高い、同一URLで大きくデザインを変えたいなど、ツール導入から検討したい場合は先に次の記事で選定軸を確認してください。
この記事もおすすめ|ABテストツールの選び方:無料と有料の違いと導入前の比較5軸|無料と有料の違いと導入前の比較5軸|GTM自作でなくツール導入を検討する場合の比較軸を整理しています。|
GTMとGA4で計測する5ステップの全体像
先に全体像です。使う画面と、各手順の完了時にできあがるものを整理しました。
| 手順 | 使う画面 | やること | できあがるもの |
|---|---|---|---|
| 1 テスト設計 | 設計メモ | 変える要素・判定指標・命名を決める | テスト設計メモ |
| 2 振り分け | GTM | 変数でA/Bを50%ずつ割り当てる | 振り分け変数 |
| 3 送信 | GTM | GA4イベントにvariant_idを追加する | A/B付きの計測データ |
| 4 登録 | GA4管理画面 | カスタムディメンションを作成する | 探索で使えるvariant_id |
| 5 比較 | GA4探索 | キーイベント率をA/Bで比較する | 採用・再テストの判断材料 |
作業自体は半日で終わる規模ですが、==手順4のカスタムディメンションは、登録した時点より前のデータに遡って適用されません==。テスト配信を始める前に手順2〜4まで完了させておくことが、この5ステップで最も重要な順序です。GA4への反映には24〜48時間程度かかるため、設定後は1〜2日おいて計測確認してからテストを開始します。
手順1:変える要素と勝ち負けの指標を1つずつ決める

設定の前に、変える要素は1つ、勝ち負けを決める主指標も1つに絞ります。ファーストビューとCTAとフォームを同時に変えると、どれが効いたのか分からなくなります。
主指標には、フォーム送信などビジネス成果に直結するキーイベントを使います。GA4のキーイベント公式ヘルプのとおり、任意のイベントをキーイベントとしてマークすると、レポートでその行動を起点に比較できるようになります。あわせて、差がどこで生まれたかを分解するための補助指標も決めておきます。
| 役割 | イベント例 | 判断に使う意味 |
|---|---|---|
| 主指標 | form_submit、generate_lead | 勝ち負けを決める |
| 補助指標 | form_start、cta_click | どこで差が出たか分解する |
| 参考指標 | スクロール、滞在 | 行動の質を確認する |
命名もこの段階で決めます。実験を識別する experiment_id(例: lp_fv_202607)と、どちらの案かを示す variant_id(A/B)の2つをそろえておくと、テストを繰り返しても集計がぶれません。
!!既存のpage_viewや広告最適化に使っているCVイベントを、テスト用に書き換えないでください。!! GA4のイベント作成・変更公式ヘルプでも、既存イベントの変更は上書きになるため注意が示されています。ABテスト用の計測は、既存イベントに影響しない形でパラメータを追加するのが安全です。
手順2:GTMのカスタムJavaScript変数でAとBを振り分ける
次に、GTMで訪問者をランダムにA/Bへ割り当てる変数を作ります。GTMの「変数」→「ユーザー定義変数」→「カスタムJavaScript」で、次のコードを登録します(変数名の例: AB Variant)。
同じ訪問者が再訪するたびに違う案を見ると結果が汚れるため、初回に割り当てた案をCookieに保存して固定する作りにしています。
function() {
var name = 'ab_variant_fv202607=';
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var c = cookies[i].replace(/^\s+/, '');
if (c.indexOf(name) === 0) {
return c.substring(name.length);
}
}
var variant = Math.random() < 0.5 ? 'A' : 'B';
document.cookie = name + variant + '; path=/; max-age=2592000';
return variant;
}
Cookie名(ab_variant_fv202607)は実験ごとに変えます。max-age=2592000 は30日間の固定ですが、Safariなど一部ブラウザではJavaScriptで書いたCookieの保持期間が7日程度に制限されることがあるため、テスト期間は長くても2〜4週間以内に収める前提で設計してください。
なお、この変数は「どちらの案か」を決めるだけで、見た目の切り替えは行いません。B案の表示自体は、GTMのカスタムHTMLタグでDOMを書き換えるか、LP側の実装で出し分けます。カスタムHTMLタグの場合は、{{AB Variant}} が B のときだけ見出し文言やCTAボタンのテキストを書き換えるスクリプトを、対象ページ限定のトリガーで配信する形が基本です。ファーストビューの大幅変更など書き換え量が多いテストは、画面のちらつき(フリッカー)が出やすいため、URLを分けたLP実装か実験ツールの利用が現実的です。
この記事もおすすめ|Google Optimize ABテスト終了後の代替ツールと計測設計|GTM自作で出し分けが難しい場合の代替環境の作り方を整理しています。|
手順3:GA4イベントに variant_id を付けて送る
振り分け変数ができたら、その値をGA4へ送ります。GTMのGA4イベントタグを開き、「イベント パラメータ」に次の2行を追加します。
| パラメータ名 | 値 |
|---|---|
experiment_id | lp_fv_202607(実験名を直接入力) |
variant_id | {{AB Variant}}(手順2の変数) |
対象は、テストの判定に使うイベントすべてです。page_view を送るGoogleタグと、form_submit などのイベントタグの両方にパラメータを付けておくと、母数(表示)と成果(送信)の両方をA/Bで割れるようになります。
バリアント情報は、計測時点で記録することが重要です。「この日からB案だったはず」と後から期間で推測して分ける方法は、切り替え日のずれや再訪ユーザーの混在で集計が崩れます。GTMのプレビューモードで、variant_id が A または B で送られていることを確認してから公開してください。
手順4:variant_id をカスタムディメンションに登録する
パラメータを送っただけでは、探索レポートの選択肢に variant_id は現れません。GA4の管理画面で「管理」→「データの表示」→「カスタム定義」→「カスタムディメンションを作成」と進み、次のとおり登録します。
| 設定項目 | 入力値 |
|---|---|
| ディメンション名 | AB Variant(表示用の任意名) |
| 範囲 | イベント |
| イベント パラメータ | variant_id |
GA4のカスタムディメンション公式ヘルプのとおり、標準プロパティで登録できるイベントスコープのカスタムディメンションは50個までです(2026年7月19日確認。上限は変更されうるため、登録前に公式で最新を確認してください)。
==カスタムディメンションは登録後のデータにしか適用されず、登録前の期間には遡れません。==テスト開始前に登録を済ませることが、この手順の唯一かつ最大の注意点です。experiment_id も同様に登録しておくと、複数実験を並行しても探索で切り分けられます。
手順5:探索レポートでキーイベント率をA/Bで比較する

データが貯まったら、GA4の「探索」→「自由形式」で比較します。設定は次の順で行います。
チェックリスト
- 期間をテスト実施期間に正確に合わせる
- 行に「AB Variant」(手順4で登録したディメンション)を置く
- 指標にセッション、アクティブユーザー、キーイベント、セッションキーイベント率を置く
- 列にデバイスまたは参照元/メディアを置いて内訳を見る
- フィルタで対象LPまたは対象イベントに絞る
- 差が出た場所を
form_startなどの補助指標で分解する
GA4のキーイベント確認に関する公式ヘルプにあるとおり、探索ではKey eventsやSession key event rateを任意のディメンションと組み合わせられます。全体平均のCVRだけで勝ち負けを決めず、流入元・デバイス・LP別に割ってから判断するのがポイントです。広告流入ではB案が勝ち、自然検索ではA案が強い、という逆転は珍しくありません。
URLでA/Bを分けているテストなら、GA4のランディングページレポート公式ヘルプで説明されているランディングページレポートに、セカンダリディメンションで参照元/メディアを足す方法でも確認できます。
行に A/B ではなく (not set) が並ぶ場合は、カスタムディメンション登録より前の期間のデータを含んでいるか、variant_id を送っていないイベントが混ざっています(未登録の場合はそもそも探索の選択肢に出てきません)。==計測が崩れたまま判定を進めない==ことが、ABテストで最も避けるべき失敗です。
差が小さいときは母数・再現性・質で判定する
数字が出そろっても、CVRの差がわずかなときに即断してはいけません。実務では次の4点をセットで確認してから、採用・再テスト・停止を分けます。
| 判断軸 | 見る数字 | 確認すること |
|---|---|---|
| 量 | セッション、CV数 | 判定に足る母数があるか |
| 率 | キーイベント率、CPA | 効率が実際に上がったか |
| 再現性 | 流入元別、デバイス別 | 特定の流入だけの偶然でないか |
| 質 | 有効問い合わせ、商談化率 | 増えたCVが商談につながるか |
母数が足りるかどうかは感覚ではなく計算で決められます。必要サンプル数の早見表と、テスト結果の数値を入れて有意差を判定できる計算ツールは次の記事にまとめています。
この記事もおすすめ|ABテストのサンプル数は少なくても大丈夫?優劣を決めるときの考え方を解説|CVR別の必要サンプル数早見表と、結果を入力して有意差を判定できる計算ツールを使えます。|
Google広告の実験を使っている場合は、Google広告の実験モニタリング公式ヘルプにあるとおり、有意差が出ない要因として期間不足・トラフィック不足・分割率の小ささが挙げられています。広告管理画面のスコアカードとGA4の行動データを分けて見てください。
BtoBでは最後に質の確認が残ります。**フォーム送信が増えても、商談化率が下がっていれば採用は保留です。**GA4のキーイベントとCRM側の有効問い合わせ・商談化率を突き合わせてから、次の投資先を決めます。CVRは上がったが問い合わせの質が落ちた、という状態で判断に迷う場合は、計測設計の整理から外部に相談する選択肢もあります。
ワンポイントアドバイス: 差が小さいときは、勝ち案探しを急がないでください。母数、流入元別の再現性、計測不備の3点を見てから、再テストか停止かを決めます。
GA4のABテスト計測でつまずく失敗と防ぎ方
最後に、この手順で実際につまずきやすいポイントを整理します。ほとんどはテスト開始前の準備で防げる失敗です。
| 失敗例 | 起きる問題 | 防ぎ方 |
|---|---|---|
| 登録前にテストを開始 | 登録前期間が(not set)になる | 手順4を開始前に完了する |
| 登録後すぐ判定を始める | 反映前の欠損期間が混ざる | 24〜48時間待って確認する |
| 同時に複数要素を変更 | 勝因が特定できない | 変数を1つに絞る |
| 既存イベントを上書き | 過去比較・広告最適化が壊れる | パラメータ追加で対応する |
| CVRだけで採用判断 | 問い合わせの質を見落とす | CRMの商談化率と突き合わせる |
アズくんワンポイント: ぼく、variant_id を送り始めた日とカスタムディメンションを登録した日がずれてて、最初の1週間が全部 (not set) になったことがあります…!開始前チェック、大事です!
よくある質問
Q. GA4にABテスト機能はないのですか?
出し分け機能はありません。GA4公式ヘルプでも、ABテストの実施にはサードパーティツールの統合が必要と説明されています。ただし本記事の手順のとおり、GTMで振り分けて variant_id を送れば、計測と判定はGA4だけで行えます。
Q. 探索レポートに variant_id が出てきません
カスタムディメンション(手順4)の登録漏れが最も多い原因です。登録済みなら、対象期間が登録日より前になっていないか、GTMのプレビューでパラメータが実際に送られているかを確認してください。反映には24〜48時間かかります。
Q. 無料の範囲でどこまでできますか?
GTMとGA4だけで、振り分け・計測・探索での比較まで無料でできます。一方、同一URLでの大幅なデザイン変更はフリッカーが出やすく、多変量テストや自動の有意差判定も自前になるため、テスト頻度が上がってきたら実験ツールの導入を検討する段階です。
Q. Google広告の実験とGTMの振り分けはどちらを使うべきですか?
比較したい変数で決めます。広告文や入札など配信条件の比較はGoogle広告の実験、LPやフォームなどサイト側の比較はGTM振り分け+GA4計測が向いています。両方を同時に変えると勝因が分からなくなるため、どちらか一方に絞ってください。
まとめ
GA4のABテストは、出し分けと計測を分けて考えれば難しくありません。GTMの変数で振り分け、variant_id をイベントに付けて送り、カスタムディメンションに登録し、探索レポートでキーイベント率を比較する。この5ステップなら、有料ツールなしで今週から始められます。
順序だけ守ってください。==振り分け・送信・登録をテスト配信の開始前に済ませる==ことが、後戻りできない失敗を防ぐ唯一の分岐点です。判定では全体平均でなく流入元別に割り、母数はサンプル数計算で裏づけ、BtoBなら商談化率まで突き合わせて採用を決めます。
計測はできたが、A/Bの差をどう事業判断につなげるか迷う。既存のGA4・GTM設定に影響を出さずに組み込めるか不安。そのような場合は、テストを走らせる前に計測設計の整理から着手することをおすすめします。
この記事もおすすめ|LP ABテストのやり方:FV・CTA・フォームで検証する手順|計測環境ができた後、LPのどの要素から検証するかを決める場合に役立ちます。|
参考にした公式情報
- GA4公式ヘルプのABテスト解説: GA4でABテストを扱う前提(サードパーティ統合が必要)の確認
- サードパーティ実験ツールとの統合に関するGA4公式ヘルプ: 実験ツール連携とExperience-variant IDの確認
- GA4のキーイベント公式ヘルプ: 主指標に使うキーイベントの考え方の確認
- GA4のイベント作成・変更公式ヘルプ: 既存イベント変更時の注意点の確認
- GA4のカスタムディメンション公式ヘルプ: 登録手順・イベントスコープの上限50個の確認
- GA4のランディングページレポート公式ヘルプ: URL別テストの確認方法の根拠
- GA4のキーイベント確認に関する公式ヘルプ: 探索でキーイベント率を比較する方法の確認
- Google広告の実験モニタリング公式ヘルプ: 広告実験の指標と有意差が出ない理由の確認