[ITP 2.0] Google広告でクロスドメインのコンバージョン計測をするためのTODO

#はじめに: 

##やりたいこと
・<b>Safariブラウザでもコンバージョン計測がしたい。</b>
　日本のiPhone普及率を考えると、ここは無視できないところ。

##そのために
・ファーストパーティークッキー(後述しますが、_gcl_aw/_gac)を生成する。
・広告をクリックした直後のランディングページと、コンバージョン計測したいページの<b>ドメインが異なる場合(クロスドメイン)</b>、特別な方法でクッキーを渡してあげる必要がある。

##しかし
・Googleの資料を見ても、クロスドメイントラッキングの話がなかなかない。
  (これ解決しないと、ITP対応できないでしょうに！)
・[Google 広告のコンバージョンをトラッキングする方法](https://support.google.com/google-ads/answer/7521212?hl=ja)
こんなん読んでも、ファーストパーティー、どころか、<b>クッキーの「ク」の字もない。</b>

##そこで、
参考資料:
　・[コンバージョン トラッキングの実装を検証する](https://developers.google.com/adwords-remarketing-tag/?hl=ja)
　・[Google アナリティクスによるウェブサイトでの Cookie の使用](https://developers.google.com/analytics/devguides/collection/analyticsjs/cookie-usage?hl=ja)
　・[Google 広告の自動タグ設定が正常に機能するか確認する](https://support.google.com/analytics/answer/2938246?hl=ja)
　・[ドメインをまたぐカスタマー ジャーニーを測定する](https://developers.google.com/gtagjs/devguide/linker?hl=ja)

ここらの資料をすべてまとめてみました。

#ドメインをまたいでクッキーの引継ぎをするために
・GTMコンバージョンリンカー
・gtagでset linker
いずれかの方法で、クロスドメインの設定が必要になります。

#① Googleタグマネージャーで設定する場合
<img width="734" alt="CV linker.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/349476/608b4fa6-e154-acfe-09ba-1014f4eee893.png">
・ドメイン間のリンクの有効可にチェック
・カンマつなぎで、複数ドメインを登録する
・ドメインまたぎの瞬間がフォームの送信(カートに入れた瞬間にドメインが変わる場合など)の時には、「装飾フォーム: true」にする必要あり
　(これが結構罠。デフォルトtrueではダメなんか...)
・トリガーはページビュー: All pages
#② gtagでset linkerの設定する場合
・以下のコードでドメイン間のリンクを有効にしてあげます。
・が、かならず <b>gtag('js', new Date());</b>よりも早く呼ぶ必要があります。
(テストしましたが、クッキー引き継げなかったです。これも罠。)

```Javascript
...
gtag('set', 'linker', {
  'domains': ['exampleA.com', 'exampleB.com'],
  'decorate_forms': true // trueにしておきましょう。
});
gtag('js', new Date());
...
```

よって、最終的な形はこうなります。

```HTML
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-XXXXXXXX"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}  
  gtag('set', 'linker', {
    'domains': ['exampleA.com', 'exampleB.com'],
    'decorate_forms': true
  });   
  gtag('js', new Date());
  gtag('config', 'AW-XXXXXXXX');
</script>
```

#③ 本当にクロスドメインでクッキーを引き継げているのか？の検証
Google広告にて、コンバージョン計測に活用できるファーストパーティークッキーは2つです。
・_gcl_aw (Google広告のクッキー)
・_gac  (※アナリティクスのクッキーです。アカウントのリンクが必要)

よって、<b>「自動タグ設定にて付与された_gcl_aw / _gacを、ドメインAからドメインBに引き継げているかどうか」</b>の検証が必要ですね。

#④ 検証方法
##手順1. gclid付与(広告クリックの状態を疑似的に再現)
「?gclid=xxxxx」とドメインAにてURLに付与
##手順2. クッキー確認
デベロッパーツールにて、「_gcl_aw」というクッキーが生成されたか確認
※_gcl_aw=xxxxx(gclidで付与した値) という形式のクッキーです
<img width="808" alt="クッキーの生成.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/349476/51e1aa82-5f52-8c63-ff04-2c90c6d5e542.png">

##手順3. ドメインを移動して、URLのクエリパラメータを確認(? or &_gl=...)
ユーザーと同じ導線でドメインBへ。URLに「<b>?_gl=1*xxxxxx*_gcl_aw*xxxxx</b>」というクエリが付くのを確認してください！(この中にクッキーの情報が入っているイメージ)
もし、リダイレクトしていてこのクエリパラメータが失われているいるようであれば、リダイレクトの設定を変更します。

[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 は変化しているものの、gclid パラメータはそのままである点に注目しましょう）。

※ 上記の「?gclid=」を<b>「?_ gl=」</b>に読み替えてください。
　 gclidは広告クリック直後の1回のみ、_glはクロスドメインの際に付与されるクエリパラメータです。

##手順4.  ドメインBでクッキーを確認
ドメインBにて、<b>手順2でチェックしたクッキーと同じものが引き継がれていれば、ドメインBへのファーストパーティークッキーの引き継ぎ完了<b>です。
##プラグイン SUGOI!Cookies: gclid tester for Google Ads
[SUGOI!Cookies: gclid tester for Google Ads](https://chrome.google.com/webstore/detail/sugoicookies-gclid-tester/oidgodfancakeifokbiocnnlfoocmbpd?hl=ja&utm_source=qiita)
<img width="220" alt="440-280.png" src="https://qiita-image-store.s3.amazonaws.com/0/349476/6eb9a46b-63b2-99a0-ec83-3b1880589dab.png">

・手動での検証方法が面倒なので、プラグインを作ってみました。 気になる方は試してみてください。
・あくまで個人の趣味で開発してますが、バグがあれば直すので一報いただけると嬉しいです。随時改善中です。

#⑤ 補足: コンバージョンデータ送信時のHTTP通信を見てみる 
　- もし本当の本当に<B>「コンバージョン計測時にファーストパーティークッキーのデータを送信できているのかどうか」</b>気になるのであれば、コンバージョン計測時のHTTPリクエストを確認してみましょう。

##手順1　コンバージョンのHTTPリクエストを探す
デベロッパーツール=> Network 
=> www.googleadservices.com/pagead/conversion/ で検索
##手順2　ファーストパーティークッキーが送られているか確認
この通信にて、「_gcl_aw / _gac」が送信されていれば安心です。

<img width="418" alt="クッキー.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/349476/6145d37d-c269-8504-fd59-5c1c7fc960a7.png">

※Googleアナリティクスのクロスドメイン設定ができている、かつ、アカウントのリンクができている場合、<b>_gac</b>というクッキーも活用できます。

#まとめ
・Google広告のコンバージョン計測で使えるファーストパーティーは「<b>_gcl_aw</b>」「<b>_gac</b>」の2つ。今回は「_gcl_aw」をクロスドメインで引き継ぐための話でした。

・クッキーを渡す側(ドメインA)、もらう側(ドメインB)のいずれもで、
　「GTM」 OR 「gtag」でのクロスドメイン設定の実装が必要になります。

以上です！