Google 致力于为黑人社区推动种族平等。查看具体举措
使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

使用 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 - 升序
  6. metadata.error - 升序
  7. metadata.lastUpdated - 升序
  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 中创建一个文档。该文档将包括用户电子邮件和 dynamicTemplateData 属性,该属性包括用户购物车的内容和一个 user 属性,后者包括该用户的 email displayName (如果存在)。此 dynamicTemplateData 用于填充 SendGrid 动态电子邮件模板中的字段。

发送电子邮件

在文档添加至 EMAIL_COLLECTION 后,内容将进入队列,等待使用 Twilio SendGrid API 发送电子邮件。购物车文档中的所有信息都被添加为电子邮件的动态模板数据。您可以配置一个 DEFAULT_TEMPLATE_ID ,这是 SendGrid 动态模板的 ID。

您可以 在 SendGrid 信息中心创建动态事务模板 SendGrid 模板使用 Handlebars 将动态数据呈现到电子邮件中。

您还需要将 DEFAULT_FROM 配置为您已使用 SendGrid 验证的电子邮件地址,可以配置为 单个发件人 或通过 域身份验证 进行配置。您还可以设置一个 DEFAULT_REPLY_TO 电子邮件。

通过将文档添加至 EMAIL_COLLECTION 并使用一个 to 电子邮件地址和一个 dynamicTemplateData 属性,您可以随时触发电子邮件发送。

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+ 运行时。 查看常见问题解答 )
  • Cloud Secret Manager

使用此扩展程序还需要您拥有 Twilio SendGrid 帐号 和凭据,以将 Twilio SendGrid API 用于营销活动。您需要自行承担与使用 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