真策堂
· Web広告

Google広告のコンバージョン値が0になる・反映されない原因と直し方|GTMの動的値・通貨コード・既定値の切り分けと目標ROASへの影響

Google広告のコンバージョン値が0になる・反映されない原因を、GTMの変数・値の形式・広告側の設定の3層で切り分けます。症状別の診断表、文字列値の変換、通貨コードの扱い、データ除外で目標ROASを守る後始末までまとめました。

この記事のポイント

  • Google広告のコンバージョン値が0になる原因は、タグ送信・値の形式・広告側設定の3層に必ず分類できる。
  • Googleタグマネージャー(GTM)は未定義の値を0として送るため、Google広告の既定値は効かない。
  • 全件0・全件同額・ときどき0・一定割合のずれ・桁違いの5症状から、原因の層を逆引きできる。
  • 値を直したら、誤った期間にデータ除外をかけ、目標ROASを緩めてから戻すと入札の学習を守れる。

コンバージョン数は毎日ついているのに、売上の欄だけが0円のまま。あるいは全件が同じ金額で並び、目標ROASを組もうとしても数字が使えない。Google広告のコンバージョン値が0になる場面で、運用者がまず疑うのは「Google広告の設定」ですが、実際にはその手前で止まっているケースが多いと言われます。

結論を先に書きます。Google広告のコンバージョン値が0になるのは、「値がタグまで届いていない」か「届いた値が読めない形式になっている」のどちらかが大半で、広告側の設定ミスは残りです。この記事では、3層に切り分ける診断表、GTMでの確認手順、文字列値の変換、通貨コードの扱い、そして修正後に目標ROASを守る後始末までを順に書きます。

コンバージョン値が0円のまま、頭を抱える夜

Google広告のコンバージョン値が0になるのはなぜ?結論は「値が届いていない」か「届いた値が読めない」

Google広告のコンバージョン値が0になる原因は、タグ送信・値の形式・Google広告側の設定という3つの層のいずれかにあります。上流から順に潰せば、多くの場合は1時間もかからず層を特定できます。

  • タグ送信の層:dataLayerにvalueがない、変数名が違う、欄が空のまま。
  • 値の形式の層:「¥1,980」のような文字列、通貨コードの欠落、税込・税抜の混在。
  • Google広告側の層:コンバージョンアクションの値が「値を使用しない」「同じ値」になっている、GA4からインポートした際の値設定。

GTMは値が未定義だと0を送る仕様

見落とされやすいのがここです。Googleタグマネージャー(GTM)のGoogle広告コンバージョントラッキングタグは、コンバージョン値の欄に指定した変数が未定義(undefined)だと、値を0として送ります。値が空で届いたのだからGoogle広告側の既定値が代わりに使われるはず、という期待は外れます。既定値が使われるのは、タグがそもそも値を送らなかった場合に限られます。「GTMで欄を埋めたのに、中身が空だった」状態は、既定値の救済を受けられないまま0として記録される、というのがこの仕様の盲点です。

CV数は正しいのに値だけ0になるパターン

発火条件(トリガー)は合っているので、CV数は問題なく増えます。壊れているのは値の受け渡しだけです。数だけ見ていると気づかず、目標ROASやコンバージョン値の最大化を使い始めて初めて異常に気づくことも珍しくありません。変数が未定義になる原因そのものは、GTMのデータレイヤー変数がundefinedになる原因で詳しく扱っているので、本記事では要点だけ押さえます。

症状から原因を逆引きする診断表

症状から3つの層へ切り分ける 図1: 症状から3つの層へ切り分ける

コンバージョン値の異常は、症状のパターンで原因の層をほぼ絞れます。海外の広告運用ベンダーであるScaleUpの解説でも、0円ならタグや変数、全件同額なら固定値、一定割合のずれなら税・送料の定義か通貨、ときどき0なら発火のタイミング、と症状別に原因を整理する考え方が示されています。日本のカートでは、これに文字列値の問題が加わると考えると実務に合います。

症状疑う層まず見る場所
全件0円タグ送信変数名、dataLayerのvalue、タグの値の欄
全件同額タグ送信/広告側タグ内の固定値、アクションの既定値設定
ときどき0タグ送信(順序)purchaseイベントとタグ発火の前後関係
一定割合のずれ値の定義税込・税抜、送料、割引の扱い
約150倍・150分の1通貨currencyの欠落、MCCの通貨

全件0円:変数名ミス・欄が空・dataLayerに値がない

最も多い型です。確認の順番は三つ。dataLayerに実際にvalueが積まれているか、データレイヤー変数のキー名が一致しているか、Google広告タグの「コンバージョン値」欄に変数が入っているか。このうち一つでも欠ければ、GTMは0を送ります。

全件同額:固定値の設定または既定値が使われている

タグの値の欄に数字を直接入力していると、全件その額になります。もう一つは、コンバージョンアクション側で「同じ値」を指定していて、タグ側の動的な値が使われていない状態です。

ときどき0:タグが値より先に発火している

サンクスページの読み込み完了(Page View)や、DOM Readyで発火させているタグが、dataLayer.pushより先に動くと起こります。値が入る日と入らない日が混在するので、原因が掴みにくい症状です。発火トリガーをdataLayerのpurchaseイベントに切り替えるのが基本の直し方になります。

約150倍・150分の1:通貨コードの欠落や取り違え

JPYの金額がUSDとして解釈される、あるいはその逆が起きると、為替レート分だけ値がずれます。ずれ幅は換算日のレートに左右されるので、ちょうど150とは限りません。通貨の話は後の章でまとめます。

GTMで値が変数に渡っているかを確かめる手順

テスト購入で値と通貨を確認する テスト購入で値と通貨を確認する

GTMのプレビューモード(Tag Assistant)を使えば、値と通貨が実際に送られているかは5分で判定できます。テスト購入を1件行い、サンクスページの遷移まで通して確認してください。

dataLayerのpurchaseイベントにvalueとcurrencyがあるか

Tag Assistantの左側でpurchaseイベントを選び、「Data Layer」タブを開きます。ecommerceの下にtransaction_id、value、currencyが並んでいれば、サイト側は正常です。valueが無い、あるいは文字列になっている場合は、カートやテーマ側の実装を直す話になります。Shopifyのように標準のデータレイヤーを持たないカートでは、カスタムピクセルやアプリ経由の出力内容を先に確認する必要があります。

データレイヤー変数のキー名と階層(ecommerce.value)の確認

GTMのデータレイヤー変数は、キー名を階層込みで書きます。GA4形式のeコマースなら ecommerce.value です。value だけ、ecommerce.revenue、あるいはUA時代の ecommerce.purchase.actionField.revenue のまま、という取り違えが定番の失敗です。データレイヤーのバージョン設定も合わせて確認してください。

Tag Assistantでリクエストの値を確認

Google広告タグを選び、「Values」で値と通貨が入っているかを見ます。ここでvalueが0なら、GTM側の変数が空という確定診断です。値が入っていても管理画面が0なら、広告側の層に進みます。サーバーサイドGTMを使っている場合は注意が必要です。サーバー側にはdataLayerがないため、値はイベントデータ変数(キー名はvalue)で受けます。Stape Communityでは、GA4のDebugViewで値が見えていてもGoogle広告タグ側で欄の対応付けがずれていると0になる、という事例が議論されています。サーバーサイドGTMを入れた直後は、この対応付けを最初に疑うのが近道です。

値が文字列・税込・カンマ付きのときの直し方

日本のカートがdataLayerに「¥1,980」や「1,980円」のような文字列を積んでいる場合、Google広告タグは数値として読めず、0または不正値になります。値は文字列ではなく数値で渡し、parseFloatで変換するのが基本、というのはScaleUpの解説とも一致します。

カスタムJavaScript変数で数値に変換する

GTMでカスタムJavaScript変数を作り、データレイヤー変数の出力を数値に変換します。

function() {
  var v = {{DLV - ecommerce.value}};
  if (typeof v === 'number') return v;
  if (v === undefined || v === null || v === '') return undefined;
  var n = parseFloat(String(v).replace(/[^0-9.\-]/g, ''));
  return isNaN(n) ? undefined : n;
}

これを Google広告タグの「コンバージョン値」欄に指定します。全角数字が混ざる可能性があるなら、置換の前に全角を半角へ直す処理を足してください。小数点にカンマを使う多通貨サイトでは、この正規表現は使えません。

変換できなかった場合に undefined を返すのは、不正な値を黙って0にせず、プレビューで気づけるようにするためです。ただし、前述のとおりGTMは未定義を0として送るので、変換失敗を検知する仕組み(変換不能時にタグをブロックする、または別途アラートを出す)は別に用意しておくと安心です。ブロックするとCV数が欠けるので、どちらを優先するかは運用方針で決めます。

税込・送料込みのどれを値にするかの決め方

値の定義は、技術より先に経営判断です。判断軸は一つで、目標ROASを何と比べるかです。広告費と比べる売上を「利益に近い金額」にしたいなら、税抜・送料抜(商品代金)に寄せます。売上報告と数字を合わせたいなら、会計上の売上定義に揃えます。Search Engine Journalの監査記事は、価値ベースの入札が崩れる原因は媒体側ではなく渡している値の定義にあると指摘し、過少計上だけでなく、二重計上や税込・送料込みによる水増しも同じ監査で見るよう勧めています。日本では消費税込みの表示が一般的なので、カートの出力をそのまま使うと水増し側に振れやすい点に注意してください。決めた定義は、全チャネルで揃えることが前提です。

通貨コードは必須?JPY以外が混ざるとどうなるか

通貨コードは必須ではありませんが、currencyを明示して送る方が安全です。Google Ads Helpによると、タグから通貨コードが届けば、その日の平均レートでアカウントの通貨に換算されます。

通貨コードがない時の扱い(アクションの既定通貨→アカウント通貨)

通貨コードがない場合は、まずコンバージョンアクションに設定された既定通貨、それもなければアカウントの通貨として扱われます。JPYのみのサイトでも「currency: ‘JPY’」を明示しておけば、取り違えの余地が消えます。アカウントの通貨が想定と違っていた場合は、後から変更できないため作り直しの判断が必要になります。経緯はGoogle広告の通貨は後から変更できないで整理しています。

MCCの通貨・越境ECでの注意点

MCC(管理アカウント)経由で計測する構成では、MCC側の通貨が使われる場合がある、とGoogle Ads Helpに記載があります。USDで作成したMCC配下に日本円のアカウントがあると、JPYの値がUSD扱いになり、約150倍や約150分の1のずれが出る、という説明がつきます。

多通貨のカートでは、currencyが取引ごとに変わるので、valueとcurrencyを必ず対で出力します。通貨が混在するなら、サイト側で円に統一してから送る手もあります。ただしその場合の為替レートの責任はサイト側に移ります。

Google広告側の設定で値が0や固定になるケース

タグ側が正しくても、Google広告のコンバージョンアクションの設定次第で値は0や固定額になります。確認場所は、「目標」→「コンバージョン」→「サマリー」から対象アクションを開き、「値」の項目です。

「値を使用しない」「同じ値」になっていないか

値の設定には、「各コンバージョンに異なる値を使用する」「すべてのコンバージョンに同じ値を使用する」「コンバージョン値を使用しない」の3種類があります。タグが動的な値を送っていても、「同じ値」や「使用しない」を選んでいれば反映されません。ECなら「異なる値を使用する」を選び、既定値は、値が欠けた場合の保険として妥当な金額を入れておきます。ただし冒頭で触れたとおり、GTMが0を送るケースには既定値は効きません。

GA4から取り込んだCVの値設定

Googleアナリティクス4(GA4)のコンバージョンをインポートしている場合、値はGA4のイベントのvalueが元になります。GA4で売上が見えるのにGoogle広告で0円なら、Google広告タグで計測しているアクションと、GA4インポートのアクションのどちらを入札に使っているかを先に確認してください。両方を同じ目標に入れていると、二重計上か、片方の0が混ざる状況になります。インポート側の値設定が「同じ値」になっていないかも確認が必要です。

反映までの時間の目安

修正は過去のCVには効きません。新しく発生したCVで確認し、反映までは数時間から1日程度を見込んでください。当日のうちに管理画面で確かめきれないのは普通のことなので、確認はTag Assistantのリクエストで済ませ、管理画面は翌日に見るのが現実的です。

値0の期間は目標ROASにどう影響する?データ除外で学習を守る手順

修正後、数値が戻りほっと一息 修正後、数値が戻りほっと一息

値0の期間があると、スマート入札はその期間を「売上が出ていない」状態として学習し、目標ROASの入札を必要以上に絞る可能性があります。直した後は、誤った期間をデータ除外で学習から外し、目標を緩めてから段階的に戻すのが無難です。

データ除外とは、計測障害などで歪んだ期間を、スマート入札の学習から除く機能です。Google Ads Helpによれば、この除外はコンバージョン単位ではなくクリック単位で効きます。使い分けの全体像はデータ除外と季節性の調整の使い分けにまとめています。

データ除外の期間の決め方(CVまでの遅れを足す)

クリックが基準になるため、開始日はCVが0になった日ではなく、そのCVにつながったクリックの日まで遡らせる必要があります。たとえばクリックから購入までの平均が3日なら、不具合の開始日より3日前を除外の開始日にします。終了日は修正を公開した日です。反映は1週間以内とされています。また、Google Ads Helpは、修正後のデータが戻り込むまで14日ほど待つことと、除外設定を後から消さないことを勧めています。

修正直後に目標ROASを緩めて段階的に戻す

修正直後は、目標ROASを一時的に低めへ緩め、実績が安定するのを見て段階的に戻します。上げ幅は一度に大きくせず、週単位で少しずつ動かすと、入札の挙動が荒れにくくなります。設定してから2〜4週間は、他の大きな変更を重ねないでください。もともと目標ROAS自体を使うべきか迷っているなら、目標ROASと目標CPAの使い分けを先に確認してください。値が正しく取れるようになったら、次の一手としてコンバージョン値ルールで価値差をつける方法に進むのも手です。

再発防止:値の定義をCVアクションの説明に書き残す

最後に、値の定義をコンバージョンアクションの説明欄とGTMのメモに書き残します。「税込/税抜」「送料の扱い」「通貨」「データの出どころ(dataLayerのキー名)」の4点があれば、担当が替わっても同じ事故を避けられます。サイト改修のたびにTag Assistantで値を確認する工程も、リリース手順に入れておくと安全です。dataLayerの不備は、eコマースのitemsでも同じ根っこで起こります。GA4のitemsが(not set)になる原因もあわせて見ておくとよいでしょう。

よくある質問

Q:GTMでコンバージョン値の欄を空にすると、Google広告の既定値が使われますか?

使われません。GTMは空や未定義の値を0として送るため、既定値には置き換わりません。欄に変数が設定されているか、その変数の中身が空でないかを確認してください。

Q:コンバージョン値は直したのに、管理画面に反映されないのはなぜ?

過去のコンバージョンの値は、さかのぼって直りません。新しく発生したCVで確認し、反映の遅れも考えて数時間から1日ほど待ってください。

Q:GA4では売上が出ているのに、Google広告では0円なのはなぜ?

Google広告タグ側の変数の対応付けがずれているか、インポートしたCVの値設定が原因のことが多いです。どちらのタグで計測しているアクションかを先に確認してください。

Q:通貨コードを入れないとどうなりますか?

コンバージョンアクションの既定通貨、次にアカウントの通貨として扱われます。JPYだけのサイトでも、currencyを明示した方が安全です。

Q:値0の期間がある状態で目標ROASに切り替えても大丈夫?

誤った期間をデータ除外で外し、修正後のデータが2〜4週間たまってから切り替えるのが無難です。それまでは、既存の入札戦略のまま様子を見る方が学習を乱しにくくなります。

コンバージョン値の異常は、タグ・形式・広告設定のどこで起きているかを切り分けられれば、直すこと自体は難しくありません。真策堂ではこうした観点で、計測の確認から入札戦略の見直しまでのご相談を受けています。自社だけで原因を絞り込めないときは、お気軽にお声がけください。

Contact

広告運用・マーケティングのご相談はこちらから
お問い合わせフォーム・公式LINEのどちらでもOK