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. [ インデックス ] タブに移動して [ インデックスを追加 ] をクリックします
  3. カート コレクションのコレクション名を入力します
  4. インデックスに次のフィールドを追加します:
  5. metadata.emailSent - Ascending
  6. metadata.error - Ascending
  7. metadata.lastUpdated - Ascending
  8. [ クエリのスコープ ] を [ コレクション ] に設定します
  9. [ 作成 ]をクリックします
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 にドキュメントが作成されます。このドキュメントには、ユーザーのカートの中身とユーザーの email displayName (存在する場合)などの 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

Step 4 (Optional): Test this extension locally with the Firebase Emulator Suite

firebase emulators:start

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

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