Amazon Web Services ブログ

顧客の関心に基づいて商品在庫の更新を自動化する

このブログ記事では、マーケティングメッセージをカスタマイズできるように、製品カテゴリに対する顧客の関心を捉えるプロセスを自動化するためのソリューションを紹介します。小売業の例を使用して、AWS のサービスを使用して、顧客に関連するコミュニケーションを生成する高度なプロセスを構築する方法を示します。このソリューションはモジュールごとに別れているため、ビジネスとユースケースに重要な部分のみを構成できます。

ユースケース

オンライン購入は、タイミングが悪いために購入につながらない可能性があります。特に、購入者がまだ入手できない製品をオンラインで閲覧しているが、後で新しい商品として追加される可能性がある場合です。新しい商品が在庫に追加されるたびにプロモーションメッセージを送信すると、顧客ベースにスパムが送信され、多くの苦情が寄せられる可能性があります。理想的な状況は、新しい製品エントリに関心のある顧客に製品カテゴリをリンクすることです。このアプローチにより、顧客の関心を考慮しながら、コミュニケーションの頻度を減らすことができます。

いくつかの変更を加えると、次のユースケースにもこのソリューションを使用できます。

  • 現在在庫切れの商品に関心のある顧客は、その商品が補充されたときに通知を受けるようリクエストできます。
  • 製品ドロップを実行する企業は、顧客が関心を登録し、製品が落ちたときに通知を受ける方法を提供できます。

ソリューション概要

推奨されるアプローチにより、顧客は商品カテゴリへの関心を登録して、新製品の到着に関する通知を受け取ることができます。登録は、ウェブ/モバイルアプリ、または行動パターン、ウェブまたはモバイルアプリでの一連の顧客イベントを通じて行うことができ、顧客がアクションを実行する意思を示すものです。たとえば、特定の商品カテゴリーに属する商品に対して、顧客が 1 回のセッションで複数クリックした場合、そのカテゴリーに対する顧客の関心を示します。

顧客が関心を登録した後、次のステップは、新製品の到着の情報を取り込み、関心のある製品カテゴリの新製品がオンラインで利用可能になったことを顧客に通知する電子メールを顧客に送信する自動化を実装することです。このソリューションではメールを使用していますが、SMS、プッシュ通知、音声発信、またはカスタムチャネルを通じて顧客に連絡するようにソリューションコードを変更できます。

Amazon Pinpoint および AWS Step Functions

Amazon Pinpoint は、柔軟でスケーラブルなアウトバウンドおよびインバウンドのマーケティングコミュニケーションサービスです。 AWS Step Functions は、 AWS Lambda と複数の AWS サービスをビジネスクリティカルなアプリケーションに簡単にシーケンスできるようにするサーバーレスな関数オーケストレーターです。

ハイレベルアーキテクチャ

このソリューションでは、顧客が関心を登録した商品カテゴリを保存する Amazon Pinpoint ユーザー属性 ( 例:interests ) を各顧客が持っている必要があります。商品データベースに新しい商品が追加されると、 product_categoryproduct_nameproduct_link などの情報を含むペイロードが発行されます。ソリューションを変更して、製品データベースペイロードからより多くの情報を含めることができます。

AWS Step Functions は、セグメントリソースを使用して新しい Amazon Pinpoint セグメントが作成されるプロセスを調整します。このソリューションでは、AWS SDK for Python (Boto3) を使用します。セグメントには、新しい製品エントリの後に発行された製品データベースペイロード内の製品カテゴリと同じ製品カテゴリが interests ユーザー属性に含まれるすべてのユーザーが含まれます。セグメントが作成されると、Amazon Pinpoint e メールキャンペーンが作成され、キャンペーンリソースに相当する boto3 を使用してすぐに送信されます。メールの HTML 本文は Lambda 関数コードに保存されるため、Amazon Pinpoint ユーザー属性を使用せずに product_nameproduct_link などの製品データベースのペイロード変数を取り込むことができます。Amazon Pinpoint キャンペーンが完了すると、Amazon SImple Notification Service (Amazon SNS) を通じて成功メッセージが送信され、一部のメトリックスが DynamoDB テーブルにログインされます。メールキャンペーンが正常に実行されると、セグメントとキャンペーンは削除されます。Amazon Pinpoint に数千のキャンペーンやセグメントが散らばらないようにするため、このソリューションは実行のたびにキャンペーンとセグメントを削除します。つまり、キャンペーン指標は Amazon Pinpoint コンソールでは利用できません。キャンペーンのパフォーマンスをモニタリングするには、 Amazon Pinpoint イベントの Kinesis へのストリーミングを有効にしてから、Amazon Athena を使用してデータをクエリするか、Amazon Athena と Amazon QuickSight を使用して、キャンペーンのパフォーマンスを視覚化します。この CloudFormation テンプレートを使用して、精査されたリファレンスアーキテクチャをデプロイできます。これにより、イベントのストリーミングが可能になり、イベントを保存する S3 バケットが作成され、SQL クエリを使用して Amazon Athena 経由でこれらのイベントをクエリできるようになります。

前提条件

  1. e メールチャネルが有効になっている Amazon Pinpoint プロジェクト。手順については、 Amazon Pinpoint ユーザーガイドの「e メールをサポートするAmazon Pinpoint プロジェクトの作成」を参照してください。
  2. 確認済みの電子メールアドレス。手順については、Amazon Pinpoint ユーザーガイドの「e メール ID の検証」を参照してください。
  3. チャネル e メールがインポートされた Amazon Pinpoint エンドポイントが少なくとも 1 つあります。手順については、Amazon Pinpoint ユーザーガイドの「セグメントのインポート」を参照してください。
  4. AWS コマンドラインインターフェイス (AWS CLI) と、作成した Amazon Pinpoint プロジェクトと同じ AWS アカウントおよびリージョンにあるプロファイル。手順については、AWS CLI ユーザーガイドの「AWS CLI のインストール、更新、アンインストール」を参照してください。

使用しているアカウントを確認するには、 aws configure list コマンドを実行します。

アーキテクチャ

アーキテクチャの概要を以下に示します。

ソリューションのデプロイ

ステップ 1: インタレスト属性を更新する

AWS CLI を使用して、Amazon Pinpoint ユーザーの属性を更新し、ユーザーが coats の値を持つ interests 属性を持つようにします。これは、顧客の登録済み製品カテゴリの関心を表します。

コマンドプロンプト (Windows) またはターミナル (macOS) を開き、次のコマンドを実行します。<application_id><endpoint_id> を Amazon Pinpoint プロジェクトの値に置き換えます。

aws pinpoint update-endpoint --application-id <application_id> --endpoint-id <endpoint_id> --endpoint-request 'User={UserAttributes={interests=[coats]}}

詳細については、AWS CLI コマンドリファレンスの update-endpoint を参照してください。

リクエストが成功すると、次のようなメッセージが表示されます。

ステップ 2: スタックを作成する

アプリケーションは AWS CloudFormation テンプレートとしてデプロイされます。

注: このサンプルデプロイの実行中に使用した AWS サービスの費用はお客様の負担となります。このサンプルを使用するための追加費用はかかりません。詳細については、このサンプルで使用する各 AWS サービスの料金表ページを参照してください。料金は変更される場合があります。

  1. お好みの AWS リージョンの以下のリンクに従って、最新の CloudFormation テンプレートをデプロイします。
  2. プロンプトが表示されたら、AWS アカウントの認証情報を使用してログインします。
  3. 「テンプレートを指定」のステップで「スタックの作成」という画面が表示されるはずです。CloudFormation テンプレートを指定するフィールドは事前に入力されています。ページの下部にある [次へ] ボタンをクリックします。
  4. 「スタックの詳細を指定」画面では、CloudFormation スタックの次のパラメータをカスタマイズできます。
    • 必須:
      • pinpointProjectID: Amazon ピンポイントプロジェクト ID。
      • emailFromAddress: キャンペーンメールの送信元となるメールアドレスを入力します。このメールアドレスを最初に検証する必要があります
    • myApp:
      • resourceTags: リソースにタグを付けて、リソースを特定して分類するのに役立ちます。
    • デフォルト:
      • 環境: インフラストラクチャにタグを付ける環境のタイプ。

完了したら、[次へ] をクリックします。

  1. 必要に応じてスタックオプションを設定し、[次へ] をクリックします。
  2. レビュー画面で、次のチェックボックスをオンにする必要があります。
    • 「AWS CloudFormation が IAM リソースを作成する可能性があることを認めます」
    • 「AWS CloudFormation がカスタム名で IAM リソースを作成する可能性があることを認めます」
    • 「AWS CloudFormation には次の機能が必要になる可能性があることを認めます: CAPABILITY_AUTO_EXPAND」

これらは、CloudFormation がスタックに必要なリソースへのアクセスを許可するロールを作成し、動的にリソースに名前を付けるために必要です。

  1. [スタックを作成] をクリックします。
  2. CloudFormation スタックが起動するまで待ちます。「スタックステータス」が「CREATE_COMPLETE」のときに完了を示します。
    • スタックの作成の進行状況は [Events] タブで監視できます。

ステップ 3: ステートマシンを実行する

  1. AWS Step Functions コンソールでは、 SegmentCampaignStateMachine-<randomID> という名前のステートマシンがリストの一番上に表示されます。このステートマシンを選択し、[実行の開始] を選択します。
  2. 実行の名前を入力し、[入力] フィールドに次の JSON を貼り付けて、[実行の開始] を選択します。
{
   "interest":"coats",
   "product_name":"Leather Coat",
   "product_link":"https://www.example.com/coats/leather_coat"
}

[Details] タブの グラフインスペクタフローチャートに、プロセスのステップが視覚化されます。失敗したステップは赤で強調表示されます。正常に完了したステップは緑色で強調表示されます。

メール本文を変更するには、AWS Lambda コンソールで、<stackname>-PinpointCampaignCreate-<randomID> という名前の Lambda 関数を検索します。関数が読み込まれたら、index.py にアクセスします。メールの本文は 33 行目と 41 行目の間に表示されます。この Lambda 関数でキャンペーンのスケジュールを設定することもできます。

ステップ 5: DynamoDB テーブルエントリを確認する

  1. DynamoDB コンソールを開き、左側のナビゲーションペインから [Tables] を選択します。
  2. <stack_name>-LoggingCampaignSegmentStatus-<randomID> という名前のテーブルを選択します。
  3. [Items] タブには、ステップ 3 でステートマシンから実行されたキャンペーンに関する次の情報を含む行が表示されます。
    • outputDate: これは DynamoDB プライマリパーティションキーです。これは、可能なステップ関数の出力 (SEMGENT_FAILED、CAMPAIGN_FAILED、または SEGMENT_CAMPAIGN_SUCCESS)、製品名、および日付時刻 (YYYY-MM-DD_HH-MM-SS) を連結したものです。
    • Pinpoint のキャンペーン ID: この ID は、キャンペーンの作成時に生成されます。
    • Pinpoint のキャンペーンステータス: 設定可能な値は、PENDING、INITIALIZING、RUNNING、PAUSED、CANCELLED、COMPLETED です。
    • Pinpoint キャンペーンの開始日と終了日: ISO 8601 形式のアクティビティの開始時刻と終了時刻です。
    • Pinpoint セグメント ID : この ID は、セグメントの作成時に生成されます。
    • 正常に設定されたエンドポイント: キャンペーンがメッセージを正常に配信したエンドポイントの総数。
    • 設定されたエンドポイントの総数: キャンペーンがメッセージの配信を試みたエンドポイントの総数。
    • 関心、商品リンク、商品名: これら 3 つのフィールドの値は、新しい商品が追加されたときにステップが商品インベントリから受け取るペイロードから取得されます。

まとめ

このブログ記事では、Amazon Pinpoint と AWS Step Functions を使用して、新製品の到着を顧客に通知するパーソナライズされたコミュニケーションプロセスを自動化する方法を紹介しました。顧客の関心を捉えることで、マーケティングメッセージを適切に調整できます。

次のステップ

購入者は、商品カテゴリーへの登録を解除したり、興味を削除したりできる必要があります。これは、顧客がランディングページを通じて特定のトピックを購読または購読解除できる電子メール設定管理システムを介して行うことができます。

このユースケースに固有のアプローチは、すべてのメールに購読解除リンクを含めることです。顧客がこのリンクをクリックすると、その製品カテゴリの今後の連絡の購読が解除されます。

リンクは、Amazon Pinpoint エンドポイント ID と関心を指定する URL パラメータを含む e メールテンプレートの一部です。リクエストは Amazon API Gateway を経由し、Lambda 関数によって処理され、最終的に顧客をウェブサイトのページにリダイレクトします。Lambda 関数は、URL パラメータで指定された interests を削除して、Amazon Pinpoint エンドポイントのインタレストのユーザー属性を更新します。

購読解除 URL の例を次に示します:

https://www.api-gateway-endpoint.com/?

endpointId={{Attributes.EndpointId}}&interest={{User.UserAttributes.interests}}

リンクがクリックされ、interests のユーザー属性が更新されると顧客をウェブサイトのページにリダイレクトできます。このリダイレクトの実行方法については Redirection in a Serverless API with AWS Lambda and Amazon API Gateway を参照してください。


著者について

Pavlos Ioannou Katidis

Pavlos Ioannou Katidis は、Amazon Pinpoint および Amazon Simple Email Service の AWS スペシャリストソリューションアーキテクトです。顧客の技術的な問題を深く掘り下げ、顧客がコミュニケーションソリューションを設計する支援を行っています。休日にはテニスやテレビシリーズ鑑賞、FPS PC ゲームや、個人的なプロジェクトコーディングをしています。

翻訳は Solutions Architect 金丸が担当しました。原文はこちらです。