トラッキングテンプレート生成ツール|Google・Yahoo・Meta広告のURLパラメータ
入稿URLを1本ずつ書き換えるのをやめて、アカウント単位に一度貼るだけの値を作るツールです。媒体を選ぶと、その媒体で実際に置換されるパラメータだけが候補に出ます。
このツールは入力した値から文字列を組み立てるだけで、外部への通信は行いません。 入力したキャンペーン名やURLが当サイトや第三者に送信されることはありません。
gclid)で連携するため、utm を手で付ける必要性が薄いという判断です(後述)。以下の解説では Google 広告の仕様も扱います。媒体ごとに違うのは3点だけ
同じ「トラッキングテンプレート」という言葉でも、媒体によって仕様が違います。違うのは次の3点です。
| Google 広告 | LINEヤフー広告 | Meta 広告 | |
|---|---|---|---|
| 波かっこ | {param} | {param} | {{param}} |
| 設定項目 | トラッキングテンプレート / 最終ページURLのサフィックス | トラッキングURL | URLパラメータ |
| 設定できる階層 | アカウント〜広告 | アカウント〜広告・キーワード | 広告単位のみ |
Meta だけはアカウント単位で一括設定する項目がありません。広告ごとに「URLパラメータ」欄へ入れることになるので、テンプレートを決めて複製で回すことになります。
Google と LINEヤフー広告はどちらも、上位と下位の両方に設定した場合は下位の設定が優先されます。アカウント単位に入れておけば全体に効くので、まずはアカウント単位で入れるのが管理として楽です。
{lpurl} と ? が必要かどうかは項目によって逆になる
一番事故が多いのがここです。Google 広告には設定項目が2つあり、書き方が逆です。
| 項目 | 書き方 |
|---|---|
| トラッキングテンプレート | {lpurl}?utm_source=google&utm_medium=cpc |
| 最終ページURLのサフィックス | utm_source=google&utm_medium=cpc |
サフィックスは最終ページURLの後ろに連結される項目なので、{lpurl} も先頭の ? も書きません。ここにテンプレートと同じ値を貼ると ? が二重になって壊れます。
どちらを使うかは、計測ツールのリダイレクトを挟むかどうかで決めます。
- パラメータを足すだけなら 最終ページURLのサフィックス。並行トラッキングに対応していて、リダイレクト計測を挟んでも消えません。
- 計測ツールのリダイレクトURLを経由させるなら トラッキングテンプレート。
{lpurl}を計測ツールのURLの中に埋め込む形で使います。
LINEヤフー広告に「サフィックス」相当の項目はなく、トラッキングURLだけです。こちらは常に {lpurl} から書き始めます。
{matchtype} の値は Google と Yahoo で違う
同じ名前のパラメータでも返る値が違います。Google 側は近年値が増えました。
| 値 | Google 広告 | LINEヤフー広告 検索広告 |
|---|---|---|
e | 完全一致 | 完全一致 |
p | フレーズ一致 | フレーズ一致 |
b | インテント マッチ | 部分一致 |
a | AI 最大化設定(キーワードなし) | なし |
a は Google だけにある値です。キーワードを持たないトラフィックがここに入るため、{matchtype}=a の行が増えていたらキーワードベース以外の配信が伸びているということになります。マッチタイプ別でレポートを組んでいる場合、a を想定していないと未分類として落ちます。
{network} は P-MAX と Google TV の値が増えている
Google の {network} は次の値を返します。
| 値 | 意味 |
|---|---|
g | Google 検索 |
s | 検索パートナー |
d | ディスプレイ ネットワーク |
ytv | YouTube |
vp | Google 動画パートナー |
gtv | Google TV |
x | すべての P-MAX トラフィック |
e | アプリ エンゲージメント キャンペーンのすべてのトラフィック(Google 検索を除く) |
{network} の値の定義では x が「すべての P-MAX トラフィック」とされていて、P-MAX の中の検索面とディスプレイ面は区切られません。
ただしヘルプの「P-MAX キャンペーン」のサポート表に {network} 自体が載っていません。定義側に x があるのにサポート表には無い、という食い違いがあるため、P-MAX で {network} を当てにしないでください。
なお LINEヤフー広告に {network} はありません。
P-MAX で使えるパラメータは公式に一覧化されている
Google 広告のヘルプで、キャンペーンタイプ別の対応が明記されているのは P-MAX だけです。「P-MAX キャンペーン」のセクションにサポート表があり、ここに載っているものが使えるパラメータのすべてです。
| サポート | パラメータ |
|---|---|
| フル | {campaignid} {assetgroupid} {device} {lpurl} {lpurl+2} {lpurl+3} {loc_physical_ms} {loc_interest_ms} {ifmobile:} {ifnotmobile:} {random} |
| 限定的 | {product_id} {merchant_id} {product_channel} {product_country} {product_language} {adtype} {gclid} |
この表に無いものは使えません。 実務で間違えやすいのは次の4つです。
{adgroupid}— P-MAX に広告グループは存在しません。代わりに{assetgroupid}を使います{keyword}/{matchtype}— キーワードが存在しません{creative}— 表にありません{network}— 表にありません(前述のとおり、値の定義側にはxがあるのに表には無い、という食い違いがあります)
置換されないパラメータを書いてもエラーにはなりません。{keyword} という文字列がそのまま送信され、計測ツール側に utm_term={keyword} という行が並びます。上のツールは、選んだ媒体で置換されないトークンが混ざっていると警告を出します。
なお検索・ショッピング・ディスプレイについては、ヘルプにこうしたキャンペーンタイプ別のサポート表がありません。各パラメータの説明文から判断することになります({placement} は「広告がクリックされたコンテンツサイト」なのでディスプレイ向け、など)。
{lpurl} にはエンコード段階を指定する変種がある
{lpurl} にはエンコードの段階を指定する変種があります。これは Google 広告・LINEヤフー広告の両方にあります。
| パラメータ | 挙動 |
|---|---|
{lpurl} | 最終リンク先URL(1回エンコード) |
{lpurl+2} / {lpurl+3} | 2重 / 3重エンコード |
{unescapedlpurl} | エンコードしない |
{escapedlpurl} | :/?=% を1回エンコード |
{escapedlpurl+2} / {escapedlpurl+3} | 同じものを2回 / 3回 |
計測ツールのリダイレクトURLの中にLPのURLを渡すとき、リダイレクトが2段になっていると1回のエンコードでは足りずにパラメータが途中で切れます。その場合に {lpurl+2} を使います。単純にパラメータを足すだけなら {lpurl} で十分です。
LINEヤフー広告には配置の制約があります。検索広告の {unescapedlpurl} は「URLの先頭でのみ設定可」、ディスプレイ広告の {lpurl+2} {lpurl+3} {escapedlpurl} は逆に「URLの先頭に記載するとエラーになり登録できません」。
Meta は波かっこが2つ、そして名前は公開時点で固定される
Meta のダイナミックパラメータは二重波かっこです。Google と同じ {campaign.name} と書くと置換されず、そのままの文字列が送られます。
| パラメータ | 内容 |
|---|---|
{{campaign.name}} / {{campaign.id}} | キャンペーン名 / ID |
{{adset.name}} / {{adset.id}} | 広告セット名 / ID |
{{ad.name}} / {{ad.id}} | 広告名 / ID |
{{site_source_name}} | 配信先(Facebook / Instagram など) |
{{placement}} | 配置(フィード / ストーリーズなど) |
名前を取得するパラメータは、広告を最初に公開した時点の値で固定されます。 あとで広告セット名を変えても、パラメータに入る値は変わりません。命名規則を変えた履歴が計測データに残り続けるので、名前ベースではなく {{adset.id}} のようなID系を使うか、名前を変えないルールにするかを決めておく必要があります。
もう1点、名前系のパラメータは中身がそのままURLに入ります。キャンペーン名に日本語やスペースが入っていると、URLに日本語が混ざったり %20 が並んだりします。パラメータに使う階層の名前は半角英数字とアンダースコアに寄せておくのが安全です。
{keyword} はキーワードで、検索語句ではない
{keyword} が返すのは入札しているキーワードで、ユーザーが実際に打ち込んだ検索語句ではありません。検索語句を取得するパラメータはありません。
また日本語キーワードはURLエンコードされて入るため、計測ツール側では %E3%82%B7%E3%83%A3... のような形で見えます。GA4 のレポートで読みたい場合は、キーワードそのものではなく {targetid} でIDを取り、管理画面側と突き合わせる方が扱いやすいことがあります。
キャンペーンIDは utm_campaign ではなく utm_id に入れる
GA4 にはキャンペーンIDのための専用パラメータ utm_id があります。これは非Google媒体のコストデータインポートの結合キーで、Yahoo と Meta の広告費を GA4 に入れて ROAS を並べて見るなら必須です(GA4 は現在、非Google の広告費は手動インポートのみ対応)。
一方 utm_campaign は標準レポートの「キャンペーン」列に出る、人が読むラベルです。役割が分かれているので、こう使い分けます。
| 役割 | |
|---|---|
utm_id | 機械が突き合わせるキー。キャンペーンID |
utm_campaign | 人が読むラベル。キャンペーン名 |
ただし**utm_campaign を全媒体でキャンペーン名に揃えることはできません**。キャンペーン名を動的に取得できる媒体が限られているからです。
| キャンペーンIDの動的取得 | キャンペーン名の動的取得 | |
|---|---|---|
| Google 広告 | {campaignid} | 不可(ValueTrack に名前のパラメータがない) |
| LINEヤフー広告 | {campaignid} | 不可 |
| Meta 広告 | {{campaign.id}} | {{campaign.name}} |
名前で揃えようとすると Google と Yahoo はキャンペーンごとに手打ちになり、アカウント単位に一度貼るだけという利点が消えます。そのため方針としては、utm_id は全媒体でID、utm_campaign は名前が取れる Meta だけ名前にするのが現実的です。名前を取れない媒体の utm_campaign はIDのままにします。空にすると GA4 の「キャンペーン」列が (not set) になり、IDが入っているより悪くなるためです。上のツールの推奨構成もこの方針で入っています。
Meta で名前とIDを両方持つ意味はもう1つあります。前述のとおり {{campaign.name}} は初回公開時点の名前で固定されるため、名前が古くなっても utm_id で正しく突き合わせられるようにしておくためです。
utm_id だけに寄せないのは、utm_id を認識しない計測ツールが多いからです。GA4 以外に流すことを考えると utm_campaign も埋めておく方が安全です。
検索広告の {campaignid} は管理画面の「キャンペーンID」ではない
IDを結合キーに使うなら、ここは必ず確認してください。これは検索広告の話で、ディスプレイ広告では事情が違います(次の節)。
LINEヤフー広告 検索広告の {campaignid} が返すのは**「キャンペーントラッキングID」で、管理画面に表示される「キャンペーンID」とは別の値**です。{creative} と {adgroupid} も同様に、トラッキング専用のIDを返します。
| パラメータが返す値 | 管理画面の別項目 |
|---|---|
{campaignid} → キャンペーントラッキングID | キャンペーンID |
{adgroupid} → 広告グループトラッキングID | 広告グループID |
{creative} → 広告トラッキングID | 広告ID |
GA4 のコストインポート用ファイルに管理画面の「キャンペーンID」を書くと結合しません。 どちらも管理画面やキャンペーンエディターで確認できますが、初期設定では表示されていないため、表示項目を追加する必要があります。インポート側をトラッキングIDに合わせてください。
ディスプレイ広告は検索広告と別の一覧になっている
同じ LINEヤフー広告でも、検索広告とディスプレイ広告ではパラメータの一覧そのものが別です。名前が同じでも中身が違うものがあるため、検索広告の設定をそのまま流用すると壊れます。
いちばん危ないのが {device} です。返る値が全く違います。
{device} が返す値 | |
|---|---|
| 検索広告 | m(スマホ) / t(タブレット) / c(PC) |
| ディスプレイ広告 | DESKTOP / SMARTPHONE / TABLET / CTV / NONE |
デバイス別にレポートを組んでいる場合、この違いを踏まえないと集計が合いません。
ID系の扱いも違います。ディスプレイ広告の {campaignid} {adgroupid} {creative} は、ヘルプ上それぞれ「キャンペーンID」「広告グループID」「広告ID」とされていて、検索広告のようなトラッキングID表記ではありません。
使えるパラメータの範囲も別です。
| パラメータ | |
|---|---|
| 検索広告のみ | {keyword} {matchtype} {targetid} {feeditemid} {escapedlpurl+2} {escapedlpurl+3} |
| ディスプレイ広告のみ | {media} {account} {os} {isApp} {deviceAppType} {engagementType} {adType} {transactionId} {siteid} {useragent} {ipaddress} {language} {ifa} 系 |
ディスプレイ広告側の後半({ifa} {ci} {engagementType} {adType} {transactionId} {siteid} {useragent} {ipaddress} {language} {deviceAppType})は、ディスプレイ広告と連携済みの広告効果測定ツールを使っている場合のみ指定できます。スクリプトタグでの計測には使えません。
もう1点、大文字小文字が区別されます。ディスプレイ広告の広告種別は {adType} とキャメルケースで、Google 広告の {adtype}(ショッピング広告の種類)とは名前も意味も別物です。上のツールは大文字小文字まで見て判定します。
Meta 広告の utm_source に meta を使うとチャネル分類が崩れる
GA4 のデフォルトチャネルグループ「有料ソーシャル」の判定条件は、次の2つの AND です。
- 参照元がソーシャルサイトの一覧に一致する
- メディアが
^(.*cp.*|ppc|retargeting|paid.*)$に一致する
この一覧は Google がスプレッドシートとして公開しています。819行あるこの一覧を実際に検索した結果が次のとおりです。
| 値 | 一覧での扱い |
|---|---|
meta | 登録なし |
facebook / fb / facebook.com | SOURCE_CATEGORY_SOCIAL |
instagram / ig | SOURCE_CATEGORY_SOCIAL |
msg / an | 登録なし |
utm_source=meta&utm_medium=paid_social は2つ目の条件だけを満たすため、「有料ソーシャル」ではなく「その他(有料)」に分類されます。メディアの正規表現には一致してしまうのでエラーにもならず、レポート上は静かに別チャネルへ積まれます。
なお twitter は登録されていますが x は登録なしでした。媒体がブランド名を変えても一覧がすぐには追従しない、という同じ構図です。
{{site_source_name}} を使う手もある
{{site_source_name}} が返す fb と ig はどちらも登録済みなので、utm_source={{site_source_name}} にしてもチャネル分類は崩れません。配信先ごとに参照元が分かれるぶん、facebook 固定より正確です。
ただし msg(Messenger)と an(Audience Network)は登録がないため、その2つの配信面だけ「その他(有料)」に落ちます。
| チャネル分類 | 参照元の正確さ | |
|---|---|---|
utm_source=facebook(固定) | 全配信面が有料ソーシャル | Instagram も facebook になる |
utm_source={{site_source_name}} | fb / ig は有料ソーシャル、msg / an は落ちる | 配信面ごとに正確 |
上のツールは facebook 固定を推奨構成にしています。 全配信面が確実に有料ソーシャルに入る方を既定にし、配信先は platform={{site_source_name}} を追加パラメータで持たせて両方確保する形です。Messenger と Audience Network を使っていない、あるいは参照元の正確さを優先するなら、utm_source を {{site_source_name}} に変えても分類は壊れません。
Google と LINEヤフー広告については google yahoo がどちらも一覧に登録済みなので、そのままで問題ありません。上のツールは、選んだ媒体で登録が確認できない utm_source を入れると警告を出します。
Google 広告 × GA4 なら utm は必須ではない
GA4 と Google 広告は自動タグ設定(gclid)で連携するため、GA4 で見るだけなら utm を手で付ける必要はありません。Google 広告アカウントとリンクしていれば、キャンペーン名まで GA4 側で取得できます。
utm を付ける主な目的は、GA4 以外の計測ツールや BI ツールで媒体を横断して突き合わせること、そして GA4 に非Google媒体のコストを入れることです。
? の重複のような明らかな崩れは弾かれますが、{keyword} が置換されないケースのようにエラーにならない事故は管理画面では気づけません。