SendGridとGoogle Analyticsを連携させてみる
Herokuのアドオン、Mandrill の有料化に伴い、Sendgridを導入したサービスがあるのですが、それとGoogle Analyticsを連携するやり方がわからなかったので調べました。
Sendgrid経由で、Railsでメールを送ると、メール本文に記載されるリンクのURLは上書きされてしまいます。
これはSendgridの方でクリック率をトラックするためのものなので、
便利ではあるのですが、Google analyticsのカスタムURLみたいなことをする時にはやっかいです。
上書きされてしまうので、せっかく設定したパラメータが無効になってしまうのです。
1
/signin?utm_campaign=signin&utm_medium=email&utm_source=xxxx
というURLが、
1
https://u2842942.ct.sendgrid.net/wf/click?upn%3Ddmy08NGolhxxxxxxxxxxxxx
こんな感じになってしまう。
ヘッダーに情報を追加する
ということで、普通にパラメータで追加する方法は上手くいきませんので、解決策。
公式ドキュメントにこんなのがあります。
Settings (Filters) - SendGrid Documentation | SendGrid
Railsでメールを送信するときに、ヘッダーに対応するフォーマットで情報を送信してあげればいいとのこと。
こんな感じになりました。
ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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