TMA動画公開。マルチチャネル通知と通知後の重要性
こんにちは、スナックミー でCTOをしている三好です。
以下のnoteで書いたThis is My Architectureの動画が公開されたので、今回はこのArchitectureに使われているAmazon Pinpointと構成図の概要を紹介させてください。
読んでいただきたい方
・Email、SMS、pushなどマルチチャネルへの通知方法に悩んでいる
・送信するだけで終わっている
・効果測定を活用できていない
・ユースケースを知りたい
方など
上記の悩みを解決してくれるのがAmazon Pinpoint
まず初めにAmazon Pinpointの概要を把握してもらい、スナックミー が構築した構成図について説明していきます。
マルチチャネルへの通知を一元化
ユーザーさんへ情報を通知する方法として、Emailの他にSMS、Push、LINEなどのメッセンジャーアプリを活用するケースが多いと思います。
ユーザーさんへ通知する方法は決して1種類だけというサービスは少ないと思います。例えば、ユーザー登録しモバイルアプリを開発しているところであれば、Email、push、SMSなど存在し、スナックミー ではLINEとEmailというケースで存在しています。
社内でEmailとPushを使い分けできるとユーザーエンゲージメントを上げられるのに。。。。と考えている方もいるのではないでしょうか?
もしくは使い分けは可能だが別々のサービスとなり運用が大変。
使い分け可能でもマルチチャネルで通知を送信する際、様々なSaasを活用することで対応可能です。しかし、スケーラブルに対応していくために、通知へのリソースはなるべく低く抑えたいと考えている会社は多いと思います。
送信するだけで終わりではない
セグメント作り、配信するだけで終わってないでしょうか?「いやいや、開封率やクリック率は見ていますよ」と言い返してくる方もいるでしょう。しかし、開封率やクリック率だけでは次のアクションがしずらいのです。
例えばECサイトでおすすめ商品をメールで10,000名に送り30%(3,000名)が開封し、そのうち40%(1,200名)がクリックしたとします。その1,200名のうち商品を購入していない方へ再度通知したいと思ったことないでしょうか?
もしくは購入ページまでは行ったが購入してない方へ再通知したい、購入ページすら行っていない方へ再通知したいや再通知内容のA/Bテストを行いコンテンツの良し悪しを判断したい。など
1通送ることが全てではなく、通知したユーザーさんがどういうルートでエンゲージメントを高められるかしっかり設計する必要が今後ありますし、Pinpointのジャーニーを用いることで容易に設定が可能になります。
効果測定が豊富
Amazon Pinpointはただ通知を送信することがメインではなく、Analyticsとしても大きな力を発揮します。
デバイスデータやユーザー情報から始まり、レベニューチャートも把握することが可能です。
ファネル分析を測定することも可能です。通知を送信後にどこで離脱している情報やA/Bテストと組み合わせることでコンテンツをチューニングできます。
--------------------- ここまで Amazon Pinpoint ------------------------
スナックミー の構成図
スナックミーではパーソナライズされた通知をお届けしています。(おやつを選ぶのもパーソナライズ。パーソナライズ好きです)
上記の他にユーザーさんごとにメッセージ内容を変更できます。
ポイントは以下の5点
・セグメントファイルの生成
・メッセージ変数でパーソナライズ
・Step Functionsでセグメントのアップロードからキャンペーン生成
・Custom ChannelでLINE通知を可能
・疎結合のアーキテクチャ
覚えて欲しい言葉 & 流れ
[言葉]
・チャネル : 通知する媒体 (Email、Push、SMSなど)
・セグメント : ユーザーが定義した属性に基づくセグメント。配信したいユーザー群
・キャンペーン : メッセージ配信のこと
[基本的な流れ]
セグメント生成 -> 配信するチャネルを決める -> キャンペーン生成 -> 通知
セグメントファイルの生成
まず、AWS BatchやAWS Lambdaで独自のアルゴリズムを実行し、セグメント情報を生成して、S3にアップロードしています。
このファイルには、通知の対象となるユーザーさんたちのメールアドレスや、ユーザーさんごとに最適化された文言の情報が入ったJSON のリストになっています。
メッセージ変数でパーソナライズ
個々のユーザーさんごとにメッセージの一部をカスタマイズするのに、Pinpoint のメッセージ変数を使っています。
インポートするセグメントファイルの中に、ユーザーごとに違う文言情報を含めてあります。それをメッセージ内から参照することで、ユーザーさんごとに異なるメッセージを送信しています。その文言も、インポートするファイルを作るときにプログラムから作ってしまえるので、柔軟にできます。
Step Functionsでセグメントのアップロードからキャンペーン生成
1. DynamoDBから処理対象のPinpointプロジェクトの情報をGetItemで取得して、その情報を1つ目のLambdaファンクションに渡します
2. そのLambdaファンクションでは、Pinpoint の CreateImportJob API を叩いて、S3にアップロードされていたセグメント情報を Pinpoint にインポートさせています。
3. 次の Lambda では、インポートJobが終わるのを見張っています。30秒間隔でループしているのですが、だいたい1-2回するとImportが完了します。
4. 最後のLambdaでは、CreateCampaign APIを叩いて、インポートしたセグメントを使ったキャンペーンを起動します。
Custom ChannelでLINE通知を可能
スナックミー ではLINEメッセージの配信を行っています。具体的には、カスタムチャネルとして設定したLambdaにLINE IDなどの情報が渡ってくるため、それを使ってLINE APIをたたいて送信しています。
カスタムチャネルとは : メッセージを配信する代わりにLambdaを起動し、好きなチャネルに送信可能な機能 (2020.05.06現在public β 版)
疎結合のアーキテクチャ
セグメント・文言の生成(AWS Batch or Lambda)と、送信処理のワークフロー(Step Functions)が完全に疎結合になっていることです。これにより、セグメントファイルをS3バケットに上げさえすれば、どんな種類のチャネル・メッセージでも対応できるような柔軟性が確保できています。
まとめ
今回はAmazon Pinpointの概要からスナックミーで用いているアーキテクチャを紹介させてもらいました。
今回のアーキテクチャはセグメントをインポートして通知を送信するパターンでしたが、動的なセグメントを使ってより多くの種類の通知を送信していくことアーキテクチャも並行して現在進めています。
通知のアーキテクチャ以外にも新たなロジスティックススタイルの構築、ユーザーマイページの開発
おやつ体験を一緒に構築してくれる仲間をお待ちしております。↓↓↓
Twitter↓↓
この記事が気に入ったらサポートをしてみませんか?