Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Envía recordatorios de carritos abandonados con SendGrid

Twilio
Made by Twilio

Observa una colección de carritos haciendo un seguimiento de la hora de actualización más reciente de un objeto de carrito. Cuando se supera un período determinado, se envía un correo electrónico al usuario según una plantilla dinámica de SendGrid.

Cómo funciona esta extensión

Usa esta extensión para enviar automáticamente recordatorios por correo electrónico a los usuarios sobre los artículos que dejaron en el carrito de compras.

Esta extensión analizará los documentos agregados a una colección de Cloud Firestore especificada. Por cada documento, la extensión registra la hora de la actualización más reciente del documento. Luego, cuando la hora de actualización más reciente supera un umbral configurable, la información del documento se copia en una colección nueva que activa un correo electrónico con la API de Twilio SendGrid . La información del documento se envía como los datos de la plantilla para un correo electrónico transaccional dinámico.

Configuración adicional

Antes de instalar esta extensión, asegúrate de lo siguiente:

* Haber configurado una base de datos de Cloud Firestore en tu proyecto de Firebase * Haber configurado Firebase Authentication en tu proyecto de Firebase * Haberte registrado en una cuenta de campañas de marketing de Twilio SendGrid * Haber creado una clave de API de SendGrid con acceso para enviar correos electrónicos * Haber verificado una dirección de correo electrónico de remitente único o configurado la autenticación del dominio con SendGrid * Haber configurado una plantilla transaccional dinámica con la que enviar correos electrónicos

Índices de Firestore

Esta extensión necesita un índice compuesto de Firestore. Puedes agregar el índice en Firebase console o con la línea de comandos.

Índices en Firebase console
  1. Ve a la sección Cloud Firestore de Firebase console.
  2. Ve a la pestaña Indexes y haz clic en Add Index .
  3. Ingresa el nombre para tu colección de carritos. 1 Agrega los siguientes campos al índice:
  4. “metadata.emailSent” - Ascendente
  5. “metadata.error” - Ascendente
  6. “metadata.lastUpdated” - Ascendente.
  7. Establece Query scopes como Collection .
  8. Haz clic en Create .
Índices con Firebase CLI
  1. En tu proyecto de Firebase, abre tu archivo de configuración del índice con el nombre de archivo predeterminado “firestore.indexes.json”.
  2. Agrega el siguiente objeto al array “indexes”: json { "collectionGroup": "cart", "queryScope": "COLLECTION", "fields": [ { "fieldPath": "metadata.emailSent", "order": "ASCENDING" }, { "fieldPath": "metadata.error", "order": "ASCENDING" }, { "fieldPath": "metadata.lastUpdated", "order": "ASCENDING" } ] }

    El nombre “collectionGroup” debe ser el nombre de la colección de carritos. 1. Implementa tu configuración de índice con el comando de “firebase deploy”. Si solo quieres implementar índices, agrega la marca “--only firestore:indexes”.

Cómo funciona

El carrito de compras

Un carrito de compras se debe implementar como un documento por carrito. Tú decides cómo almacenar los artículos en el documento, pero lo habitual es usar una propiedad de array llamada “items” que contiene información sobre cada artículo del carrito. El documento también debe tener una referencia a un usuario de Firebase Authentication . El ID del documento del carrito debe coincidir con el ID del usuario o debe haber una propiedad “userId” en el documento. Cuando crees el documento del carrito o actualices las propiedades en el documento del carrito, la extensión actualizará una marca de tiempo “metadata.lastUpdated”.

Verifica el carrito

Una función se ejecuta periódicamente para determinar si algún carrito está abandonado y si se debería enviar por correo electrónico. Puedes configurar el período con “CART_CHECK_INTERVAL” usando la sintaxis de cron.yaml.

Hay algunas condiciones que un documento de carrito debe cumplir antes de que se procese a la siguiente etapa:

* La marca de tiempo “metadata.lastUpdated” debe ser más antigua que el tiempo en minutos “ABANDONED_TIMEOUT” configurable. * La propiedad booleana “metadata.emailSent” debe ser “false”. * No debe haber errores en la propiedad “metadata.error”.

Si se cumplen todas estas condiciones, entonces, la extensión intentará cargar los datos del usuario con la propiedad “userId” o el ID del documento. Si el usuario no tiene una dirección de correo electrónico, se registrará un error. Si el usuario tiene una dirección de correo electrónico, entonces se creará un documento en “EMAIL_COLLECTION”. En el documento, se incluirá el correo electrónico del usuario y una propiedad para “dynamicTemplateData” que conste del contenido del carrito del usuario y una propiedad “user” con el “email” y “displayName” del usuario en caso de que existan. “dynamicTemplateData” se usa para completar los campos en una plantilla de correo electrónico dinámica de SendGrid.

Envía el correo electrónico

Cuando se agrega un documento a “EMAIL_COLLECTION”, el contenido se agrega a una cola para enviarlo por correo electrónico con la API de Twilio SendGrid. Toda la información del documento del carrito se agrega como datos de la plantilla dinámica para el correo electrónico. Puedes configurar un “DEFAULT_TEMPLATE_ID” que es el ID de una plantilla dinámica de SendGrid.

Puedes crear plantillas transaccionales dinámicas en el panel de SendGrid. Las plantillas de SendGrid usan Handlebars para renderizar datos dinámicos en el correo electrónico.

También debes establecer que “DEFAULT_FROM” sea una dirección de correo electrónico que verificaste con SendGrid como remitente único o mediante la autenticación del dominio . También puedes configurar un correo electrónico “DEFAULT_REPLY_TO”.

Puedes activar que se envíe un correo electrónico en cualquier momento agregando un documento a “EMAIL_COLLECTION” con una dirección de correo electrónico de destinatario (“to”) y una propiedad “dynamicTemplateData”.

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

Facturación

Para instalar una extensión, tu proyecto debe tener el plan Blaze (pago por uso).

  • Se te cobrará un importe pequeño (normalmente alrededor de USD 0.01 al mes) por los recursos de Firebase que se necesitan para esta extensión (incluso si no se usan).
  • Esta extensión usa otros servicios de Firebase y Google Cloud Platform, que tienen cargos asociados si superas el nivel gratuito:
  • Cloud Firestore
  • Firebase Authentication
  • Cloud Functions (entorno de ejecución de Node.js 10+; consulta las Preguntas frecuentes )
  • Cloud Secret Manager

Para usar esta extensión también es necesario que tengas credenciales y una cuenta de Twilio SendGrid a fin de usar la API de Twilio SendGrid en las campañas de marketing. Eres responsable de cualquier costo asociado al uso de Twilio SendGrid.

Cómo instalar esta extensión

Usa Firebase console

Puedes usar Firebase console para instalar y administrar las extensiones.

Instala con console

Usa Firebase CLI

También puedes usar Firebase CLI para instalar y administrar las extensiones.

Paso 1: Ejecuta el siguiente comando npm para instalar la CLI o actualizarla a la versión más reciente.

npm install -g firebase-tools
¿No funciona? Consulta la referencia de Firebase CLI o cambia tus permisos de npm.

Paso 2: Configura un nuevo directorio de proyecto de Firebase o navega a uno existente

Paso 3: Agrega esta extensión al manifiesto de tu extensión ejecutando

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

Paso 5: Implementa las extensiones en el manifiesto de tu proyecto

firebase deploy --only extensions --project=projectId_or_alias
Admite
Cloud Firestore Autenticación
Autor
Licencia
Apache-2.0
Versión
0.1.1