Google広告のコンバージョンタグをサーバサイドGTMで実装する

[Ateam Brides Inc. Advent Calendar 2021](https://qiita.com/advent-calendar/2021/ateam-brides)の3日目は
株式会社エイチームブライズの川村が担当します！


# サーバサイドGTM（以下`ssGTM`）とは
* 2021年10月に新たに正式版がリリース（それまではベータ版）
* 今までの`GTM（ウェブ用コンテナ）`とは異なり、GCP等の仮想サーバ上に構築
* 有料だけど大体月10,000円～で運用できそう

## メリット
* ITP対策
    * 自社で構築したサーバ(広告主のサブドメイン)からCookieを発行する（=1stPartyCookie）
    * これまではiOSの場合、24時間で3rdPartyCookieは消失していたが
    * 3rdPartyCookieに頼らないので、計測期間が90日
        * ※コンバージョンリンカーと併用した場合
    * 広告CVが精緻に計測できるので、より効率的な広告配信に用いる
        * 特に自動入札のシグナルとして有用そう

https://qiita.com/Shuni/items/a814aa1420dac63c16a8

* 軽い
    * イベント設定だけ`GTM`（ウェブ用コンテナ）で行う
    * タグの処理は`ssGTM`で行うのでとにかく軽い
    * CoreWebVitalsあたりにも好影響ありそう

## デメリット
* 実装に開発工数がかかる
* マーケターにはやや難易度が高い
* 有料

# いざ実装
ここからはタグを実装して計測するところまで行きます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319121/75e85bc9-d182-ef36-7e68-ffe5d89aaf73.png)

## 手順

1. GA4の実装（別記事）
1. GCPを使ったssGTMの実装（別記事）
1. Google広告のタグ発行
1. GTM（ウェブコンテナ）側の設定
1. GTM（サーバコンテナ）側の設定
1. 発火テスト

## GoogleAnalytics4（以下GA4）の実装
`ssGTM`は`GA4`と必ずセットで実装します
既存のGoogleAnalytics（`UA`）を利用している方であれば、この辺はポチポチで進みます

https://ayudante.jp/column/2021-01-26/11-00/

のちのち、このデータ送信をウェブ用コンテナ経由から、サーバサイド経由に変更します

## サーバサイドGTMの構築・実装
弊社エンジニアの記事を参考にしてください

https://qiita.com/takaHAL/items/38781b4f7d3f022508f1

## Google広告からタグを発行する

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319121/1935db54-738a-46d7-da67-b0f452718a62.png)

Google広告の管理画面から `ツールと設定` > `コンバージョン` と進みます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319121/1efb5334-2c11-280f-ff30-b7a28b719943.png)

`Googleタグマネージャを使用する`を選んだうえで
`コンバージョンID`と`コンバージョンラベル`を控えます

既に`GTM`(ウェブ用コンテナ)を用いて広告運用をしている広告主も多いと思いますので
個人的には、 `コンバージョン列に含めない`にしたうえで、2つのタグが並列で発火する期間を作り
サーバサイドのタグは、しっかりテスト蓄積をする期間を作った方が良いと思います。

ウェブサイドとサーバサイドをしばらく同時発火させておいて
合計発火数を比較すれば、ITPの影響で欠損したコンバージョン数を調べることもできそう

## GTM（ウェブ用コンテナ）の設定をする

この部分の設定をします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319121/54e00e42-7145-5fba-5f0e-4e3dd4aff429.png)

### Googleアナリティクス: GA4 設定

GTM（ウェブ用コンテナ）から `タグ` > `新規作成` > `Googleアナリティクス: GA4 設定`を選択
`サーバコンテナに送信する`にチェックをしたうえで、サーバコンテナのURLを入力してください

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319121/af573589-26fc-75eb-548f-233506c5a023.png)

新たな設定フィールドに`first_party_collection`、値に`true`を格納します

:::note warn
サーバコンテナがあなたのサブドメイン内で実装されており、1st Party Cookieであることを宣言しないとGA4は送られてきたデータを処理しようとしません。よって、タグ内の設定フィールドに上記処理を追記する必要があります
:::

### イベントタグの設定

`GTM`（ウェブ用コンテナ）から `タグ` > `新規作成` > `Googleアナリティクス: GA4 イベント`を選択
どんなタイミングでイベントを送信するか、をトリガーで指定します。
このイベントの送信を受けて、後ほど設定する`ssGTM`のCVタグが発火します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319121/84b0b1d5-a961-7123-71a3-c4935c5d36af.png)

:::note warn
イベント名で指定する値は、特にこだわりが無ければ、GA4の推奨値を設定してください。purchaseやgenerate_leadが良く使われています。
:::

https://support.google.com/analytics/answer/9267735

これで`GTM`（ウェブ用コンテナ）の設定は終わりです。

## ssGTMの設定をする

ここからは、前章までの手順を踏んで
`ssGTM`が実装されており、`GA4`のプロパティが作られている前提で進みます。

下図の黄色部分です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319121/38e31036-cebe-ff86-475e-8afe7cbcb703.png)

### GA4タグを設定します

GA4プロパティへのデータ送信を、サーバサイド経由に変更します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319121/69392095-5d79-6872-4306-683d02a01203.png)

Facebookの`ConversionsAPI(CAPI)`を用いている場合は、`GA4`に送るべきでない情報も含まれると思います。その場合は、`イベントパラメータ` > `除外するパラメータ`を必ず設定してください。

`CAPI`やGoogle広告の`拡張コンバージョン`など、ユーザデータを広告配信に活用する場合は同意が必要な場合がありますので、必ずチェックしてください。

そもそも、`ssGTM`自体もITP対策の文脈で対応していますし、個人情報を取り扱う際は細心の注意を払いましょう。

### コンバージョンリンカーを設置

まずは`コンバージョンリンカー`タグを設置しましょう。
すべてのページで発火するように設定するだけですので、とても簡単です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319121/919d6409-b023-3fed-69f5-5f8b546023cd.png)

`コンバージョンリンカー`は、広告サーバ（外部）から受け取った3rdPartyCookie（`gclid`）を1stPartyCookieとして再設定してくれます。とても重要な役割です。

:::note info
ssGTMを経由して発行される 1stPartyCookieは「FPGCLAW」という名称で、有効期間は90日です
:::

### トリガーの作成
先ほどクライアント側で設定したイベントで発火するタグを作る為に、トリガーを作成します。
基本的には `カスタムイベント`から`GTM`（ウェブ用コンテナ）で命名した`イベント名`を記載します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319121/d3ca2c07-61f7-bb68-3b5c-09a98d35adf5.png)


### Google広告のタグを設置

今回はCVタグのみを設置します。
リタゲタグを設置したい場合もほぼ同様の手順で進められます。

先ほど控えた`コンバージョンID`と`コンバージョンラベル`を記入します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319121/d8ade322-8303-799a-191b-8077802db1c1.png)

トリガーには、先ほど作成したイベントを適用します。
これでサーバサイド側の設定は完了です。

### 発火テスト

タグを埋め込んだページにアクセスします。
テストで`gclid`に仮値を入れてみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319121/6ebc4340-7e2b-9e0e-bc94-4cc0725bb84d.png)

この時点で、Chromeの`検証` > `Application` > `Cookie` から
`FPGCLAW (1stPartyCookie)`と`gcl_aw (3rdPartyCookie)`が存在するか確認すればOKです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319121/9e5620d5-dfc4-5893-f426-a192a7abad1e.png)

```
https://hana-yume.net/?gclid=hoge 
https://hana-yume.net/.../complete/?gclid=hoge
```

無事にサーバサイド側の`GA4タグ`と`コンバージョンリンカー`が発火しているのが確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319121/a717ea5a-a8d2-e556-5ad7-59057f8ecd41.png)

次に、コンバージョンポイントのページにもアクセスしてみます。
ウェブ用コンテナに設置したイベントタグから、`web_reserve`が送られていますね。
しっかりサーバサイド側のCVタグが発火しているのが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319121/774d6fb5-c9f9-6864-7136-9ee09ab59254.png)

出稿しているGoogle広告を実際にクリックして、
管理画面上に計上されているかチェックすると、より確実です。

# まとめ

2021年10月に正式版がリリースされたサーバサイドGTM（ssGTM）を使ってみました
これで、計測Google広告のCVタグは発行後90日間も保持することができます。

とはいえ、広告担当者は他媒体のITP対策も進めていく必要がありますよね。
計測周りはFB/IGやYSAも一定のソリューションがありますが、リターゲティングに関してはどこも厳しいです

Google広告であればSDCを用いてGoogleに運用任せていくか
FB/IG、YDNであれば類似ユーザーやカスタマーマッチでユーザにリーチしてく道がありそうです

次回は、FacebookのConversionsAPIやGoogle広告の拡張コンバージョン
についても書いてみたいと思います（時間があれば）

## 参考
参考にさせていただいた文献です

https://developers.google.com/tag-platform/tag-manager/server-side/ads-setup

https://www.simoahava.com/analytics/google-ads-server-side-tagging-google-tag-manager/

https://support.google.com/analytics/answer/9267735

https://www.youtube.com/watch?v=UOkDOXCUIm0

https://note.com/digitalift/n/n9c245526b561