Variáveis e Líquido
Tudo o que é dinâmico neste aplicativo é escrito em Liquid - a mesma linguagem de modelos utilizada pelos temas dShopify. O senhor insere um marcador de posição, e o aplicativo o preenche no momento do envio.
Os namespaces
| Espaço de nomes | De onde vem o valor | Disponível em |
|---|---|---|
{{ variables.key }} |
O campo “Variáveis (JSON)” na ação Shopify Flow | Assunto e corpo do e-mail, URL HTTP, cabeçalhos e corpo |
{{ secrets.key }} |
A página “Segredos” | O mesmo, além do nome de usuário e da senha do SMTP |
{{ shop.name }}, {{ shop.domain }}, {{ shop.email }} |
Sua loja | Ações de e-mail e HTTP |
{{ language }} |
O idioma enviado na etapa “Shopify Flow”; caso contrário, o idioma principal do layout | Assunto do e-mail, texto de pré-visualização e corpo da mensagem - consulte Envie e-mails no idioma do seu cliente |
{{ unsubscribe_link }}, {{ unsubscribe_url }} |
O link para cancelar a inscrição do destinatário, apenas em modelos de marketing | Corpo do e-mail; vazio em layouts transacionais - veja abaixo |
{{ flow.key }} |
The raw payload of Shopify Flow | Apenas solicitações HTTP |
O cartão “Variáveis do sistema” no editor lista os valores da loja com seus conteúdos atuais; ao clicar em um deles, ele é copiado.
Passagem de variáveis de umShopify Flow
Na ação “Shopify Flow”, insira um objeto JSON no campo “Variáveis (JSON)”:
{
"firstName": "{{ customer.firstName }}",
"orderNumber": "{{ order.name }}",
"total": "{{ order.totalPriceSet.shopMoney.amount }}"
}
Em seguida, faça referência a elas em qualquer parte do layout:
Hi {{ variables.firstName }}, your order {{ variables.orderNumber }} is on its way.
A escolha das chaves é sua. O nome que você indicar à esquerda é o que deverá ser utilizado após variables., respeitando exatamente a grafia e o uso de maiúsculas.
Não é necessário escrever esse JSON manualmente. Cada layout possui um cartão “Use inShopify Flow” com o JSON correto, pronto para ser copiado - consulte Transmissão de dados de umShopify Flow.
Filtros
Os filtros de líquido padrão funcionam. O mais útil é o default, que protege contra valores nulos:
Hi {{ variables.firstName | default: "there" }}
Outros se comportam como seria de se esperar:
{{ variables.productTitle | upcase }}
{{ variables.total | round: 2 }}
{{ variables.note | truncate: 100 }}
Quando uma variável é exibida em branco
Um envio em tempo real que substitui qualquer variável referenciada por “nothing” recebe um selo de “Variáveis vazias” no Histórico. Ao abrir a entrada, as variáveis recebem nomes e dois problemas distintos são separados:
- Enviado por Shopify Flow, mas vazio - a chave estava no seu JSON, mas o Shopify Flow não gerou nenhum valor. Normalmente, trata-se de um caminho de propriedade incorreto ou de um campo que está realmente vazio para esse registro (um checkout como convidado não possui o nome do cliente).
- Isso não foi enviado por Shopify Flow de forma alguma - a chave está totalmente ausente do seu JSON.
Adicionar um fallback | default: indica que o espaço em branco é intencional, e o aplicativo deixa de exibir avisos a respeito.
Condicionais e loops
Utilize o bloco HTML/Código para expressões de condições:
{% if variables.isVip %}
<p>As a VIP you get free shipping on this order.</p>
{% else %}
<p>Spend a little more to unlock free shipping.</p>
{% endif %}
Utilize o bloco “Loop” para repetir os itens de linha de uma matriz, por exemplo, os itens de linha de uma nota fiscal:
{% for item in variables.items %}
<tr>
<td>{{ item.title }}</td>
<td>{{ item.quantity }}</td>
<td>{{ item.price }}</td>
</tr>
{% endfor %}
Envie o array do Shopify Flow como JSON:
{
"items": [
{ "title": "Classic White T-Shirt", "quantity": 2, "price": "29.00" },
{ "title": "Eco Water Bottle", "quantity": 1, "price": "19.00" }
]
}
Para visualizar um loop no construtor, insira o mesmo array JSON como valor na guia “Testar variáveis”.
Os objetos se comportam de maneira diferente no e-mail e no HTTP
Essa é a única aresta afiada que vale a pena conhecer.
- Em uma solicitação HTTP, a interpolação de um objeto ou array o serializa automaticamente para JSON.
{{ variables.records }}torna-se um array JSON válido no corpo da solicitação. Um filtrojsontambém está disponível caso deseje ser explícito. - Em um e-mail, essa conversão não ocorre. Ao interpolar um objeto inteiro, o texto literal é renderizado como
[object Object].
Portanto, em e-mails, sempre acesse o objeto em vez de imprimi-lo:
Wrong: {{ variables.customer }}
Right: {{ variables.customer.firstName }} {{ variables.customer.lastName }}
Ou utilize um loop para percorrer um array, em vez de exibi-lo por completo.
Segredos nos modelos
Faça referência a um segredo armazenado da mesma forma:
Authorization: Bearer {{ secrets.airtableAccessToken }}
Utilize a sintaxe exata {{ secrets.keyName }}. As seguintes opções não funcionam:
{{ secret.keyName }}- singular{{ secrets['keyName'] }}- sintaxe de colchetes
Os nomes das chaves diferenciam maiúsculas de minúsculas. Consulte Segredos.
Substituição do corpo da mensagem para solicitações HTTP
O campo “variáveis” da ação HTTP possui um segundo modo. Ao passar uma chave body, ela substitui integralmente o corpo da solicitação salvo:
{
"body": { "anything": "you like", "shaped": ["however"] }
}
Isso é útil quando a forma da carga útil é determinada por uma etapa anterior do Shopify Flow. A única exceção: se o próprio corpo salvo fizer referência a {{ variables.body }}, ele será tratado como uma variável comum.
Testando o que o(a) senhor(a) escreveu
A visualização na página não avalia o Liquid - ela exibe as tags exatamente como foram escritas. Para ver os valores resolvidos:
- Para e-mails, utilize a opção “Enviar e-mail de teste” no editor de layout.
- Para solicitações HTTP, utilize o botão “Testar”, que exibe a “URL resolvida” e o “Corpo resolvido” juntamente com a resposta.
O link para cancelar a inscrição em modelos de marketing
Um layout cujo tipo de e-mail seja “Marketing” recebe mais duas variáveis. Cada destinatário de um e-mail de marketing possui seu próprio link para cancelar a inscrição, e essas variáveis o inserem:
{{ unsubscribe_link }}exibe um link com o texto “Cancelar inscrição” da seção “Configurações” (ou o próprio texto do layout).{{ unsubscribe_url }}exibe o endereço puro, para um botão ou um link que o senhor mesmo define o estilo.
<p>No longer interested? <a href="{{ unsubscribe_url }}">Unsubscribe here</a>.</p>
Não é necessário utilizá-las: todo e-mail de marketing já tem um rodapé de cancelamento de inscrição anexado de qualquer maneira. Quando o corpo do e-mail já contém o link, o rodapé omite a frase de cancelamento de inscrição e anexa apenas os dados da empresa. No assunto e no texto de pré-visualização, ambas as variáveis não exibem nada, e em um layout transacional elas estão sempre vazias. Consulte E-mails de marketing e cancelamentos de inscrição.
Relacionado
- Transmissão de dados de umShopify Flow - o campo “Variáveis (JSON)” em detalhes.
- Crie um layout de e-mail - para onde essas variáveis vão.
- E-mails de marketing e cancelamentos de inscrição - layouts de marketing, o rodapé de cancelamento de inscrição e a lista de cancelamento de inscrição.
- Segredos - armazenar credenciais com segurança.
- Faça uma solicitação HTTP a partir de Shopify Flow - variáveis em uma solicitação real.

