計測タグの設置依頼でよくある罠

計測ツールを導入したり、Web広告施策を始める場合に避けて通れない「Webサイトへの[計測タグ](https://qiita.com/aqril_1132/items/5cf0c44ab3ec9645fed5)の設定作業」について、
依頼通りに作業すると事故が発生してしまう状況の**あるあるコレクション**。

## この記事が役に立つ状況
- 「正しく計測タグを設定した（or 設定依頼した）ハズなのに何かがおかしい」とき
- 予めよくある落とし穴を把握して心の準備をしておきたいとき
- 「自分もこんなんあったわー」という気持ちに浸りたくなったとき

# 計測タグの設置依頼でよくある罠

## サブドメインが変わる/消えるURLパターンの存在

### タグ設置依頼の内容

![技術職の人物アイコン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/e5c7d41b-2e56-26da-3a9f-58235c602e3e.png) 「URLに`https://example.com`を含むすべてのページにこの計測タグを設定してください」

### タグ設置依頼から考慮が漏れていた内容

- `https://www.example.com`のように、www付きでも全く同じページ内容が表示された
- `http://www.example.com`のように、httpでもhttpsでも全く同じページ内容が表示された
- `https://form.example.com`のように、別のサブドメインが存在した

### トラブルを防ぐための確認内容

- `http`でアクセスがあったときに計測タグを発火させたくないという要件の有無
- `www`のようなサブドメインが（将来的にでも）URLに入ったときにタグを発火させたくないという要件の有無
- [DNSdumpster.com](https://dnsdumpster.com/)で対象のドメインに未知のサブドメインがないか調査する

大抵の場合、「URLに`example.com`を含むすべてのページに設定」という作業にすれば要件を満たせる。

また、この場合、ざっくり「URLに●●●を含む」と指定しても構わないが、Google Tag Managerであれば
「Page Hostnameに●●●を含む」と設定してあげることで、Web魚拓や[Googleのキャッシュページ](https://support.google.com/websearch/answer/1687222)としてコピーされたページにアクセスがあったときに計測タグが発火することを防ぐことができる。

#### [DNSdumpster.com](https://dnsdumpster.com/)の使い方
[DNSdumpster.com](https://dnsdumpster.com/)を開いて表示されるページに「`qiita.com`」のように調査対象のドメインを入力して調査するだけ。
このとき、`https://`のようなプロトコル名や`www.`のようなサブドメイン、末尾のスラッシュ記号などは抜いて入力する。

[![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/ceef0ee0-32c4-36dc-3dbc-fb51c6568c56.png)](https://dnsdumpster.com/)

結果として表示される項目の「Host Records (A)」を調べると保有しているサブドメインの一覧を見ることができる。

## `/index.html`が消えるパターンの存在
### タグ設置依頼の内容

![OL風の人物アイコン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/31746eb5-f188-d423-2329-57a1e58243e1.png) 「`example.com/aboutus/index.html`のページにこの計測タグを設定してください」

### タグ設置依頼から考慮が漏れていた内容

- `https://example.com/aboutus/index.php`でも全く同じページ内容が表示された
- `https://example.com/aboutus/index`でも全く同じページ内容が表示された
- `https://example.com/aboutus/`でも全く同じページ内容が表示された

### トラブルを防ぐための確認内容

- 実際にブラウザから`/index.html`を抜いたURLでアクセスしてみて、入力したままのURLで同じページ内容が表示されないか
- `.html`を消したり、`.php`や`.htm`に変えてどのような表示がされるか
- Google Analyticsのような計測ツールから実際に発生しているURLパターンを確認する

タグの発火条件から不必要な条件指定はなるべく排除した方が良いので、特にこだわる理由がないのであれば
以下のような正規表現をタグの発火条件に設定することで様々なパターンに対応できる。

```
example\.com/aboutus/(index(\..+)?)?(\?.*)?(#.*)?$
```

![image (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/3e61c243-c483-d4bb-3492-6b0fa0ea52ad.png)
https://regexper.com/#example%5C.com%5C%2Faboutus%5C%2F%28index%28%5C..%2B%29%3F%29%3F%28%5C%3F.*%29%3F%28%23.*%29%3F%24

## スマートフォン版のページの存在が考慮されていない

### タグ設置依頼の内容

![インド人のイラスト1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/74368ca6-ea35-0f0f-c273-e966b7421aea.png) 「URLに`example.com/product/`を含むすべてのページにこの計測タグを設定してください」

### タグ設置依頼から考慮が漏れていた内容

- スマートフォンからアクセスするとモバイル専用のページである`example.com/sp/product/`にリダイレクトが発生する

### トラブルを防ぐための確認内容

- [PCのブラウザでモバイル端末のシミュレートを行った上で該当のページを開いてみる](https://qiita.com/aqril_1132/items/4789bc12a511136d8bfa#pc%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%AE%E3%83%87%E3%83%99%E3%83%AD%E3%83%83%E3%83%91%E3%83%BC%E3%83%84%E3%83%BC%E3%83%AB%E5%86%85%E3%83%A2%E3%83%90%E3%82%A4%E3%83%AB%E3%83%A2%E3%83%BC%E3%83%89%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%82%A8%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B)
- Google Analyticsやサイトマップでサイトにどんなページがあるか把握できるのであれば、`/product/`を含むページでモバイル専用のURLと思われるページがないか確認する

実は依頼内容に問題はなく、「PCからサイトを閲覧している人にのみ計測タグを発火させたい」という要件が存在している場合もあるので必ず確認の上で依頼内容を修正する。

## プロモーションで使用するページと設置依頼指示を受けたページが異なる
### タグ設置依頼の内容
![火星人アイコン3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/ad9e4986-94f6-ef1c-fd82-a58b30cd525a.png) 「会員登録を増やすプロモーションを行いたいので、サンクスページ`example.com/cart/complete`に計測タグの設定をお願いします」

### タグ設置依頼から考慮が漏れていた内容
- `example.com/cart/complete`は商品注文完了時に表示されるサンクスページであり、会員登録完了後に表示されるサンクスページは`example.com/regist/complete`である

依頼漏れというより完全に依頼ミス。

### トラブルを防ぐための確認内容

- URLに含まれる単語を読んで不自然さを感じたのであれば、Google Analyticsの「すべてのページ」レポート（行動>サイトコンテンツ>すべてのページ）から`thank`、`complete`のような単語で絞り込んで真のサンクスページがないか調査する
- 本当に依頼対象のURLが合っているか確認する
- 計測タグの設定が完了した後設置依頼者側でテスト購入を行ってもらい、問題なく計測できるか確認してもらう

自分が間違っているかもと思って依頼する人はほとんどいないので、「これで本当に合っていますか」という聞き方をしても大体「はい」としか返ってこない。
可能なら「こちらではないですか？」と具体例を提示して聞いた方が良い答えが得やすい。
完全に防ぐことは難しい。

## プロモーションで使用するページに考慮漏れのバリエーションが存在した
### タグ設置依頼の内容
![占い師アイコン1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/709a0f3f-acba-1460-ed41-101334d683c6.png) 「会員登録を増やすプロモーションを行いたいので、サンクスページ`example.com/regist/normal_complete`に計測タグの設定をお願いします」

### タグ設置依頼から考慮が漏れていた内容
- エンドユーザーが無料会員登録ではなく有料会員登録を選択した場合、サンクスページのURLが`/normal_complete`ではなく`/special_complete`になる

### トラブルを防ぐための確認内容

- URLに含まれる単語を読んで違和感を感じたのであれば、Google Analyticsの「すべてのページ」レポート（行動>サイトコンテンツ>すべてのページ）から`thank`、`complete`のような単語で絞り込んで別のサンクスページがないか調査する

フルスクラッチのフォームだと申込フローによって`/thanks`、`/thank`、`/thankyou`,`/thanks.html`とバリエーションが豊富で安定しないこともある。

## 将来的にページのバリエーションが増えることが考慮されていない
### タグ設置依頼の内容
![ダイビングアイコン2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/d9d6f20a-e5f7-d76b-6f16-73e1ac247d1c.png) 「`example.com/lp/p001.html`、`example.com/lp/p002.html`、`example.com/lp/p003.html`に計測タグを設定お願いします」

### タグ設置依頼から考慮が漏れていた内容
- 今存在するページのバリエーションは網羅しているものの、`p004.html`、`p005.html`と、同種のプロモーションを実施するためのページのバリエーションが今後増えていくことの想定
- 今後ページのバリエーションが増える度に毎回忘れずタグの設置先追加の指示をしないといけない工数と人の注意力の限界

### トラブルを防ぐための確認内容
- 明らかに同種のページが増えることが想定できる場合、設置指示を受けたURLのバリエーションからそれもカバーできる設定を提案する

今回のパターンのときは、以下のような対応が考えられる。

- 「URLに`example.com/lp/`を含む」という設定を行う
- 「URLに`example.com/lp/p`を含む」という設定を行う
-  発生しうる数字のパターンを想定して対応可能な正規表現を作成する

```:正規表現の例
example\.com/lp/p\d+[^/]*$
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/55e08c9c-fff6-f74d-af30-c153049ab0dc.png)
https://regexper.com/#example%5C.com%5C%2Flp%5C%2Fp%5Cd%2B%5B%5E%2F%5D*%24

`p002b.html`、`p002b_ydn.html`のように想定外のURLがいつの間にか増えていることがあるので、どの程度厳密な正規表現を作るかは完全にケースバイケース。

## タグマネージャーの設置が漏れているページがある
えぇ…

### トラブルを防ぐための確認内容
- Google Tag Managerであればプレビュー機能を有効にして今回のプロモーションで対象となるページを周回してみて、プレビューウィンドウが表示されないページがないか確認する（「[プレビューの共有](https://support.google.com/tagmanager/answer/6107056#share)」機能を利用すればGTMにログインできない手持ちのスマートフォンでもプレビュー機能が使える）
- [グローバルJavaScript変数`google_tag_manager`の中身に該当のコンテナIDが含まれているかどうか確認](https://qiita.com/aqril_1132/items/421e902d757b9969e49d#google%E3%82%BF%E3%82%B0%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%A3%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8Aid%E7%A2%BA%E8%AA%8D)する。
- クローリングなどの手段で全ページにタグマネージャーが設定されているか確認する

ある日を堺に急にタグマネージャーのタグが消えていたりするので監視ツールでも導入していないと気づけないことも。

また、PCでアクセスしてもスマートフォンでアクセスしてもURLは同じなのに読み込まれるHTMLが完全に別物のとき、スマートフォン向けのHTMLからタグマネージャーのタグが抜けていることが稀によくある。

## コンバージョンタグとリターゲティングタグが入れ替わっている
君の名は…！
### タグ設置依頼の内容

![ローマ帝国の百人隊長.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/721069cd-bb97-547c-170d-937f113c43ae.png) 「計測タグの設定をお願いします。添付の`tag_200123_1.txt`が**コンバージョントラッキングタグ**で、`tag_200123_2.txt`が**リマーケティングタグ**です」

```html:tag_200123_1.txt_コンバージョンタグ???
<script src="https://hoge.adservice.com/s/t_sg.js?sgid=123456"></script>
```

```html:tag_200123_2.txt_リマーケティングタグ???
<script src="https://hoge.adservice.com/s/t_cv.js?cvid=111111&amount=1&quantity=1"></script>
```

- タグ発行者と実際に依頼してきた人が異なり、コミュニケーションの途中で内容の認識が入れ替わっている
- 以前に使った依頼ファイルを上書きして使い回しているが失敗している

### トラブルを防ぐための確認内容

コードを読めなくて良いので計測タグの中に書かれている英単語を読んでみて、違和感がある単語が含まれていないか確認する。

#### それぞれのタグごとによく含まれている単語
※ 必ずしもすべての計測タグに当てはまる訳ではないので参考程度に

| タグの種類 | コードに含まれる頻出ワード |
|:--|:--|
|コンバージョンタグ・成果タグ|conversion conv cnv cv purchase amount quantity order currency action|
|リマーケティングタグ・リターゲティングタグ・セグメントタグ|pixel px remark retargeting mark segmentation segment seg sg beacon|

## 発火順序指定が必要な計測タグの順序指定がされていない
### タグ設置依頼の内容

![サンタクロースのフリー素材8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103957/4c221215-c295-a1ee-6b54-9d5730fcadb2.png) 「以下2つの計測タグの設定をお願いします。」

```html:yss_retargeting
<script async>
ytag({
  "type":"yss_retargeting",
  "config": {
    "yahoo_ss_retargeting_id": "0000000000",
    "yahoo_sstag_custom_params": {
    }
  }
});
</script>
```

```html:yahoo_site_general
<script async src="https://s.yimg.jp/images/listing/tool/cv/ytag.js"></script>
<script>
  window.yjDataLayer = window.yjDataLayer || [];
  function ytag() { yjDataLayer.push(arguments); }
  ytag({"type":"ycl_cookie"});
</script>
```

### タグ設置依頼から考慮が漏れていた内容

設置依頼を受けた計測タグには発火順序の指定があること。
`yahoo_site_general`の計測タグが動作し終わった後に`yss_retargeting`の計測タグが呼び出されないと動作に失敗する。


### トラブルを防ぐための確認内容

- 多くの場合タグの発行画面に「このタグは●●のタグより後に追加してください」のような指示が書かれているので、タグ発行者に一緒に指示書きの内容を送ってもらうようにする。
- 計測タグの設置依頼を受けるとき、見慣れない計測タグであればタグ発行元サービスのヘルプページや設定マニュアルを一緒に送ってもらうようにする。
- `yahoo_site_general`のように計測タグのコード中にURLらしき文字列が含まれていない場合、他にもう一つのタグがセットとして存在し、それらのタグの間には動作順序が決まっている可能性がある。

殆どの計測タグはタグ発行元サービスのトラッキングサーバーにWebページ閲覧者の情報を送らないといけないため、必ず情報送信先のURLを含んでいる。これを含んでいない計測タグは単独では動作できない。

## やり取りされる間に計測タグが壊れていた
### 原因
- [Skypeのようなチャットサービスのメッセージにコードを入れてやり取りした](https://qiita.com/aqril_1132/items/e9d8d2b2bc77303cd20d)
- PDFやWordファイルにタグを保存してやり取りした
- 途中計測タグのスクリーンショットでやり取りされる場面があり、誰かが頑張って写経したが失敗してしまった
- コピペミス

### トラブルを防ぐための確認内容
- エラーチェック機能付きのエディタに一度貼り付けてみる
- 不自然な空白などが空いていないかマウスカーソルや目視で確認する
- 計測タグを貼った後に該当ページにアクセスしてエラーが出ていないか・正しく通信しているかなど確認する

Google Tag Managerだと文法エラーのタグは公開前に自動チェック機能により弾かれるけど記号の消失はそのまま気付かれず貼られてしまう恐れがアリ。
Yahoo!タグマネージャーだと文法エラーのチェックなしで貼られてしまうので ページが真っ白になったり、次のページに移動できなくなって決済不能になってしまうことがある。恐ろしや。

# おわりに

依頼者は **自分が持っていない作業者の技術を期待** して作業の依頼を行っているので そもそも不適切な依頼をしていることに気が付けないことも多く、ここは作業者がある程度カバーするしかない領域です。
他方、Webサイトに**どんなコンテンツ、ページがある** のか、 **自分が何をしたいのか** 、その**計測タグが何をする目的のもの**なのかを把握して **資料にすぐにアクセスできる** のは依頼者の側です。

作業者と依頼者、どちらか一方だけの努力で防ぎきれるトラブルでもないので、
作業を依頼する側はなるべく自分が何をしたいのか、自分がどんな作業を依頼しているのかを把握し、可能な範囲で作業に役に立つ情報を提供し、
依頼を受ける側も自分が何を依頼されているのか・期待されているのか理解に努め、可能な範囲で不足や矛盾を見つけられる。
そんなお互いを思いやれるお仕事ができれば良いなと思います。

# 罠を作らないためのチェックシート

- [ ]  設置対象のURLパターンの指示に`http://`のような不要なプロトコルの指定は含まれていない
- [ ]  設置対象のURLパターンの指示に`www.`のような不要なサブドメインの指定は含まれていない
- [ ]  設置対象のURLパターンの指示に`?gclid=s9fakhsdfa`のような不要なパラメータは含まれていない
- [ ]  `index.html`が含まれないパターンの存在も考慮した
- [ ]  PC向けページURLの存在だけでなく、スマホ向けページURLの存在も両方考慮した
- [ ]  設置対象のURLパターンの指示とは別に、実際にアクセスして計測タグの動作を確認できるURLの情報がある
- [ ]  以前の依頼の使いまわしによる間違ったページ指示は行っていない
- [ ]  チャットメッセージ本文に計測タグをそのまま貼り付けるような[計測タグが壊れる可能性のあるやり取り](https://qiita.com/aqril_1132/items/e9d8d2b2bc77303cd20d)はしていない
- [ ]  タグの設定マニュアルやヘルプが書かれているページを見つけ、URLやPDFを作業者に共有した
- [ ]  口頭ではなく文章など、後からお互いが確認できる形で依頼内容と作業内容が残るようにしている