Las variables, también conocidas como etiquetas de personalización o etiquetas de fusión, te permiten insertar datos personalizados para cada destinatario, como su nombre o su compra más reciente. Los filtros modifican cómo se muestran estos datos.
¿Cómo se utilizan los filtros?
Los filtros se utilizan dentro de llaves dobles {{ }} con un símbolo de barra vertical |. Por ejemplo:
| Entrada | Resultado |
| {{ contact.FIRSTNAME|upper }} | EMILIA |
Puedes encadenar múltiples filtros, de modo que la salida de un filtro pase al siguiente. Por ejemplo:
| Entrada | Resultado |
| {{ contact.FIRSTNAME|title|truncatechars:4 }} | EMIL |
Para insertar una variable con filtros en un mensaje, puedes:
-
Escribir la variable y los filtros manualmente; o
-
Seleccionar una variable existente y editar su sintaxis en la pestaña Advanced settings (Configuración Avanzada).
💬 Insertar un valor predeterminado
default
Inserta un valor de recuperación si una variable está vacía.
| Entrada | Resultado |
| Hola, {{ contact.FIRSTNAME|default:'there' }}: | Hola, qué tal: |
🔠 Formato de mayúsculas de la palabra
capfirst
Escribe en mayúscula el primer carácter.
| Entrada | Resultado |
| {{ contact.MESSAGE|capfirst }} | Mi coche rojo |
title
Escribe en mayúscula la primera letra de cada palabra.
| Entrada | Resultado |
| {{ contact.FULLNAME|title }} | John Doe |
upper
Convierte todos los caracteres a mayúsculas.
| Entrada | Resultado |
| {{ contact.FULLNAME|upper }} | JOHN DOE |
lower
Convierte todos los caracteres a minúsculas.
| Entrada | Resultado |
| {{ contact.FULLNAME|lower }} | john doe |
truncatechars
Acorta una cadena a N caracteres. Los valores truncados finalizarán con puntos suspensivos (…) incluidos en el recuento de caracteres.
| Entrada | Resultado |
| {{ contact.MANAGER|truncatechars:7 }} | Elisab… |
🔢 Formato de números
floatformat
Redondea los valores flotantes a un número específico de decimales.
| Entrada | Resultado |
| {{ params.total|floatformat:2 }} | 40.32 |
| {{ params.total|floatformat:0 }} | 40 |
integer
Convierte un número en formato de cadena o punto flotante en un número entero.
| Entrada | Resultado |
| {{ 10.578|integer }} | 10 |
| {{ "16.765"|integer }} | 16 |
float
Convierte un número en formato de cadena o entero en un número de coma flotante.
| Entrada | Resultado |
| {{ 10|float }} | 10.000000 |
| {{ "16.765"|float }} | 16.765000 |
lang_format
Da formato a los números según el idioma.
| Entrada | Resultado |
| {{ params.number|lang_format:"fr" }} | 123 456,789 |
| {{ params.number|lang_format:"en" }} | 123,456.789 |
| {{ params.number|lang_format:"hi" }} | 1,23,456.789 |
| {{ params.number|lang_format:"bn" }} | ১,২৩,৪৫৬.৭৮৯ |
| {{ params.number|lang_format:"fr,%.2f" }} | 123 456,79 |
-
Para forzar 2 decimales, añade
,%.2fdespués del filtro de idioma. - En francés, el separador de enteros es un espacio de no separación.
📅 Formato de fecha y hora
time_parse
- Los nombres de los días y los meses (completos y abreviados) deben estar en inglés.
- La hora de referencia es "Monday January 2 15:04:05 -0700 MST 2006".
- Los valores que faltan se establecen por defecto en 0.
- La zona horaria predeterminada es UTC.
- Se pueden utilizar las palabras clave am/pm.
- Las zonas horarias pueden ser palabras clave (MST, CET, UTC, Asia/Kolkata) o compensaciones numéricas (+0100, -0100).
Convierte una cadena de fecha en una marca de tiempo estándar que se puede utilizar con otros filtros, como date o date_i18n.
Al incluir el formato de fecha como argumento, escribe la fecha y la hora exactamente como se vería la hora de referencia si fuera el valor.
| Entrada | Resultado |
| {{ params.MY_DATE|time_parse:"Monday 02 January 2006" }} | Tuesday 11 March 2021 |
Utiliza time_parse_rfc3339 para cadenas con formato RFC3339 sin proporcionar un formato personalizado.
date
Convierte una marca de tiempo o una fecha analizada en un formato especificado. Utilízalo con una fecha analizada mediante time_parse o con la hora actual utilizando time_now.
| Entrada | Resultado |
| {{ "14:01 01/06/2018"|time_parse:"15:04 02/01/2006"|date:"Mon Jan 2 15:04:05 2006" }} | Fri Jun 1 14:01:00 2018 |
| {{ time_now|date:"Monday, Jan 2, 2006" }} | Imprimirá el día y la fecha actual en el formato especificado. |
| {{ time_now|date:"02/01/2006" }} | Imprimirá el día y la fecha actual en el formato especificado. |
| {{ time_now|date:"01" }} | Imprimirá el mes actual |
| {{ time_now|date:"02" }} | Imprimrá el día actual |
| {{ time_now|date:"2006" }} | Imprimirá el año actual |
date_i18n
Convierte una marca de tiempo o fecha analizada a un formato especificado, y muestra la salida en un idioma especificado. Este filtro funciona como date, pero primero debes especificar el idioma, seguido del formato.
Los idiomas admitidos son en, fr, it, es, de y pt.
| Entrada | Resultado |
| {{ "14:01 01/06/2018" | time_parse:"15:04 02/01/2006"|date_i18n:"en,Monday" }} | Friday |
| {{ "14:01 01/06/2018" | time_parse:"15:04 02/01/2006"|date_i18n:"de,Monday" }} | Freitag |
time_add_date
Añade años, meses y días a una marca de tiempo o fecha analizada. Debes especificar el tiempo que quieres añadir en el orden año, mes y día.
| Entrada | Resultado |
| {{ time_now|time_add_date:"1,2,3" }} | Imprimirá el sello temporal añadiendo 1 año, 2 meses y 3 días al sello temporal actual |
| {{ "14:01 01/06/2018"|time_parse:"15:04 02/01/2006"|time_add_date: "1,2,3" }} | 2019-08-04 14:01:00 +0000 UTC |
time_in_location
Convierte una marca de tiempo o una fecha analizada a una zona horaria especificada. Debes especificar la zona horaria en el formato ubicación/zona horaria.
| Entrada | Resultado |
| {{ time_now|time_in_location:"Europe/Berlin" }} | Imprimirá el sello temporal actual en CEST |
| {{ "14:01 01/06/2018"|time_parse:"15:04 02/01/2006"|time_in_location: "Europe/Berlin" }} | 2018-06-01 16:01:00 +0200 CEST |
time_add_duration
Añade horas, minutos y segundos a una marca de tiempo o fecha analizada. Debes especificar el valor en el formato h, m, s y pasar al menos un valor (hora, minuto o segundo) en el filtro.
| Entrada | Resultado |
| {{ time_now|time_add_duration:"1h2m3s" }} | Imprimirá el sello temporal después de añadir 1 hora, 2 minutos y 3 segundos al valor temporal en el sello temporal actual |
| {{ time_now|time_add_duration:"30m" }} | Imprimirá el sello temporal después de añadir 30 minutos al valor temporal |
time_unix
Convierte un valor temporal a un sello temporal Unix en segundos.
| Entrada | Resultado |
| {{ time_now|time_unix }} | Imprimirá el sello temporal Unix en segundos |
time_unix_nano
Convierte un valor temporal a un sello temporal Unix en nanosegundos.
| Entrada | Resultado |
| {{ time_now|time_unix_nano }} | Imprimirá el sello temporal Unix en nanosegundos |
🧑💻 Codificar o encriptar datos
base64_encode o decode
Codifica o descodifica en base64:
- base64_decode descodifica una cadena a un []byte
- base64_encode codifica un []byte a una cadena
| Entrada | Resultado |
| https://example.com/test?name={{ contact.FIRSTNAME|base64_encode }} | https://example.com/test?name=RW56bw== (en lugar de https://example.com/test?name=Enzo) |
Los filtros base64_encode y decode pueden coger un parámetro de codificación adicional:
- std: codificación normal en base64,
- raw_std: codificación normal en base64, sin los caracteres = de relleno,
- url: versión segura de URL de codificación en base64, + y / se sustituyen por - y _ respectivamente,
- raw_url: una combinación de raw y url.
aes_128, 192 o 256
Encripta un valor. Por ejemplo, se puede usar este filtro para enviar información de contacto encriptada en una URL, como una dirección de email o un ID.
La variante AES utilizada depende de la longitud de la clave proporcionada:
| Longitud de la clave secreta | Variante AES |
| 16 bytes (128 bits) | AES-128 |
| 24 bytes (192 bits) | AES-192 |
| 32 bytes (256 bits) | AES-256 |
Por ejemplo, para la variante AES-256, la variable debe tener el formato {{ contact.ATTRIBUTE | aes_256:'key' }}, donde la clave:
- Debe tener 32 dígitos.
- Debe haber sido generada aleatoriamente.
- Debe persistir en su lado para poder desencriptar el valor original.
De manera predeterminada, si no se añade ningún parámetro de codificación, se utilizará base64 std. Si no, también admite:
- raw_std: codificación normal en base64, sin los caracteres = de relleno,
- url: versión segura de URL de codificación en base64, + y / se sustituyen por - y _ respectivamente,
- raw_url: una combinación de raw y url.
En los siguiente ejemplos, hemos cifrado las direcciones de email de nuestros contactos utilizando la clave: e5a34a481274c776856d04119bed8188. Ten en cuenta que no debes utilizar esta misma clave, sino generar una clave propia siguiendo los requisitos anteriores.
| Codificación | Entrada | Resultado |
| Sin codificación (codificación predeterminada base64 std) | {{ contact.EMAIL | aes_256:'e5a34a481274c776856d04119bed8188' }} | Imprime una cadena aleatoria que debe desencriptarse para leer el valor original |
| Codificación Base64 raw_std | {{ contact.EMAIL | aes_256:'e5a34a481274c776856d04119bed8188,raw_std' }} | Imprime una cadena aleatoria que debe desencriptarse para leer el valor original |
| Codificación Base64 url | {{ contact.EMAIL | aes_256:'e5a34a481274c776856d04119bed8188,url' }} | Imprime una cadena aleatoria que debe desencriptarse para leer el valor original |
| Codificación Base64 raw_url | {{ contact.EMAIL | aes_256:'e5a34a481274c776856d04119bed8188,raw_url' }} | Imprime una cadena aleatoria que debe desencriptarse para leer el valor original |
🔎 Otros filtros
first
Devuelve el primer elemento de una secuencia, una asignación o una cadena.
| Entrada | Solicitud API | Resultado |
| {{ params.array|first }} | "params" : { "array" : [ 1,2,3,4 ] } |
1 |
join
Combina los elementos de un conjunto en una sola cadena utilizando el argumento como separador.
El separador entre elementos está vacío por defecto. Puedes definirlo con el primer parámetro opcional.
| Entrada | Resultado |
| {{ [1, 2, 3]|join }} | 123 |
| {{ [1, 2, 3]|join: '|' }} | 1|2|3 |
last
Devuelve el último elemento de una secuencia, un mapeo o una cadena.
| Entrada | Resultado |
| {{ [1, 2, 3, 4]|last }} | 4 |
length
Devuelve el número de elementos de una secuencia o un mapeo, o la longitud de una cadena.
| Entrada | Resultado |
| {{ ['a', 'b', 'c', 'd']|length }} | 4 |
safe
Marca una cadena para indicar que no requiere caracteres de escape de HTML antes de la salida.
| A | Solicitud API | Entrada | Resultado | |
| "params" :{HtmlTest: "<p>This is my test sentence.</p>"} | {{ params.htmltest|safe }} | This is my test sentence | ||
| B | Atributo de contacto | Marcador de posición | Entrada | Resultado |
| EMAIL_SALUTATION | Welcome to <b>Brevo</b>, we're glad to have you here | {{ contact.EMAIL_SALUTATION|safe }} | Welcome to Brevo, we're glad to have you here | |
Sin el filtro "safe" la etiqueta HTML aparecería como una cadena normal en el email del destinatario: "<p>Esta es mi frase de prueba</p>" o "Welcome to <b>Brevo</b>, we're glad to have you here".
slice
Extrae un trozo de una frase, mapeo o cadena.
Este filtro se puede configurar para:
| A | Hará un bucle solo en los primeros "n" números de elementos de un conjunto | En ambos casos, recuerde que los elementos de un conjunto se asignan a un único número de posición que empieza con "0" en la primera posición (se conocen como "indexados a cero"). |
| B | Recorrerá los elementos entre dos posiciones especificadas ("n" y "m") en el conjunto | |
| C | Recorrerá los elementos entre dos elementos especificados de un conjunto. |
En cada ejemplo, imagine que su conjunto contiene: ["a","b","c","d","e","f","g","h"...].
| Entrada | Resultado | |
| A |
{% for product in params.products|slice:':5' %} {{ product.name }} - {{ product.price }} {% endfor %} |
Recorrerá las primeras 5 posiciones (0-4), que son: ["a","b","c","d","e"] |
| B |
{% for product in params.products|slice:'2:3' %} {{ product.name }} - {{ product.price }} {% endfor %} |
Recorrerá las posiciones (2-3), que son: ["c","d"] |
| C |
{% for product in params.products|slice:'b:d' %} {{ product.name }} - {{ product.price }} {% endfor %} |
Recorrerá los elementos especificados, que son: ["b","c","d"] |
literal
En Brevo, las variables se escriben utilizando llaves dobles, como {{ params.property }}. Cuando incluyes llaves doble como {{ this }} en tu email, Brevo las considera un elemento de plantilla.
Para mostrar {{ }} como texto sin formato en tu email, envuelve el contenido en un bloque {% verbatim %}:
| Entrada | Resultado |
|---|---|
|
{% verbatim %} {{ Print variable }} {% endverbatim %} |
{{ Print variable }} |
escape automático
De forma predeterminada, Brevo escapa de todo el contenido de la variable, incluidos HTML y JavaScript. Esto significa que si tu variable contiene HTML (por ejemplo, <h1>Mi título</h1>), se mostrará como texto sin formato en lugar de procesarse como HTML.
Para permitir la representación HTML, debes deshabilitar el escape automático mediante la etiqueta {% autoescape off %} . Envuelve la variable en este bloque y ciérralo con {% endautoescape %}:
{% autoescape off %}{{ params.my_html }}{% endautoescape %}
| Entrada | Resultado | |
|---|---|---|
| Sin la etiqueta autoescape | {{ params.my_html }} | <h1>Mi título</h1> |
| Con la etiqueta autoescape |
{% autoescape off %} {{ params.my_html }} {% endautoescape %} |
Mi título |
📖 Recursos adicionales
El Lenguaje de Plantillas de Brevo se basa en Pongo2, una reimplementación de Django in Go (un lenguaje de programación).
Todas las etiquetas compatibles
autoescape, comment, cycle, filter, firstof, for, if, ifchanged, now, set, spaceless, templatetag, with.
Todos los filtros compatibles
escape, safe, escapejs, add, addslashes, capfirst, center, cut, date, default, default_if_none, divisibleby, first, floatformat, get_digit, iriencode, join, last, length, length_is, linebreaks, linebreaksbr, linenumbers, ljust, lower, make_list, phone2numeric, pluralize, random, removetags, rjust, slice, stringformat, striptags, time, title, truncatechars, truncatechars_html, truncatewords, truncatewords_html, upper, urlencode, urlize, urlizetrunc, wordcount, wordwrap, yesno.
Todos los filtros compatibles con algoritmos hash
hash_md5, hash_sha256, hash_sha256_224, hash_sha512, hash_sha512_224, hash_sha512_256, hash_sha512_384, hash_sha3_224, hash_sha3_256, hash_sha3_384, hash_sha3_512.
🤔 ¿Tiene alguna duda?
Si tiene alguna pregunta, no dude en ponerse en contacto con nuestro equipo de asistencia mediante la creación de un ticket desde su cuenta. Si todavía no tiene una cuenta, puede ponerse en contacto con nosotros aquí.
Si necesitas ayuda con un proyecto usando Brevo, podemos ponerte en contacto con la agencia partner de Brevo adecuada.