SendGridとGoogle Analyticsを連携させてみる

Herokuのアドオン、Mandrill の有料化に伴い、Sendgridを導入したサービスがあるのですが、それとGoogle Analyticsを連携するやり方がわからなかったので調べました。

Sendgrid経由で、Railsでメールを送ると、メール本文に記載されるリンクのURLは上書きされてしまいます。
これはSendgridの方でクリック率をトラックするためのものなので、
便利ではあるのですが、Google analyticsのカスタムURLみたいなことをする時にはやっかいです。

上書きされてしまうので、せっかく設定したパラメータが無効になってしまうのです。

/signin?utm_campaign=signin&utm_medium=email&utm_source=xxxx

というURLが、

https://u2842942.ct.sendgrid.net/wf/click?upn%3Ddmy08NGolhxxxxxxxxxxxxx

こんな感じになってしまう。

ヘッダーに情報を追加する

ということで、普通にパラメータで追加する方法は上手くいきませんので、解決策。
公式ドキュメントにこんなのがあります。

Settings (Filters) - SendGrid Documentation | SendGrid

Railsでメールを送信するときに、ヘッダーに対応するフォーマットで情報を送信してあげればいいとのこと。
こんな感じになりました。


def send_signin_email(user)
  @user = user
  # Header for sendgrid filter (tracking with google analytics)
  sendgrid_header = {
    "filters" => {
      "ganalytics" => {
        "settings" => {
          "enable" => 1,
          "utm_source" => "register",
          "utm_medium" => "email",
          "utm_campaign" => "signin"
        }
      }
    }
  }
  headers['X-SMTPAPI'] = sendgrid_header.to_json
  mail(
    subject: "Sign in",
    to: user.email,
  )
end

ちゃんとしたヘッダーかどうなのかは下記でチェックできます。
SMTP API Header Validator - SendGrid Documentation | SendGrid

まだAnalyticsの方で計測できてませんが、メールは正常に送れているし、ヘッダーにも上記の内容が含まれていました。たぶん大丈夫かな。

以上です。

参考

SMTP Headers: Custom Fields, SendGrid Magic | SendGrid
ruby on rails - How to create custom email headers - Stack Overflow

何かありましたらコメントをどうぞ

comments powered by Disqus

人気の記事

950 Points チリ出身のギタリストが弾くドラゴンボールZがむちゃくちゃかっこいい…
774 Points Wordpress + Heroku + PostgreSQL + Amazon S3 = ¥0 / 無料でサイト運営
700 Points Rubyのチートシート 変数 / クラス / モジュール
524 Points Rubyのチートシート / アクティブサポート
451 Points 紙のデザイナーがウェブ開発できるようになるまでに必要なこと
435 Points Rails / Google Analyticsのデータを使って分析や管理画面のためのグラフをつくる
323 Points RailsとHerokuでノーティフィケーションをプッシュする / PusherとTurbolinksの兼ね合い
222 Points Rails / RSpec テスト書いたことない メンドクサイ(n´Д`)という時のチートシート
193 Points Rails / Ajaxを使って画面遷移しない一時保存機能をつける
193 Points Protractorでスクレイピングしてみた