Skip to content

Perguntas frequentes

Nesta página, você encontra respostas para perguntas frequentes sobre Liquid.

Sobre o Liquid na Braze

Como uso snippets de Liquid na Braze?

Em muitos casos, você pode incorporar snippets de Liquid acessando suas Campaigns ou Canvas e inserindo Liquid no modal de personalização em áreas como o corpo da mensagem de e-mail ou em seus Segments.

Onde posso saber mais?

Para saber mais sobre Liquid, confira nosso caminho guiado Personalização dinâmica com Liquid no Braze Learning. Você também pode consultar a biblioteca de casos de uso do Liquid para inspiração e uma variedade de exemplos de personalização usando Liquid.

Qual é a diferença entre usar Liquid e Connected Content para personalização?

O Braze Connected Content é um exemplo de Liquid tag. Ele também é usado para personalização, mas os dados vêm de um endpoint externo em vez de dados armazenados na Braze. Confira nossa seção dedicada de Connected Content para saber mais sobre como expandir a personalização das suas mensagens.

O que é templating com Liquid?

Essa é a forma mais comum de usar Liquid na Braze. O templating com Liquid envolve extrair dados do perfil de um usuário para uma mensagem. Esses dados podem variar desde o nome do usuário até eventos personalizados de uma mensagem disparada por evento.

Consulte Tags de personalização compatíveis para uma lista completa das Liquid tags compatíveis.

O uso de Liquid registra pontos de dados?

Não.

Tags de personalização e fontes de dados

Como posso usar Liquid para enviar uma saudação personalizada?

Para uma saudação personalizada usando o nome do usuário, utilize os atributos padrão do perfil de usuário, como {{${first_name}}} e {{${last_name}}}.

Você também pode usar uma instrução Liquid {% if X %} para fazer renderização condicional com base em qualquer coisa, como o dia da semana ou atributos personalizados. Para saber mais sobre os operadores Liquid compatíveis que podem ser usados em instruções condicionais, confira Operadores.

Como posso personalizar uma mensagem com base na localização do usuário?

Existe um atributo padrão para a localização do usuário: {{${most_recent_location}}}.

Qual é a diferença entre {{campaign.${name}}} e {{campaign.${message_name}}}?

Tanto {{campaign.${name}}} quanto {{campaign.${message_name}}} são tags de personalização Liquid compatíveis. Ambas as tags fazem referência a atributos da campanha. {{campaign.${name}}} indica o nome da sua campanha, e {{campaign.${message_name}}} é o nome da sua variante de mensagem.

Para uso em URLs e strings de consulta (por exemplo, quando um nome contém % ou espaços), consulte Nomes de Campaign em URLs.

Como uso Liquid com objetos aninhados?

A Braze tem um recurso integrado que gera código Liquid para Segments que podem ser usados em uma mensagem. Especificamente, você pode criar um Segment que corresponda a vários critérios em um objeto.

Para saber mais, confira Segmentação multicritério.

Como uso propriedades de eventos para personalizar uma mensagem que um evento está disparando?

Você pode acessar propriedades de eventos disparados por API com a tag api_triggered_property: {{api_trigger_properties.${attribute_key}}}.

A Braze suporta um array de arrays em Liquid?

O Liquid não suporta nativamente arrays de arrays. Armazene os valores como um array de strings separadas por vírgula e use o filtro split para analisá-los quando necessário.

Variáveis e sintaxe

Como atribuir variáveis com Liquid?

Você pode criar e atribuir variáveis usando a tag assign. Isso cria uma variável no criador de mensagem que também pode ser referenciada ao longo da sua mensagem.

Quando devo usar assign versus capture?

Tanto assign quanto capture criam variáveis Liquid, mas servem a propósitos diferentes:

  • assign é para variáveis simples que armazenam um único valor, como um booleano, número ou string simples. Você também pode aplicar um único filtro na mesma linha.
  • capture é para armazenar um bloco de texto que pode incluir múltiplas variáveis, strings ou expressões complexas.

Use capture quando o valor for complexo demais para uma única instrução assign, como URLs que usam outras variáveis Liquid ou atributos personalizados como parâmetros. capture também é preferível ao implementar variáveis Liquid no corpo de chamadas de Connected Content.

Exemplos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{% comment %}Use assign for custom attributes{% endcomment %}
{% assign name = {{custom_attribute.${first_name}}} %}
{% assign price = {{custom_attribute.${price}}} | plus: 0 %}

{% comment %}Use assign for a simple variable{% endcomment %}
{% assign discount_label = "20% off" %}
Hello {{ customer.first_name | default: "there" }}, enjoy {{ discount_label }} on your next order!

{% comment %}Use capture for complex strings{% endcomment %}
{% capture greeting %}Hello, {{custom_attribute.${first_name}}}! Your order #{{custom_attribute.${order_id}}} is ready.{% endcapture %}
{{ greeting }}

{% comment %}Use capture to create conditional content{% endcomment %}
{% capture promo_block %}
{% if customer.vip == true %}
As a VIP member, you get free shipping.
{% else %}
Join our VIP program to unlock free shipping.
{% endif %}
{% endcapture %}

As variáveis Liquid são compartilhadas entre a linha de assunto e o corpo?

Não. A Braze renderiza cada componente da mensagem separadamente (como linha de assunto, corpo HTML, pré-cabeçalho e título do push). Atribuições ou capturas feitas em um campo não ficam disponíveis em outro. Repita o Liquid ou a chamada de Connected Content em cada campo que precisar do valor.

O que é a lógica de loop for e como posso usá-la?

Loops for também são conhecidos como tags de iteração. Usar a lógica de loop for nos seus snippets Liquid permite percorrer blocos de Liquid até que uma condição seja atendida.

Na Braze, isso pode ser usado para verificar itens em um atributo personalizado de array, ou uma lista de valores e objetos retornados por um catálogo, seleção ou resposta de chamada de Connected Content. Especificamente, você pode usar a lógica de loop for como parte do seu envio de mensagens para verificar se um produto está em estoque ou se um produto tem uma avaliação mínima.

Por exemplo, digamos que você tenha um catálogo chamado “Games” com uma seleção chamada “cheap_games”. Para obter os títulos dos jogos em “cheap_games”, você pode usar este snippet Liquid:

1
2
3
4
{% catalog_selection_items Games cheap_games %}
{% for item in items %}
 Get this game: {{ item.title }}
{% endfor %}

Quando as condições definidas forem atendidas, sua mensagem pode prosseguir. Usar essa lógica é uma forma útil de economizar tempo, em vez de repetir blocos Liquid para diferentes condições.

O que é a lógica de interrupção e como posso usá-la?

A lógica de interrupção permite impedir que uma mensagem seja enviada se as condições forem atendidas. Isso é especialmente útil para evitar que mensagens incompletas sejam enviadas aos seus usuários. Para exemplos de lógica de interrupção nas suas Campaigns de marketing, leia mais em Interrompendo mensagens.

Posso usar Liquid dentro da tag abort_message?

Não. A tag {% abort_message %} aceita uma string estática entre aspas, não personalização Liquid. Use outra lógica Liquid antes da tag se precisar de um comportamento de interrupção condicional.

Como mascarar números de telefone com Liquid?

Você pode mascarar números de telefone usando o filtro slice para extrair dígitos específicos e o filtro append para combiná-los com caracteres de máscara.

Mascarar todos os dígitos exceto os últimos quatro

Para exibir um número de telefone de 10 dígitos como ******7890:

1
2
3
4
5
6
7
8
9
{% assign phone = {{${phone_number}}} | split: '' %}
{% assign masked_phone = '' %}
{% for i in (0..5) %}
  {% assign masked_phone = masked_phone | append: '*' %}
{% endfor %}
{% for i in (6..9) %}
  {% assign masked_phone = masked_phone | append: phone[i] %}
{% endfor %}
{{ masked_phone }}

Mostrar os três primeiros e os últimos quatro dígitos

Para exibir um número de telefone de 10 dígitos como 123***7890:

1
2
3
4
{% assign first_part = {{${phone_number}}} | slice: 0, 3 %}
{% assign last_part = {{${phone_number}}} | slice: -4, 4 %}
{% assign masked_phone_number = first_part | append: "***" | append: last_part %}
{{ masked_phone_number }}

Canvas, catálogos e propriedades de disparo

Por que meu Liquid disparado por API está falhando na Braze?

Um par extra de chaves é uma causa comum. Por exemplo, {{{api_trigger_properties.${attribute_key}}}} não é uma sintaxe de personalização válida na Braze. Use exatamente duas chaves de abertura e duas de fechamento: {{api_trigger_properties.${attribute_key}}}.

Existem limites de tamanho para propriedades de contexto do Canvas?

A Braze não impõe um limite rígido para as propriedades de contexto do Canvas, mas mantenha as cargas úteis abaixo de aproximadamente 1 KB (~1.000 caracteres). Objetos maiores podem aumentar o uso de memória e atrasar a renderização de mensagens durante envios de alto volume.

Por que recebo um erro de Liquid ao visualizar certos tipos de dados no dashboard?

Alguns tipos de propriedade de contexto do Canvas exigem coerção em Liquid antes de serem usados em comparações ou operações matemáticas. Por exemplo, quando você precisa de comportamento numérico:

1
{{context.${property_name} | plus: 0}}

Por que meu snippet de Liquid do catálogo retorna uma mensagem de interrupção?

Se um snippet de Liquid do catálogo for interrompido durante o envio, recrie o snippet a partir do menu de personalização selecionando itens individuais do catálogo em vez de usar uma seleção em massa ou totalmente dinâmica. Consulte Catálogos e Seleções.

Content Blocks e o criador de mensagem

Por que há espaçamento extra em mensagens que usam Content Blocks?

Se você notar espaçamento extra em mensagens enviadas que usam Content Blocks com Liquid, pode haver quebras de parágrafo ou de linha desnecessárias dentro das suas instruções condicionais. Escreva suas instruções condicionais em uma única linha, em vez de distribuí-las em várias linhas.

Exemplo

1
{% if {{custom_attribute.${has_discount}}} == true %}Discounted Item{% elsif {{custom_attribute.${is_new_arrival}}} == true %}New Arrival{% else %}Regular Item{% endif %}

Por que o Liquid em várias linhas cria espaços em branco inesperados nos editores de arrastar e soltar?

Quando o código Liquid é distribuído em várias linhas no editor de arrastar e soltar de mensagens no app ou no editor de arrastar e soltar de e-mail, cada bloco {% %} é renderizado como texto não visível. As quebras de linha são preservadas como linhas vazias antes da saída visível, causando espaços em branco inesperados.

Adicione hifens dentro dos delimitadores de tag para remover os espaços em branco ao redor, mantendo o código legível:

1
2
3
4
5
{%- assign event_date = {{custom_attribute.${PreferredPickupDate}}} | date: "%s" -%}
{%- assign today = 'now' | date: "%s" -%}
{%- assign difference = event_date | minus: today -%}
{%- assign difference_days = difference | divided_by: 86400 -%}
Only {{ difference_days }} days until your move!

Solução 2: consolidar o Liquid em uma única linha

Remova todas as quebras de linha para que o Liquid fique em uma linha contínua:

1
{% assign event_date = {{custom_attribute.${PreferredPickupDate}}} | date: "%s" %}{% assign today = 'now' | date: "%s" %}{% assign difference = event_date | minus: today %}{% assign difference_days = difference | divided_by: 86400 %}Only {{ difference_days }} days until your move!

Ambas as abordagens evitam linhas vazias indesejadas na mensagem renderizada. Isso se aplica ao editor de arrastar e soltar de mensagens no app, ao editor de arrastar e soltar de e-mail e a Content Blocks com Liquid. Para saber mais, consulte Controle de espaço em branco.

Por que meu Content Block não aparece em Row na ferramenta de busca do editor de arrastar e soltar?

Alguns Content Blocks não aparecem em Row na busca do editor de arrastar e soltar. Adicione um bloco HTML a partir da guia Content (Advanced) e, em seguida, insira a Liquid tag do Content Block nesse bloco HTML para renderizar o conteúdo do bloco.

Por que a prévia do meu Content Block de arrastar e soltar difere da visualização de composição?

Quando você usa um modelo de Content Block com Liquid, as media queries para dispositivos móveis no bloco podem não ser aplicadas na prévia da mesma forma que quando você arrasta o bloco diretamente para uma mensagem. Arrastar o bloco preserva o layout, mas o desacopla do bloco de origem, de modo que edições futuras no bloco não atualizam mais a mensagem automaticamente.

Como faço para visualizar valores de propriedades de evento no criador de mensagem?

Use Preview as Custom User e insira valores de amostra de propriedades de evento personalizado para o usuário que você está visualizando. Isso também é útil para mensagens com lógica de interrupção quando você precisa de valores de prévia que não disparem uma interrupção.

Liquid em mensagens de e-mail

Por que minha mensagem é interrompida com “Invalid from email address for recipient:”?

Essa interrupção ocorre quando o Liquid no endereço De produz uma sintaxe inválida, como uma variável ausente, espaços extras ou caracteres não permitidos. Faça a prévia com um usuário teste e verifique se o endereço De renderizado corresponde ao domínio de envio configurado.

Como criar um endereço de resposta dinâmico?

Use Liquid no campo Responder para quando seu espaço de trabalho suportar a configuração dinâmica de endereço de resposta. Combine com as configurações de nome de exibição do De conforme necessário. Consulte Configurações de e-mail para opções específicas do espaço de trabalho.

Solução de problemas com erros de Liquid

Por que meu código Liquid não funciona mesmo parecendo correto?

Se o seu código Liquid parece sintaticamente correto, mas não está funcionando, verifique se há aspas inteligentes (aspas curvas como ' ' ou " ") e travessões inteligentes (travessões longos como ) em vez de aspas retas (' ' ou " ") e hifens (-). O Liquid reconhece apenas caracteres ASCII retos, então aspas e travessões inteligentes causarão erros de análise.

Isso acontece frequentemente quando a configuração de teclado do macOS Usar aspas e travessões inteligentes está ativada, o que converte automaticamente os caracteres conforme você digita no dashboard da Braze.

Para desativar essa configuração no macOS:

  1. Acesse Ajustes do Sistema > Teclado > Entrada de Texto > Editar.
  2. Desmarque Usar aspas e travessões inteligentes.
Exemplo Aspas curvas (não funciona) Aspas retas (funciona)
Valor padrão {{${first_name} | default: 'Torchie'}} {{${first_name} | default: 'Torchie'}}
Condicional {% if ${country} contains 'US' %} {% if ${country} contains 'US' %}

Isso se aplica a valores padrão, condicionais e qualquer outro Liquid que use aspas. Aspas curvas e retas podem parecer iguais na tela, então compare seu código com atenção ou cole-o em um editor de texto simples.

Para saber mais sobre o uso de aspas no Liquid, consulte Sintaxe do Liquid.

Por que estou vendo um erro de Liquid “Unexpected end token”?

Esse erro geralmente indica chaves extras ou ausentes. Não aninhe {{ }} dentro de outra expressão de tag Liquid. Por exemplo, use {{custom_attribute.${date_of_birth} | date: '%s'}} em vez de envolver a referência do atributo em um par adicional de chaves.

Por que a repetição de tentativa do Connected Content não está disponível para minha mensagem no app?

A tag {% connected_content %} com repetição de tentativa não é compatível com todos os tipos de mensagem, incluindo alguns formatos de mensagem no app. Remova os parâmetros de repetição de tentativa ou use um canal compatível para chamadas de Connected Content com repetição de tentativa.

New Stuff!