Skip to main content
Crea correos dinámicos con variables, condicionales, loops y helpers de formateo que se resuelven al enviar. Hay dos formas de enviar con variables, cada una con su propio motor de renderizado:

Conceptos basicos

Variables

Inserta valores dinámicos en tu template con {{nombreVariable}}. En el template:
En el request body (API pública v1):
Resultado renderizado:
En /v1/send-template-email (campo variables), además:
  • {nombreVariable} con llave simple es equivalente a {{nombreVariable}}.
  • Puedes definir un fallback con {variable || "valor por defecto"} para cuando la variable no existe.
  • Los valores se escapan como HTML por defecto; usa {!variable} para insertar HTML sin escapar.
  • Las variables sin valor (y sin fallback) se renderizan como cadena vacía.
En la API avanzada (/send-email, campo data) usa siempre doble llave {{variable}}. La llave simple y los fallbacks || no están disponibles, y los valores se insertan sin escape HTML.

Condicionales

Disponibles solo en la API avanzada (POST /send-email, campo data). /v1/send-template-email no soporta bloques {{#if}}.
Usa {{#if variable}}...{{/if}} para mostrar contenido solo cuando una variable existe y es truthy. Usa {{else}} para el caso contrario. En el template:
En el request body:
Nota: Handlebars evalúa como falsy los valores false, undefined, null, "", 0 y arrays vacíos [].

Loops

Usa {{#each arreglo}}...{{/each}} para iterar sobre una lista. Disponible en ambas APIs, con distinta sintaxis dentro del bloque. En la API avanzada (/send-email, campo data), {{this}} es el elemento actual. Accede a sus propiedades con {{this.propiedad}} y usa helpers:
En el request body:
Variables especiales dentro de loops (API avanzada): En /v1/send-template-email (campo variables), las propiedades del elemento actual se exponen directamente: usa {{nombre}}, no {{this.nombre}} (la notación this. no está soportada). Variables especiales: @index, @first, @last, @odd y @even. No hay helpers de formateo: envía los valores ya formateados.

Helpers integrados

RQE incluye helpers de Handlebars adicionales para formateo común en correos transaccionales.
Los helpers están disponibles solo en la API avanzada (POST /send-email, campo data). En /v1/send-template-email envía los valores ya formateados.

formatCurrency

Formatea un número como moneda con formato en-US. Por defecto usa USD. Acepta un segundo parámetro opcional para la moneda.
Con "total": 61970 produce: $61,970.00 Para usar otra moneda:

multiply

Multiplica dos valores numéricos. El resultado se redondea a 2 decimales.

formatDate

Formatea una fecha ISO 8601 a un formato legible en español (es-ES). Acepta un segundo parámetro opcional para el formato. Formato por defecto (short):
Con "fechaEntrega": "2025-03-15T00:00:00Z" produce: 15/3/2025 Formato largo (long):
Con "fechaEntrega": "2025-03-15T00:00:00Z" produce: sábado, 15 de marzo de 2025

default

Proporciona un valor por defecto cuando la variable es falsy (undefined, null, "", 0 o false).
Si nombre no está definido en data, se renderiza como Hola, Cliente!.

json

Serializa un objeto a JSON con indentación. Útil para depurar o incluir datos estructurados en el correo.
Con "datos": {"clave": "valor"} produce:
También están disponibles los helpers de texto capitalize, uppercase y lowercase para transformar strings.

Identificar un template

Puedes referenciar un template de dos formas en la API pública (/v1/send-template-email):
  • Si el template no existe, la API retorna un error 404.
  • template_internal_id se resuelve dentro del proyecto asociado a la API key utilizada.
En la API avanzada (/send-email), el campo templateId acepta el UUID del template o su ID interno numérico, siempre dentro del proyecto asociado a la API key.

El objeto variables

En /v1/send-template-email, el objeto variables es un JSON donde cada clave es una variable del template. Los valores se convierten a string al renderizar. Las variables que el template usa pero que no existen se renderizan como cadena vacía (o con su fallback || si está definido).

Ejemplo completo

Request:
Template correspondiente (sintaxis v1):
Este motor no incluye helpers de formateo: envía precios y fechas ya formateados como strings. Para condicionales, helpers o propiedades anidadas, usa la API avanzada (POST /send-email) con templateId + data.

Acceso a propiedades anidadas

En la API avanzada (/send-email, campo data), usa notación de punto para acceder a objetos anidados:
En /v1/send-template-email la notación de punto no está soportada: aplana las variables antes de enviarlas (por ejemplo direccion_ciudad en lugar de direccion.ciudad).

Buenas practicas

  • Define valores por defecto para variables opcionales: en la API avanzada usa el helper default; en v1 usa fallbacks {variable || "valor"}. Así evitas espacios vacíos en el correo.
  • Valida tus variables antes de enviar. Las variables que el template espera pero no existen se renderizan como cadenas vacías, sin error.
  • Guarda el template_id (UUID) en tu configuración, o usa template_internal_id si prefieres IDs numéricos cortos por proyecto.
  • Prueba tus templates con datos de ejemplo antes de integrar. En la API avanzada usa dry_run: true para renderizar sin enviar — ver Dry Run.