Variáveis, também conhecidas como tags de personalização ou de mesclagem, permitem que você insira dados personalizados para cada destinatário, como nome ou compra mais recente. Os filtros modificam a forma como esses dados são exibidos.
Como usar filtros?
Você usa filtros dentro de chaves duplas {{ }} com uma barra vertical |. Por exemplo:
| Entrada | Saída |
| {{ contact.FIRSTNAME|upper }} | EMILIA |
Você pode encadear vários filtros, de forma que a saída de um filtro seja transmitida para o próximo. Por exemplo:
| Entrada | Saída |
| {{ contact.FIRSTNAME|title|truncatechars:4 }} | EMIL |
Para inserir uma variável com filtros em uma mensagem, você pode:
-
Digitar a variável e os filtros manualmente, ou
-
Selecionar uma variável existente e editar a sintaxe na guia Advanced settings (Configurações avançadas).
💬 Insira um valor padrão
default
Insere um valor alternativo caso uma variável esteja vazia.
| Entrada | Saída |
| Olá {{ contact.FIRSTNAME|default:'there' }}, | Olá, você, |
🔠 Formatar a capitalização da palavra
capfirst
A primeira letra é maiúscula.
| Entrada | Saída |
| {{ contact.MESSAGE|capfirst }} | Meu carro vermelho |
title
A primeira letra de cada palavra começa com letra maiúscula.
| Entrada | Saída |
| {{ contact.FULLNAME|title }} | John Doe |
upper
Converte todos os caracteres em maiúsculas.
| Entrada | Saída |
| {{ contact.FULLNAME|upper }} | JOHN DOE |
lower
Converte todos os caracteres em minúsculas.
| Entrada | Saída |
| {{ contact.FULLNAME|lower }} | john doe |
truncatechars
Reduz uma string a N caracteres. Valores truncados terminarão com reticências (…) incluídas na contagem de caracteres.
| Entrada | Saída |
| {{ contact.MANAGER|truncatechars:7 }} | Elisab… |
🔢 Formate números
floatformat
Arredonda valores de ponto flutuante para um número específico de casas decimais.
| Entrada | Saída |
| {{ params.total|floatformat:2 }} | 40.32 |
| {{ params.total|floatformat:0 }} | 40 |
integer
Converte um número em formato de string ou ponto flutuante em um número inteiro.
| Entrada | Saída |
| {{ 10.578|integer }} | 10 |
| {{ "16.765"|integer }} | 16 |
float
Converte um número em formato string ou inteiro em um número de ponto flutuante.
| Entrada | Saída |
| {{ 10|float }} | 10.000000 |
| {{ "16.765"|float }} | 16.765000 |
lang_format
Formata números de acordo com um idioma.
| Entrada | Saída |
| {{ 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 forçar 2 casas decimais, adicione
,%.2fapós a variável idioma. - Para o francês, o separador de milhares é um espaço não quebrável.
📅 Formate data e horário
time_parse
- Nomes de dia e mês (completos e abreviados) devem estar em inglês.
- O horário de referência é "segunda-feira, 2 de janeiro, 15:04:05 -0700 MST 2006".
- Os valores ausentes são automaticamente atribuídos a 0.
- O fuso horário padrão é UTC.
- As palavras-chave am/pm podem ser usadas.
- Os fusos horários podem ser palavras-chave (MST, CET, UTC, Asia/Kolkata) ou deslocamentos numéricos (+0100, -0100).
Converte uma string de data em um carimbo de data/hora padrão que pode ser usado com outros filtros, como date ou date_i18n.
Ao passar o formato de data como argumento, escreva a data e a hora exatamente como a hora de referência apareceria se fosse o valor.
| Entrada | Saída |
| {{ params.MY_DATE|time_parse:"Monday 02 January 2006" }} | Tuesday 11 March 2021 |
Use time_parse_rfc3339 para strings formatadas em RFC3339 sem fornecer um formato personalizado.
date
Converte um carimbo de data e hora ou uma data analisada em um formato específico. Use-o com uma data analisada por meio de time_parse ou com a hora atual usando time_now.
| Entrada | Saída |
| {{ "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á o dia e a data atual, no formato especificado |
| {{ time_now|date:"02/01/2006" }} | Imprimirá o dia e a data atual, no formato especificado |
| {{ time_now|date:"01" }} | Imprimirá o mês atual |
| {{ time_now|date:"02" }} | Imprimirá o dia atual |
| {{ time_now|date:"2006" }} | Imprimirá o ano atual |
date_i18n
Converte um carimbo de data e hora ou uma data analisada em um formato especificado, com a saída exibida em um idioma especificado. Este filtro funciona como a data, mas primeiro você precisa especificar o idioma e, em seguida, o formato.
Os idiomas compatíveis são inglês, francês, italiano, espanhol, alemão e português.
| Entrada | Saída |
| {{ "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
Adiciona anos, meses e dias a um carimbo de data e hora ou a uma data analisada. Você deve especificar a hora a ser adicionada no formato ano, mês, dia.
| Entrada | Saída |
| {{ time_now|time_add_date:"1,2,3" }} | Imprimirá timestamp depois de adicionar 1 ano, 2 meses e 3 dias ao timestamp atual |
| {{ "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
Converte um carimbo de data e hora ou uma data analisada em um fuso horário específico. Você deve especificar o fuso horário no formato local/fuso horário.
| Entrada | Saída |
| {{ time_now|time_in_location:"Europe/Berlin" }} | Imprimirá a timestamp atual em 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
Adiciona horas, minutos e segundos a um carimbo de data e hora ou a uma data analisada. Você deve especificar o valor no formato h,m,s e transmitir pelo menos um valor (hora, minuto ou segundo) no filtro.
| Entrada | Saída |
| {{ time_now|time_add_duration:"1h2m3s" }} | Imprimirá uma timestamp após adicionar 1 hora, 2 minutos e 3 segundos a um valor de tempo na timestamp atual |
| {{ time_now|time_add_duration:"30m" }} | Imprimirá uma timestamp após adicionar 30 minutos ao valor horário |
time_unix
Converte um valor horário em uma timestamp Unix em segundos.
| Entrada | Saída |
| {{ time_now|time_unix }} | Imprimirá timestamp atual Unix em segundos |
time_unix_nano
Converte um valor de tempo em uma timestamp Unix em nanosegundos.
| Entrada | Saída |
| {{ time_now|time_unix_nano }} | Imprimirá timestamp atual Unix em nanosegundos |
🧑💻 Dados codificados ou criptografados
base64_encode ou decode
Codifica ou decodifica 64:
- base64_decode decodifica uma string para um []byte
- base64_encode codifica um []byte para uma string
| Entrada | Saída |
| https://example.com/test?name={{ contact.FIRSTNAME|base64_encode }} | https://example.com/test?name=RW56bw== (em vez de https://example.com/test?name=Enzo) |
Os filtros base64_encode e decode podem ser um parâmetro de codificação opcional:
- std: codificação base64 encoding normal,
- raw_std: codificação base64 normal, sem o = caracteres de preenchimento,
- url: versão segura da URL de codificação base64 encoding, + e / são substituídos respectivamente por - e _,
- raw_url: uma combinação de raw e url.
aes_128, 192 ou 256
Criptografa um valor. Por exemplo, você pode usar esse filtro para enviar informações criptografadas de contato em um URL, como um endereço de e-mail ou uma ID.
A variante de AES depende do comprimento da chave fornecida:
| Comprimento da chave secreta | Variante da AES |
| 16 bytes (128 bits) | AES-128 |
| 24 bytes (192 bits) | AES-192 |
| 32 bytes (256 bits) | AES-256 |
Por exemplo, para a variante AES-256, a variável deve ser formatada como {{ contact.ATTRIBUTE | aes_256:'key' }}, onde a chave:
- Tem 32 dígitos.
- Foi gerada aleatoriamente.
- Tem que ter persistido em sua ponta para poder decodificar o valor original.
Por padrão, se nenhum parâmetro de codificação for adicionado, base64 std será usado. Caso contrário, ele também suporta:
- raw_std: codificação base64 normal, sem o = caracteres de preenchimento,
- url: versão segura da URL de codificação base64 encoding, + e / são substituídos respectivamente por - e _,
- raw_url: uma combinação de raw e url.
Em nossos exemplos abaixo, estamos criptografando os endereços de e-mail de nossos contatos, usando a seguinte chave: e5a34a481274c776856d04119bed8188. Observe que você não deve usar a mesma chave, mas sim gerar sua própria chave seguindo os requisitos acima.
| Codificação | Entrada | Saída |
| Sem codificação (codificação padrão base64 std) | {{ contact.EMAIL | aes_256:'e5a34a481274c776856d04119bed8188' }} | Irá imprimir uma string aleatória que precisa ser decodificada para se ler o valor original |
| Codificação Base64 raw_std | {{ contact.EMAIL | aes_256:'e5a34a481274c776856d04119bed8188,raw_std' }} | Irá imprimir uma string aleatória que precisa ser decodificada para se ler o valor original |
| Codificação Base64 url | {{ contact.EMAIL | aes_256:'e5a34a481274c776856d04119bed8188,url' }} | Irá imprimir uma string aleatória que precisa ser decodificada para se ler o valor original |
| Codificação Base64 raw_url | {{ contact.EMAIL | aes_256:'e5a34a481274c776856d04119bed8188,raw_url' }} | Irá imprimir uma string aleatória que precisa ser decodificada para se ler o valor original |
🔎 Outros filtros
first
Retorna o primeiro item de uma sequência, um mapeamento ou uma string.
| Entrada | Solicitação de API | Saída |
| {{ params.array|first }} | "params" : { "array" : [ 1,2,3,4 ] } |
1 |
join
Combina os itens de uma matriz em uma única string, usando o argumento como um separador.
O separador entre elementos é vazio por padrão. Você pode defini-lo com o primeiro parâmetro opcional.
| Entrada | Saída |
| {{ [1, 2, 3]|join }} | 123 |
| {{ [1, 2, 3]|join: '|' }} | 1|2|3 |
last
Retorna o último item de uma sequência, mapeamento ou string.
| Entrada | Saída |
| {{ [1, 2, 3, 4]|last }} | 4 |
length
Retorna o número de itens de uma sequência ou mapeamento ou o tamanho de uma string.
| Entrada | Saída |
| {{ ['a', 'b', 'c', 'd']|length }} | 4 |
safe
Marca uma string como não exigindo mais escapamento HTML antes de saída.
| A | Solicitação de API | Entrada | Saída | |
| "params" :{HtmlTest: "<p>This is my test sentence.</p>"} | {{ params.htmltest|safe }} | This is my test sentence | ||
| B | Atributo de contato | Placeholder | Entrada | Saída |
| 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 | |
Sem o filtro safe, a tag HTML seria exibida como uma string normal no e-mail do destinatário: "<p>Esta é minha frase teste</p>" ou "Welcome to <b>Brevo</b>, we're glad to have you here".
slice
Extrai um pedaço de uma sequência, mapeamento ou string.
Este filtro pode ser configurado para:
| A | Faz um loop apenas pelo primeiro número "n" de elementos em uma matriz | Em ambos os casos, lembre-se de que elementos em uma matriz são atribuídos a um único número de posição, começando com "0" como primeira posição (eles são “indexados a zero”). |
| B | Faz um loop pelos elementos entre duas posições específicas ("n" e "m") na matriz | |
| C | Faz um loop pelos elementos entre dois elementos específicos em uma matriz. |
Em cada elemento, considere que sua matriz contém o seguinte: ["a","b","c","d","e","f","g","h"...]
| Entrada | Saída | |
| A |
{% for product in params.products|slice:':5' %} {{ product.name }} - {{ product.price }} {% endfor %} |
Fará um loop pelas 5 primeiras posições (0-4), ou seja: ["a","b","c","d","e"] |
| B |
{% for product in params.products|slice:'2:3' %} {{ product.name }} - {{ product.price }} {% endfor %} |
Fará um loop pelas posições (2-3), ou seja: ["c","d"] |
| C |
{% for product in params.products|slice:'b:d' %} {{ product.name }} - {{ product.price }} {% endfor %} |
Fará um loop pelos elementos especificados, ou seja: ["b","c","d"] |
verbatim
Na Brevo, as variáveis são escritas usando chaves duplas como {{ params.property }}. Quando você inclui chaves duplas como {{ this }} em seu e-mail, o Brevo o trata como um elemento do modelo.
Para exibir {{ }} como texto simples em seu e-mail, envolva o conteúdo em um bloco {% verbatim %}:
| Entrada | Saída |
|---|---|
|
{% verbatim %} {{ Print variable }} {% endverbatim %} |
{{ Print variable }} |
autoescape
Por padrão, a Brevo escapa todo o conteúdo variável, incluindo HTML e JavaScript. Isso significa que, se sua variável contiver HTML (por exemplo, <h1>Meu título</h1>), ela será exibida como texto simples em vez de renderizada como HTML.
Para permitir a renderização de HTML, você precisa desativar o escape automático usando a tag {% autoescape off %}. Envolva a variável neste bloco e feche-o com {% endautoescape %}:
{% autoescape off %}{{ params.my_html }}{% endautoescape %}
| Entrada | Saída | |
|---|---|---|
| Sem a etiqueta de autoescape | {{ params.my_html }} | <h1>Meu título</h1> |
| Com a etiqueta autoescape |
{% autoescape off %} {{ params.my_html }} {% endautoescape %} |
Meu título |
📖 Recursos adicionais
A Linguagem do modelo Brevo se baseia no Pongo2, uma reimplementação do Django in Go (uma linguagem de programação).
Todas as tags suportadas
autoescape, comment, cycle, filter, firstof, for, if, ifchanged, now, set, spaceless, templatetag, with.
Todos os filtros suportados
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 os filtros suportados para algorítimos 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.
🤔 Dúvidas?
Em caso de dúvida, sinta-se à vontade para entrar em contato com nossa equipe de suporte, criando um tíquete a partir da sua conta. Caso ainda não tenha uma conta, entre em contato conosco aqui.
Se você está procurando ajuda com um projeto usando o Brevo, podemos encontrar à agência parceira da Brevo certa.