Plantillas de correo
En vista previaPlantillas con lógica, renderizadas en el momento del envío.
Almacena un asunto y un cuerpo una sola vez, publícalo como una versión inmutable y envíalo por slug. Los condicionales, bucles y filtros de Liquid se ejecutan cuando se genera el mensaje, así la lógica de personalización vive en la plantilla en lugar de estar dispersa en tu código. Créalo en el editor del panel, desde la bird CLI, o deja que un agente lo haga a través de MCP.
import { BirdClient } from "@messagebird/sdk";
import { render } from "@react-email/render";
import { WelcomeEmail } from "./emails/welcome";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.email.send({
from: "Bird <hello@bird.com>",
to: ["ada@example.com"],
subject: "Your invite is ready",
html: await render(<WelcomeEmail name="Ada" />),
}).safe();
if (error) throw error;
console.log(data.id);
// → "em_2bX91Yk8h..."
You can sign in any time at bird.com/login.
Your test API key is on your dashboard, ready to send.
Almacena una plantilla. Personaliza en el envío.
El marcado ya está en Bird.
Las plantillas son parte de la Bird Email API. Almacena el diseño y su lógica una sola vez; cada envío nombra la plantilla por slug o id y pasa los valores que sus tokens necesitan. El mensaje final se renderiza en nuestro lado, así que la misma plantilla sirve para un recibo, un lote de cien o un envío masivo a toda una audiencia.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
// No subject and no html: the template's published version supplies both.
const { data, error } = await bird.email
.send({
from: "orders@acme.com",
to: ["delivered@messagebird.dev"],
category: "transactional",
template: {
slug: "order-confirmation",
parameters: {
first_name: "Ada",
order: { number: "A-1043", total: "$42.00" },
},
},
})
.safe();
Más que buscar y reemplazar.
Liquid, resuelto en el lado de Bird cuando se genera el mensaje.
- 01
Condicionales.
Un bloque if de Liquid se muestra solo cuando su valor aplica, como una nota exclusiva para miembros o un banner de envío gratis, así una sola plantilla cubre ambos casos.
- 02
Bucles.
Un bucle for repite una fila por cada elemento en un array, así una sola plantilla de confirmación de pedido lista cada artículo que el cliente realmente compró. Un límite que conviene conocer de entrada: un envío masivo lleva un único valor por propiedad de contacto y no tiene nada que iterar, así que una plantilla con bucles se envía a través de la API de mensajes en lugar de un envío masivo.
- 03
Filtros.
Pasa un valor a través de un filtro de Liquid antes de renderizarlo. El filtro default captura un nombre faltante antes de que se envíe como un saludo vacío.
- 04
Datos anidados.
Los tokens con punto acceden a objetos estructurados, así puedes pasar un objeto de pedido completo y referenciar su número y total desde el marcado en lugar de aplanarlo primero.
- 05
Nada que declarar.
La lista de tokens se lee de tu marcado, combinada en todos los idiomas, así que no hay un esquema de variables separado que mantener sincronizado con el cuerpo. Los valores pueden ser cualquier JSON: strings, números, booleanos, arrays, objetos.
Créala como ya trabajas.
Tres formas de entrada, todas llegando a la misma plantilla. El editor del panel es el visual. La bird CLI gestiona todo el ciclo de vida desde un script o un paso de despliegue, y un agente accede a las mismas operaciones a través de MCP. ¿Ya tienes componentes de React Email? Renderízalos a HTML y almacena el resultado, dejando los tokens de Bird como texto literal en el JSX para que sobrevivan al renderizado en lugar de quedar fijados con un valor cuando React se ejecuta.
# Render React Email to HTML, then publish it as a template version.
node scripts/render-receipt.mjs > receipt.json
bird email templates create receipt --category transactional --source html
bird email templates versions languages set "$TEMPLATE" "$DRAFT" en \
--body-file receipt.json --yes
# --validate-only reports every problem across every language, freezing nothing.
bird email templates versions submit "$TEMPLATE" "$DRAFT" --validate-only --yes
bird email templates versions submit "$TEMPLATE" "$DRAFT" --yes
Versionada, como el resto de tu código.
La edición ocurre en un borrador y nunca toca lo que está en producción, porque un envío siempre resuelve la versión publicada actual y los borradores nunca se envían. Publicar congela una versión inmutable y numerada y la pone en producción; si un cambio sale mal, revierte a una anterior. Los guardados llevan la revisión que leíste por última vez, así que si un compañero cambió ese idioma mientras tanto, el guardado se rechaza como conflicto en lugar de sobrescribir su trabajo. Las estadísticas de entrega e interacción se desglosan por plantilla, para que puedas ver cuál está funcionando realmente.
Una plantilla, hasta 25 idiomas.
Una plantilla lleva contenido en hasta 25 idiomas, cada uno con su propio asunto y cuerpo, identificado por una etiqueta BCP-47 como en o pt-BR. Un envío indica el idioma que quiere, o lo omite y obtiene el predeterminado de la plantilla. Cuando un envío solicita un idioma que la plantilla no tiene, on_missing_language decide qué ocurre: fallback sirve la coincidencia más cercana, así que una solicitud de pt-BR se responde con un pt disponible, y fail rechaza el envío directamente, para contenido donde el idioma incorrecto es peor que no enviar nada.
Previsualiza exactamente lo que se enviará.
Llena una plantilla con valores de ejemplo y obtén de vuelta el asunto y los cuerpos HTML y texto que un envío entregaría. La vista previa renderiza el borrador, que es cómo verificas un cambio antes de publicarlo, o una versión publicada cuando quieres ver qué se está enviando ahora mismo. No se envía nada. También ejecuta las mismas validaciones de personalización que la publicación, así que una construcción que sería rechazada aparece aquí primero.
Hacia dónde van las plantillas.
El editor visual y una biblioteca inicial de cuarenta plantillas integradas ya están incluidos, así que puedes copiar una a tu espacio de trabajo y editarla desde ahí. Lo siguiente en la lista: describir una plantilla en un prompt y obtener un borrador para refinar, una superficie de composición más ágil para agentes, y kits de marca, que guardarán tus colores, tipografía y voz a nivel de espacio de trabajo y aplicarán estilo a una plantilla a partir de ellos. Cada una de estas funciones extiende el mismo modelo versionado, así que lo que integras hoy es sobre lo que se construirán.
Profundiza en la documentación.
La guía de plantillas cubre borradores, versiones publicadas, contenido por idioma y las reglas de Liquid. La guía de envío tiene el contrato del lado de envío, y eventos de email y webhooks pone en marcha el flujo de aperturas y clics.
El resto de la plataforma de correo
Una API, un conjunto de claves. Explora las demás capacidades.
Las plantillas vienen con la plataforma a su alrededor.
Almacena, versiona y personaliza plantillas en la misma API de correo que se encarga del envío, la entregabilidad, la supresión y la analítica. Un solo conjunto de claves.