Envía recordatorios de carritos abandonados con SendGrid
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
- Ve a la sección Cloud Firestore de Firebase console.
- Ve a la pestaña Indexes y haz clic en Add Index.
- Ingresa el nombre para tu colección de carritos. 1 Agrega los siguientes campos al índice:
- “metadata.emailSent” - Ascendente
- “metadata.error” - Ascendente
- “metadata.lastUpdated” - Ascendente.
- Establece Query scopes como Collection.
- Haz clic en Create.
Índices con Firebase CLI
- En tu proyecto de Firebase, abre tu archivo de configuración del índice con el nombre de archivo predeterminado “firestore.indexes.json”.
-
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 (prepago).
- Se te cobrará un importe pequeño (normalmente alrededor de $0.01 por 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 sin costo:
- 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 consoleUsa 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
Paso 4 (opcional): Prueba la extensión localmente con 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