注目の記事

Amazon SESで開封やクリックのトラッキングが可能になりました。

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

大栗です。

メール送信サービスのAmazon SESで開封やクリックのトラッキングが可能になったので試してみます。

メール送信ステータスのトラッキング

一般的なメール送信サービスでは、メールの開封やリンクのクリック率などを取得できるのが一般的です。自動応答メールなどのトランザクションメールでは個別のステータスを確認することは少ないと思いますが、マーケティングメールなどはエンゲージメントのKPIとして開封率やクリック率を重要視します。

Amazon SESは "Simple" Email Serviceの名の通りメールの送受信に機能を絞っており、今まで開封やクリックのトラッキングは別の仕組みで行う必要がありました。今回のアップデートで送信先毎の開封やクリックのトラッキングができるようになり、ユーザの動向を確認できるようになりました。

トラッキングデータの出力先として、CloudWatch、Kinesis Firehose、Amazon SNSが選択できます。CloudWatchで統計情報を確認したり、Kinesis FirehoseでS3やRedshiftに保存して分析したり、SNSから別のシステムやLambdaに連携したりと、様々な応用ができます。

開封やクリックをトラッキングする仕組みを簡単に説明してみます。開封のトラッキングではメール本文に小さな透明の画像のURL(URLは送信先毎にユニークなもの)を埋め込んで、その画像のURLのリクエストを確認することでトラッキングを行います。クリックのトラッキングの場合は、メール本文のリンクをAWSのURL(URLは送信先毎にユニークであり、元々のURLにリダイレクトする)に書き換えて、URLのリクエストを確認することでトラッキングを行います。この仕組みは他のメール送信サービスでも使われる一般的な仕組みです。

試してみる

メール送信設定

事前準備として、SESのメール送信環境を構築します。具体的な手順は、以下のエントリーをご覧ください。

トラッキング設定

SESのメニューに"Configuration Sets"が増えています。ここでCreate Configuration Setをクリックします。

SES_Management_Console

Configuration Setの名前を入力します。本記事ではconfig-set-test01としています。

SES_Management_Console

Configuration Setが作成されます。作成したconfig-set-test01のリンクをクリックするか、選択して[Actions]-[Edit]をクリックします。

SES_Management_Console

Configuration Setの編集画面となります。ここで開封やクリックのイベントの出力先を選択します。Kinesis FirehoseやSNSも選択できますが、ここではCloudWatchを選択します。

SES_Management_Console_と_Amazon_Web_Services_Sign_In_と_AWS-Ops_HOME_-_AWSオペレーション業務_-_CM-Confluence

CloudWatchの設定を入力します。ここでは、以下のように入力します。

項目 備考
Enabled チェック
Name test01
Event types Click, Open
Value Source Email Header
Dimension Name Dim CloudWatchで集計する時のDimensionになります
Default Value Value メール送信時に指定しない場合のDimensionのデフォルト値です

SES_Management_Console

Firehoseを選択した時には、以下のような入力項目になります。

SES_Management_Console

SNSを選択した時には、以下のような入力項目になります。

SES_Management_Console

CloudWatchの設定は以下のように表示されます。

SES_Management_Console

メールを送信して確認する

Management Consoleからメールを送信します。Email Addressesを開き、送信元メールアドレスを選択して、Send a Test Emailをクリックします。

SES_Management_Console

Email FormatをRawにします。これは設定したConfiguration SetをX-SES-CONFIGURATION-SETヘッダで指定する必要があるためです。またX-SES-MESSAGE-TAGSを指定することで、CloudWatchのDimensionを指定することができます。

ここでは送信元のメールアドレスがtest-to@example.com、送信先がdest+send@example.comで、SubjectをTracking Test 001からTracking Test 010までの10通としています。

ここで注意すべき点として、Content-Typetext/htmlにしている点です。ドキュメントのようにtext/plainにすると開封やクリックをトラッキングできません。(※2017年8月2日12:00 JST現在ではドキュメントが更新されていない模様です)画像の埋め込みやリンクのリダイレクトを行うのでHTMLメールで有る必要があります。

SES_Management_Console

送信したMessageは、以下のような内容となります。Click The Link !のURLは私のブログのURLにしています。

X-SES-MESSAGE-TAGS: Dim=Mail001
X-SES-CONFIGURATION-SET: config-set-test01
Subject: Tracking Test 001
From: test-to@example.com
MIME-Version: 1.0
Content-Type:text/html

This is a test.
<a href="https://dev.classmethod.jp/author/oguri-hajime/">Click The Link !</a>

送信したメールを10通受信します。

検索結果_-_oguri_hajime_classmethod_jp_-_Classmethod_jp_メール

まず、"Tracking Test 001"を開封します。すると「画像が非表示になっています。」と表示されています。これは、Gmailのデフォルトでは添付画像を表示させないためです。この状態では開封のトラッキングができないため下記の画像を表示をクリックします。

Tracking_Test_001_-_oguri_hajime_classmethod_jp_-_Classmethod_jp_メール

すると、以下になります。小さくて透明な画像なので表示上分かりません。

Tracking_Test_001_-_oguri_hajime_classmethod_jp_-_Classmethod_jp_メール

少しするとCloudWatchのメトリクスにOpenが現れます。

CloudWatch_Management_Console_と_Tracking_Test_001_-_oguri_hajime_classmethod_jp_-_Classmethod_jp_メール_と_オープンとクリック追跡は到着しました__Amazon_SESブログ

次にリンクのクリックを試してみます。

メールのClick The Link !のリンク先が私のブログのURLから以下のような物に変わっています。

http://r.us-west-2.awstrack.me/L0/http:%2F%2Fdev.classmethod.jp%2Fauthor%2Foguri-hajime%2F/1/0a1b2c3d4e5f6g7h-a1b2c3d4-e5f6-g7h8-i9j0-a1b2c3d4e5f6-000000/mR_4e5f6g7ha1b2c3d4a1b2c3d4=53

リンクをクリックすると、ちゃんとリダイレクトされて私のブログのトップが表示されます。

大栗_宗_|_Developers_IO

CloudWatchでもClickが表示されます。

CloudWatch_Management_Console_|_Developers_IO_と_AWS-Ops_HOME_-_AWSオペレーション業務_-_CM-Confluence

さいごに

今回はCloudWatchでトラッキンデータを表示させたので統計値を表示できましたが、Kinesis FirehoseやSNSに詳細データを出力することでユーザの動向を細かく分析することも可能です。開封率やクリック率が取れないためにSESを敬遠していた方もいらっしゃったかもしれませんが、今回のアップデートによりSESを活用できる場面が増えたのではないでしょうか?