そのGoolge広告、ITP2.0に対応していますか？-チェックリスト-

#そのGoolge広告、ITP2.0に対応していますか？
JavaScriptで生成したクッキーの保存期間が短くなるITP2.1。
しかしその前に、ITP2.0に対応していなければ、そもそも話になりません。
チェックリストを用意したので確認してみてください。

こちらもどうぞ(Google公式です): 
[Google 広告のコンバージョンをトラッキングする方法]
(https://support.google.com/google-ads/answer/7521212?hl=ja)

##0. 自動タグ設定はONになっていますか？
◆YES => [1へ](#1-広告をクリックしてから実際のランディングページまでにリダイレクトはないですかpcサイト-スマホサイトのリダイレクト含む)
◆NO  => <b>有効にしてください！</b>
[理由] 自動タグ設定を有効にすることで、<b>gclid</b>という広告ID(<b>g</b>oogle <b>cl</b>ick <b>id</b>)がURLに付与されます。このなかに「Google広告アカウント、キャンペーン、キーワード、広告そのもの」などのデータが含まれています。

<img width="796" alt="auto-taggin.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349476/11e647b5-fc91-150d-ce0f-20c9be532560.png">


このgclidをもとに、<b>グローバルサイトタグ or Googleタグマネージャーのコンバージョンリンカーが、ITPに対応するためのファーストパーティークッキー(_gcl_awや_gac)を生成します。</b>ということはこれはONでなくてはスタートラインに立てません！

参考:
[Google公式: Google 広告の自動タグ設定が正常に機能するか確認する](https://support.google.com/analytics/answer/2938246?hl=ja)

実際にとある広告をクリックしたときのURL:
http://activamedia.com.my/?keyword_k=google%20ad<b>&gclid=Cj0KCQjwwODlBRDuARIsAMy_28UWNdRZ0QL2NDI2Im627SMLAlVQ30qewTrdHWzNeUzJunzX8-RZuW4aAuAqEALw_wcB</b>


##1. 広告をクリックしてから、実際のランディングページまでにリダイレクトはありますか？(PCサイト->スマホサイトのリダイレクト含む)
◆NO => [2へ](#2-グローバルサイトタグもしくはgoogleタグマネージャーにてコンバージョンリンカーを作成し全ページで動作していますか)
◆YES  => リダイレクト後にもgclidは残っていますか？ 

[確認方法]
　1.リダイレクト前のURLに「?gclid=TEST」(もし、?がURLにすでにある場合は、「&gclid=TEST」)を付与
　2.リダイレクト後にも「?(&)gclid=TEST」が残っていればOK

　　◆gclidはリダイレクト後にもある => [2へ](#2-グローバルサイトタグもしくはgoogleタグマネージャーにてコンバージョンリンカーを作成し全ページで動作していますか)
　　◆gclidがリダイレクト後ない... =>
 
  　　・リダイレクトを発生させない 
  　　  　　  　　OR
　　  ・ダイレクト時に<b>? or & gclid=...</b>が引き継げるよう設定を変更してください。
 　　　　(理由は0をお読みください。)

[Google公式: Google 広告の自動タグ設定が正常に機能するか確認する](https://support.google.com/analytics/answer/2938246?hl=ja)

>リダイレクトがサーバーサイドの設定によって発生している場合は、リダイレクトが発生しないようサーバーの設定を変更します。方法はウェブサーバーによって異なります。たとえば Apache サーバーの場合は、.htaccess ファイルでリダイレクトの設定を行います。リダイレクトを回避できない場合は、リダイレクトの際に gclid などのクエリ パラメータが最初の URL から最終ページ URL に渡されるよう、サーバーを設定します。たとえば、自動タグ設定を使用している最終ページ URL が www.example.com/redirecting-page?gclid=TeSter-123 であれば、ユーザーのリダイレクト先が www.example.com/new-url?gclid=TeSter-123 になるようにします（ページの URL は変化しているものの、glid パラメータはそのままである点に注目しましょう）。

[確認方法]
・「ランディングページ」の一覧を見ても、リダイレクトがあるかどうかわかりません。
↓は最終のランディングページのURLしか見れない。
<img width="508" alt="キャプチャ1.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349476/6021c56d-5eca-65f1-c34b-80085caf9aec.png">

「広告と広告表示オプション」=>「広告」から、トラッキングテンプレート(Tracking Template)を確認！
※スマホサイト専用URLの指定は「Use a different URL for mobile」をチェック
![aaaa.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349476/48769e00-09f1-c9cb-7d0a-3be84b870a7d.png)

※[参考] [Redirect Path](https://chrome.google.com/webstore/detail/redirect-path/aomidfkchockcldhbkggjokdkkebmdll?hl=ja)
このプラグイン使えば、どこでgclidが消えたか一目でわかります！


##2. グローバルサイトタグ、もしくはGoogleタグマネージャーにて、コンバージョンリンカーを作成し、全ページで動作していますか？
◆YES => [3へ](#3ファーストパーティクッキー_gcl_awは作られていますか)
◆NO => 
　<b>全ページに導入がGoogle推奨</b>です。少なくとも
　・すべてのランディングページ
　・コンバージョンを動作せるページ
　・ドメインの切れ目のページ
　には必ず必要です。全ページに導入しましょう。

[理由]
・グローバルサイトタグかコンバージョンリンカーが、全ページに必要な理由は、<b>「個人情報の持ち方のルールが厳しいSafariでも、削除しないファーストパーティクッキー(_gcl_aw)を生成し引き継いで、正確にコンバージョン計測をするため」</b>です。 こいつらがクッキーを作ったり運んだりしているんですね。すごく重要なポイントです。

参考: [結局のところ、gtag / グローバルサイトタグとはなんなのか] (https://qiita.com/akiras7171/items/066fde9a2dbcc39f3dce "結局のところ、gtag / グローバルサイトタグとはなんなのか")

##3.ファーストパーティクッキー(_gcl_aw)は作られていますか？
[確認方法]
1.[Sugoi Cookies: gclidテスター](https://chrome.google.com/webstore/detail/sugoicookies-gclid-tester/oidgodfancakeifokbiocnnlfoocmbpd?hl=ja)プラグインをダウンロード
2.gclid=...に適当な文字列を入れて「GO!」
3.コンソールにて「_gcl_aw」が確認できればOK

◆YES=> [4へ](#4-クロスドメインはしていませんかランディングページとコンバージョンが発火するページのドメインは一緒ですか)
◆NO => コンバージョンリンカーがあるかどうか、トリガーは間違っていないか、JSエラーがでていないかを確認しましょう。


##4. クロスドメインはしていませんか？(=ランディングページとコンバージョンが発火するページのドメインは一緒ですか？)
◆YES=> [5へ](#5-iframeからコンバージョン動作させてないですか)
◆NO => [【ITP 2.0】Google広告でクロスドメインのコンバージョン計測をするためのTODO](https://qiita.com/akiras7171/items/15073a755406fca62eb0)
 

##5. iFrameからコンバージョン動作させていますか？
◆NO=> [6へ](#6-yahooタグマネージャー使ってますか)
◆YES => ・iFrameからコンバージョンを動作させない
　　　 ・もしくは、[postMessage(Mozzilaに飛びます)](https://developer.mozilla.org/ja/docs/Web/API/Window/postMessage)で、
　　　　親ドメインからコンバージョンを発火させられる仕組みを作りましょう。

[理由]
・クッキーはドメインに紐づきます。<b>いくら同じページのように見えても、親のページとiFrame内は全く違うページ扱い。</b>iFrameは親ページのクッキーにアクセスできません。
・どれだけ一生懸命コンバージョンを動作させようとしても、iFrame内のドメインは「いつ、どの広告・どのキャンペーン・どのキーワードで広告クリックしたか」、知る由もありません。　

・iFrame: コンバージョンのタイミングで以下を動作

```Javascript
const msg = JSON.stringify('iframe_conversion'); // たとえば
window.parent.postMessage(msg, 'https://exampleA.com'); //親のドメインをここに
```

・iFrameをもっている親のページにて以下を導入

```Javascript
window.addEventListener('message', function(e){
   const origin = e.origin;
   let data = e.data;
   // JSON parse できるかチェック
   if(!IsJsonString(data)){
      return;
   }
   // 目当てのiFrameからのメッセージであることを確認
   data = JSON.parse(data);
   if(origin.indexOf('www.theIframe.com')!=-1){
      // メッセージ自体の確認
      if(data==='iframe_conversion'){
        // GTMの場合 - カスタムイベントを発火
        dataLayer.push({'event':'iframe_conversion'});
        // gtagの場合 - イベントスニペット発火
        // gtag('event','conversion','AW-..../....')l
      }
   }
});

function IsJsonString(str) {
  try {
    JSON.parse(str);
  } catch (e) {
    return false;
  }
  return true;
}
```

##6. Yahooタグマネージャー使ってますか？
◆NO=> [7へ](#7-コンバージョン自体は動作していますか)
◆YES => Yahooタグマネージャーで、「Google広告の設定タグ」のような形でタグを設定すると、<b>Yahoo独自の解釈</b>のリマーケティングタグやコンバージョンタグが入ります。(= HTTP通信ができるだけのもの) これはITPに対応できません。

TODO:
<b>スマートカスタムタグ(カスタムHTML)</b>で、Google推奨の「グローバルサイトタグ」と「コンバージョンイベントスニペット」を導入しましょう。
※すべてのページでグローバルサイトタグ、サンクスページで「グローバルサイトタグ + コンバージョンイベントスニペット(順番重要です)」を導入してください。


##7. コンバージョン自体は動作していますか？
◆YES=> <b>おめでとうございます！</b>やったぜ。
◆NO => あと少しです！トリガーの修正やJSエラーがないか確認しましょう。

参考: Googleタグアシスタント(https://chrome.google.com/webstore/detail/tag-assistant-by-google/kejbdjndbnbjgmefkgdddjlbokphdefk?hl=ja) コンバージョン動作確認はこれで。


以上です！ありがとうございました。