🐈

トラッキングピクセルのキャッシュ対策

2023/07/01に公開

トラッキングピクセルを自前で実装する機会があり、せっかくなので開封(表示)回数も記録しようということになったのですがGmailクライアントで開封して2回目以降検知できませんでした。

原因

Gmailの画像キャッシュ

Gmailのクライアントはプロキシサーバにキャッシュするようで、例え別の端末から同じアカウントのGmailクライアントを開いても元のサーバにはアクセスせずにプロキシサーバから画像を取ってくるようです。

はじめにパソコンのChromeでGmailを開いて1回目は検知したのですが、メールを開き直してもそれ以降回数が変わりませんでした。
FirefoxからGmailにアクセスしてみたのですが結果は変わらずでした。iPhoneのGmailアプリから開いてみても同様でした。

利用しているメールサーバのメールクライアントからだとメールを開き直すたびにカウントされていました。

対策

キャッシュを無効化する

画像を返しているファイルで以下コードを追加してキャッシュを無効化することで解決できました。

// 開封数のカウントのためにキャッシュを無効化する。
header('Cache-Control: no-cache, no-store, must-revalidate');
header('Pragma: no-cache'); 
header('Expires: 0');

背景と考察

2023年7月1日以降はGoogleのユニバーサルアナリティクス(UA)が廃止になるためGoogle Analytics(GA4)への移行を余儀なくされました。

GA4では、UAとは異なるデータ収集方法が採用されており、今日現在(2023/7/1)トラッキングピクセルはサポートされていません。GA4でトラッキングピクセルをサポートする予定かどうかを明言していませんが、サポートされることはないのかもしれません。

今後もデータプライバシーとユーザーの同意に重点を置く方向に進んでいくはずなのでトラッキングピクセルや類似の技術に対する規制が厳しくなる可能性はあると思います。

参考

ga4でメールの開封率を知りたい

GitHubで編集を提案

Discussion