タダです.
Pinpoint でメールの配信をやっている中で,送った後のメールの開封状況とかを保管し,分析したいという要望からデータ収集の仕組みの検証をしたのでまとめていきます.
Pinpoint のメール開封イベントの収集
Pinpoint のメール開封イベントの収集は Kinesisに送信することが可能です.今回はドキュメントに沿って,Kinesis Data Streams にメール開封イベントを送信し,Kinesis Data Firehose -> S3 に保存するフローを作りました.なお,Firehose から S3 の連携部分は本記事の割愛します.
Pinpoint -> Kinesis Data Streams の設定
Pinpoint から Kinesis Data Streams の設定を有効化するところをみていきます.対象のプロジェクト>設定>イベントストリームの編集
に画面遷移して設定します.Amazon Kinesis へのストリーミング
にチェックを入れて,対象の Kinesis Data Stream と IAM ロールを指定すれば完了します.そのため,予め Kinesis Data Sreams を作成している必要があります.
IAM は次のような権限を与えればイベント送信ができます.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:PutRecords", "kinesis:DescribeStream" ], "Resource": [ "arn:aws:kinesis:ap-northeast-1:xxx:stream/xxx" ] } ] }
送信されてきたイベント
Pinpoint から送られてきたイベントの中身を見てみると次のようになってました.event_type
で開封のステータスがきていたり,
{"event_type":"_email.delivered","event_timestamp":1633673088121,"arrival_timestamp":1633673089905,"event_version":"3.1","application":{"app_id":"xxx","sdk":{}},"client":{"client_id":"xxx"},"device":{"platform":{}},"session":{},"attributes":{"feedback":"delivered","tags":null},"awsAccountId":"xxx","facets":{"email_channel":{"mail_event":{"mail":{"message_id":"xxx,"message_send_timestamp":1633673088121,"from_address":"test@exmaple.com","destination":["tada@xxx"],"headers_truncated":false,"headers":[{"name":"From","value":"test@exmaple.com"},{"name":"To","value":"tada@xxx"},{"name":"Subject","value":"test"},{"name":"MIME-Version","value":"1.0"},{"name":"Content-Type","value":"multipart/alternative; boundary=\"xxx\""}],"common_headers":{"from":"test@exmaple.com","to":["tada@xxx"],"subject":"test"}},"delivery":{"smtp_response":"250 2.0.0 OK xxx xxx.xxx - xxx","reporting_mta":"xxx.ap-northeast-1.amazonses.com","recipients":["tada@xxx"],"processing_time_millis":1784}}}}} {"event_type":"_email.send","event_timestamp":1633673088121,"arrival_timestamp":1633673088273,"event_version":"3.1","application":{"app_id":"xxx","sdk":{}},"client":{"client_id":"xxx"},"device":{"platform":{}},"session":{},"attributes":{"feedback":"received","tags":null},"awsAccountId":"xxx","facets":{"email_channel":{"mail_event":{"mail":{"message_id":"xxx,"message_send_timestamp":1633673088121,"from_address":"test@exmaple.com","destination":["xxx@xxx"],"headers_truncated":false,"headers":[{"name":"From","value":"test@exmaple.com"},{"name":"To","value":"xxx@xxx"},{"name":"Subject","value":"test"},{"name":"MIME-Version","value":"1.0"},{"name":"Content-Type","value":"multipart/alternative; boundary=\"xxx""}],"common_headers":{"from":"test@exmaple.com","to":["xxx@xxx"],"subject":"test"}},"send":{}}}}} {"event_type":"_email.open","event_timestamp":1633673088121,"arrival_timestamp":1633673142677,"event_version":"3.1","application":{"app_id":"xxx","sdk":{}},"client":{"client_id":"xxx"},"device":{"platform":{}},"session":{},"attributes":{"feedback":"opened","tags":null},"awsAccountId":"xxx","facets":{"email_channel":{"mail_event":{"mail":{"message_id":"xxx,"message_send_timestamp":1633673088121,"from_address":"test@exmaple.com","destination":["tada@xxx"],"headers_truncated":false,"headers":[{"name":"From","value":"test@exmaple.com"},{"name":"To","value":"tada@xxx"},{"name":"Subject","value":"test"},{"name":"MIME-Version","value":"1.0"},{"name":"Content-Type","value":"multipart/alternative; boundary=\"xxx\""},{"name":"Message-ID","value":"null"}],"common_headers":{"from":"test@exmaple.com","to":["tada@xxx"],"subject":"test"}},"open":{"ip_address":"xxx","user_agent":"Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)"}}}}}
まとめ
Pinpoint から Kinesis Data Streams でメール開封イベントを取ることができました.S3 に保存しておけばデータを整形したり,集計もできると思うので,マーケティング分析したりしていけそうです.