Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

使用 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 属性,后者包括该用户的 emaildisplayName(如果存在)。此 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

第 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