Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

Send Abandoned Cart Reminders with SendGrid

Twilio
Made by Twilio

カート オブジェクトの最終更新日時を追跡してカート コレクションを監視します。特定の期間が経過すると、SendGrid の動的テンプレートに基づいてユーザーにメールを送信します。

この拡張機能の動作

この拡張機能を使用して、ショッピング カートに残っている商品アイテムに関するリマインダー メールの送信を自動化できます。

この拡張機能は、指定の Cloud Firestore コレクションに追加されたドキュメントを監視します。それぞれのドキュメントが最後に更新された時間が拡張機能により記録されます。その後、最後に更新された時間が設定したしきい値を超えると、ドキュメント内の情報が新しいコレクションにコピーされ、Twilio SendGrid API を使用してメールがトリガーされます。ドキュメント内の情報は、動的トランザクション メールのテンプレート データとして送信されます。

追加の設定

この拡張機能をインストールする前に、以下の点を確認してください。

Firestore のインデックス

この拡張機能には Firestore の複合インデックスが必要です。インデックスの追加は、Firebase コンソールまたはコマンドラインで行います。

Firebase コンソールでのインデックスの追加
  1. Firebase コンソールCloud Firestore セクションに移動します
  2. Indexes タブに移動して Add Index をクリックします
  3. カート コレクションのコレクション名を入力します
  4. インデックスに次のフィールドを追加します:
  5. metadata.emailSent - Ascending
  6. metadata.error - Ascending
  7. metadata.lastUpdated - Ascending
  8. Query scopesCollection に設定します
  9. Create をクリックします
Indexes with the Firebase CLI でのインデックスの追加
  1. Firebase プロジェクトで、デフォルトのファイル名 firestore.indexes.json のインデックス構成ファイルを開きます
  2. 次のオブジェクトを indexes 配列に追加します: json { "collectionGroup": "cart", "queryScope": "COLLECTION", "fields": [ { "fieldPath": "metadata.emailSent", "order": "ASCENDING" }, { "fieldPath": "metadata.error", "order": "ASCENDING" }, { "fieldPath": "metadata.lastUpdated", "order": "ASCENDING" } ] }

    名前 collectionGroup はカート コレクションのコレクション名にする必要があります。 1. firebase deploy コマンドを使用してインデックス構成をデプロイします。インデックスのみをデプロイする場合は、--only firestore:indexes フラグを追加します。

仕組み

ショッピング カート

ショッピング カートはカートごとのドキュメントとして実装する必要があります。ドキュメントにアイテムを保存する方法は自由ですが、一般的には、items と呼ばれる配列プロパティにカート内の各商品アイテムに関する情報を含めます。ドキュメントには、Firebase Authentication ユーザーへの参照も含める必要があります。そのためには、カート ドキュメントの ID がユーザー ID に一致しているか、ドキュメントに userId プロパティが存在する必要があります。カート ドキュメントを作成したり、カート ドキュメント上のプロパティを更新したりすると、拡張機能によってタイムスタンプ metadata.lastUpdated が更新されます。

カートのチェック

関数が定期的に実行され、カートが放棄されているかどうか、メールを送信する必要があるかどうかが判断されます。cron.yaml 構文を使用して、CART_CHECK_INTERVAL で期間を設定できます。

次のステージに進むには、カート ドキュメントが次のいくつかの条件を満たしている必要があります。

  • タイムスタンプ metadata.lastUpdated が設定した ABANDONED_TIMEOUT 時間(分)より前である
  • metadata.emailSent ブール値プロパティが false である
  • metadata.error プロパティにエラーがない

これらの条件をすべて満たしている場合、拡張機能は userId プロパティまたはドキュメントの ID を使用してユーザーデータを読み込もうとします。ユーザーがメールアドレスを持っていない場合、エラーが記録されます。ユーザーがメールアドレスを持っている場合、EMAIL_COLLECTION にドキュメントが作成されます。このドキュメントには、ユーザーのカートの中身とユーザーの emaildisplayName(存在する場合)などの user プロパティで構成される dynamicTemplateData のプロパティとユーザーのメールアドレスとが含められます。この dynamicTemplateData を使用して、SendGrid の動的メール テンプレートのフィールドに値が入力されます。

メールの送信

EMAIL_COLLECTION にドキュメントが追加されると、Twilio SendGrid API を使用してメールが送信されるようコンテンツがキューに格納されます。カート ドキュメントから取得したすべての情報は、メールの動的テンプレート データとして追加されます。SendGrid の動的テンプレートの ID である DEFAULT_TEMPLATE_IDを設定できます。

SendGrid ダッシュボードで動的トランザクション テンプレートを作成できます。SendGrid テンプレートは Handlebars を使用して動的データをメールにレンダリングします。

また、DEFAULT_FROM には、SendGrid を使用して単一送信者として、またはドメイン認証を介して検証したメールアドレスを設定する必要があります。DEFAULT_REPLY_TO にメールアドレスを設定することもできます。

to のメールアドレスと dynamicTemplateData プロパティを含むドキュメントを EMAIL_COLLECTION に追加すると、いつでもメールの送信をトリガーできます。

admin.firestore().collection('cart_emails').add({
  to: 'example@example.com',
  dynamicTemplateData: {
    name: "Example"
  }
});

料金

拡張機能をインストールするには、プロジェクトを Blaze(従量課金制)プランに含める必要があります。

  • この拡張機能に必要な Firebase リソースに対しては、使用しない場合でも、小額(通常は約 $0.01/月)が請求されます。
  • この拡張機能は、次のような他の Firebase サービスや Google Cloud Platform サービスを使用するため、こうしたサービスの無料枠を超えた場合には関連する料金が発生します。
  • Cloud Firestore
  • Firebase Authentication
  • Cloud Functions(Node.js 10 を超えるランタイム。FAQ を参照)
  • Cloud Secret Manager

この拡張機能を使用するには、マーケティング キャンペーン用の Twilio SendGrid API を使用するために Twilio SendGrid アカウントと認証情報も必要です。Twilio SendGrid の利用に関連する費用については、すべてお客様の負担となります。

この拡張機能をインストールする方法

Firebase コンソールの使用

拡張機能のインストールと管理は、Firebase コンソールで行えます。

コンソールを使用してインストールする

Firebase CLI の使用

拡張機能のインストールと管理は、Firebase CLI でも行えます。

ステップ 1: 以下の npm コマンドを実行して、CLI をインストールするか、最新バージョンの CLI に更新します。

npm install -g firebase-tools
正常に機能しない場合は、Firebase CLI リファレンスを確認するか、npm のアクセス権を変更してください。

ステップ 2: 新しい Firebase プロジェクトのディレクトリを設定するか、既存のプロジェクト ディレクトリに移動します

ステップ 3: 次を実行して、この拡張機能を拡張機能のマニフェストに追加します

firebase ext:install twilio/abandoned-cart-emails --local --project=projectId_or_alias

ステップ 4(任意): Firebase Emulator Suite を使用して、この拡張機能をローカルでテストします

firebase emulators:start

ステップ 5: マニフェストにある拡張機能をプロジェクトにデプロイします

firebase deploy --only extensions --project=projectId_or_alias
サポート対象
Cloud Firestore Authentication
作成者
ライセンス
Apache-2.0
バージョン
0.1.1