Conceptos basicos
Variables
Inserta valores dinámicos en tu template con{{nombreVariable}}.
En el template:
/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.
/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 (UsaPOST /send-email, campodata)./v1/send-template-emailno soporta bloques{{#if}}.
{{#if variable}}...{{/if}} para mostrar contenido solo cuando una variable existe y es truthy. Usa {{else}} para el caso contrario.
En el template:
Nota: Handlebars evalúa como falsy los valoresfalse,undefined,null,"",0y 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
/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, campodata). En/v1/send-template-emailenví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.
"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):
"fechaEntrega": "2025-03-15T00:00:00Z" produce: 15/3/2025
Formato largo (long):
"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).
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.
"datos": {"clave": "valor"} produce:
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_idse resuelve dentro del proyecto asociado a la API key utilizada.
/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: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:
/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 usatemplate_internal_idsi prefieres IDs numéricos cortos por proyecto. - Prueba tus templates con datos de ejemplo antes de integrar. En la API avanzada usa
dry_run: truepara renderizar sin enviar — ver Dry Run.