Pular para o conteúdo principal
Liquid é uma linguagem de templating suportada pelo OneSignal para personalizar mensagens através de canais incluindo email, push, SMS, in-app e Live Activities. Ela usa tags, filtros e condicionais para personalizar dinamicamente o conteúdo da mensagem. Para aprender mais sobre sintaxe Liquid, veja a documentação oficial do Liquid.

Sintaxe básica

Liquid usa duas estruturas de sintaxe principais:
  1. Output Tags: {{ ... }} — Exibem dados de uma variável ou objeto.
  2. Logic Tags: {% ... %} — Executam instruções condicionais ou loops.

Condicionais

Operadores

  • ==, !=, >, <, >=, <=
  • and, or
  • contains (string ou array)
liquid

if, elsif, else

liquid

unless

liquid

Filtros

Aplique filtros usando {{ variable | filter }} para ajustar como os dados são exibidos.

default

Atribua um valor padrão se a propriedade estiver vazia ou não existir.
liquid

date

O filtro date converte um timestamp em outro formato de data. O formato para esta sintaxe é o mesmo que strftime. A entrada usa o mesmo formato que Ruby’s Time.parse. Defina datas como um timestamp unix em segundos com tags. Isso permite o uso tanto de personalização de sintaxe Liquid quanto de segmentação com Time Operators. Por exemplo, uma tag pode parecer com: bill_due : 1687968776
liquid
Result
liquid
Result
Formatação de data funciona em strings se elas contiverem datas bem formatadas.
liquid
Result
Para obter a hora atual, passe a palavra especial now (ou today) junto com o filtro date.
liquid
Result
A hora atual será renderizada na mensagem com base em quando a mensagem é enviada ao destinatário. Se você estiver testando a mensagem, você verá a hora atual como quando a mensagem de teste foi enviada.

capitalize

Este filtro torna a primeira letra de uma string maiúscula e converte os caracteres restantes em minúsculas.
liquid
Result

round

Este filtro arredonda um número para o inteiro mais próximo, ou, se um número for passado como argumento, para aquele número de casas decimais.
liquid
Result

pluralize

Este filtro retorna a forma singular ou plural de uma string com base em um número fornecido. O número deve ser um número inteiro e pode ser fornecido como uma string. As formas singular e plural de uma string devem ser fornecidas.
liquid
Result

Iteração

Loops for

Executa repetidamente um bloco de código. Para uma lista completa de atributos disponíveis dentro de um loop for, consulte a documentação do loop for do Liquid.
liquid
Request Body
Result
Embora poderoso e flexível, o uso de loops for em sintaxe Liquid pode levar a baixo desempenho de entrega de notificações em certos casos raros. Seja consciente do seu uso de loops for. Também note que prevenimos o uso de loops for em alguns campos do canal Push: contents, headings, subtitle, apns_alert e url

limit & offset

Limita o loop ao número especificado de iterações. Por exemplo, se você deseja apenas mostrar 4 produtos em uma mensagem, você pode usar Limits e Offsets para especificar o número de produtos mostrados.
Data
liquid
Result
Para iniciar o loop no índice especificado, adicione um valor de offset:
Data
liquid
Result

where

Cria um array incluindo apenas os objetos com um valor de propriedade fornecido, ou qualquer valor verdadeiro por padrão. Neste exemplo, assuma que você tem uma lista de produtos e deseja mostrar seus produtos de cozinha separadamente. Usando where, você pode criar um array contendo apenas os produtos que têm um type de kitchen.
Data
liquid
Result

Manipulação de String

Aplique filtros de string para ajustar como valores de tags ou strings inline são exibidos nas mensagens.

FAQ

Por que a substituição não está funcionando?

  • Mensagens in-app não suportam substituição de propriedade.
  • Substituição de tag não funciona ao usar “Send Test Message”.
  • Chaves de tag devem ser alfanuméricas, ou usar _ e - (sem pontos ou espaços).
  • Substituição não aparece em modo preview — envie uma mensagem real para testar.

Quando devo usar default em vez de if/else?

Use o filtro default quando apenas o valor da variável precisa de um fallback e o texto ao redor permanece o mesmo.
liquid
Result (name = "Jon")
Result (name está vazio)
Use a lógica condicional if/else quando o texto ao redor, a pontuação ou a estrutura da frase também precisar mudar com base na existência da variável.
liquid
Result (name = "Jon")
Result (name está vazio)
Não use default quando a estrutura da frase muda. Por exemplo, {{ name | default: "Shop your favorites" }}, shop your favorites renderizaria como “Shop your favorites, shop your favorites” quando o nome estiver vazio. Se o fallback muda mais do que apenas a variável, use if/else.

Como controlar espaços em branco e quebras de linha?

Use hífens: {{- ... -}}, {%- ... -%} para remover espaços em branco ao redor. Veja Controle de espaços em branco para mais detalhes.

Como lidar com conteúdo gerado por usuários?

Envolva texto gerado por usuários em {% raw %} e {% endraw %} para prevenir análise Liquid. Veja sintaxe “raw”.

Páginas relacionadas

Personalização de mensagens

Visão geral de todas as opções de personalização, incluindo Liquid, Data Feeds e eventos personalizados.

Data Feeds

Puxe dados em tempo real de suas APIs para mensagens no momento do envio.

Tags

Armazene pares chave-valor em usuários para segmentação e personalização Liquid.

Templates

Crie templates de mensagens reutilizáveis com personalização Liquid integrada.