Construtor de Fluxos de Fidelidade¶
Um fluxo de trabalho é uma regra que recompensa clientes automaticamente. Cada fluxo começa com um gatilho ("quando isto acontecer"), pode se ramificar em condições ("somente se…") e executa uma ou mais ações ("faça isto"). Você monta o fluxo visualmente, em um canvas.
Abra o construtor a partir do Painel de Fidelidade: clique em Manage Workflows e depois em Create Workflow, e escolha uma receita pronta ou Start from scratch. Para editar um fluxo existente, clique no nome dele na lista.

O construtor tem três áreas:
- Toolbar (no topo) — o nome do fluxo, sua programação e orçamento, seu status e os botões de ação. Veja A barra de ferramentas.
- Canvas (no centro) — o fluxo visual do seu gatilho e das etapas.
- Config panel (à direita) — configurações da etapa que você selecionou. Clique em Performance e este painel passa a mostrar os resultados do fluxo.
Pedidos sem conta de cliente
Os fluxos recompensam um cliente, então um pedido feito na finalização de compra como visitante, sem cliente associado, não executa nenhum fluxo.
Passo 1 — Escolha um gatilho¶
Todo fluxo precisa de exatamente um gatilho. Clique no cartão Start when... no canvas e escolha um gatilho no menu. Para trocá-lo depois, selecione o gatilho e clique em Change no painel de configuração. Ao trocar, as configurações do gatilho são apagadas, e o sistema pergunta antes se você tiver alterado alguma delas.

| Gatilho | Dispara quando… |
|---|---|
| Order Complete | Um pedido é pago. Opcionalmente, defina Only orders with a subtotal of at least um valor (itens após descontos, antes do frete e dos impostos), ou marque Skip orders paid entirely with discounts. |
| Customer Signup | Uma nova conta de cliente é criada. Opcionalmente, marque Only if the email is verified at sign-up — um cliente que verificar o e-mail depois não é captado, porque a Shopify não envia um segundo evento. |
| Customer Birthday | É o aniversário do cliente, verificado uma vez por dia às 09:00 UTC. Escolha On the day ou Days before (até 30). A data de aniversário vem de um metacampo do cliente (custom.birthday por padrão — abra More options para usar outro namespace.key) ou de uma tag do cliente no formato bday:MM-DD. |
| Product Purchase | Um produto específico é comprado. Escolha os produtos, uma quantidade total mínima (1 por padrão) e, opcionalmente, uma faixa de valor que esses produtos devem somar. |
| Collection Purchase | Um produto de uma coleção escolhida é comprado. Opcionalmente, defina uma faixa de valor que os itens da coleção devem somar. |
| Order Fulfilled | Um pedido é totalmente enviado (o padrão) — ou escolha Any shipment. |
| Refund Created | Um reembolso é emitido. Escolha Any refund, Full refund only ou Partial refund only, e um valor mínimo de reembolso opcional. |
Ao selecionar um gatilho, suas configurações são abertas no painel de configuração.
Escolhendo variantes específicas
O seletor de produtos abre com as variantes exibidas. Marque todas as variantes e o produto inteiro é escolhido, então as variantes que você adicionar depois também contam. Marque só algumas e o fluxo fica limitado exatamente a essas variantes — útil quando um produto mistura valores de cartão-presente com outros itens. O painel conta-as separadamente, por exemplo "1 product, 9 variants".
Níveis de recompensa por valor
Product Purchase e Collection Purchase só podem disparar quando os produtos escolhidos (ou os itens da coleção) somam um valor From um número Under outro — por exemplo, de $150 até menos de $200. Só as linhas correspondentes contam, pelo preço após descontos; o restante do carrinho não entra. O valor inferior está incluído e o superior não, então você pode criar um fluxo por nível ($150–$200, $200–$250, … e um último a partir de $1,000 sem valor máximo) e exatamente um deles dispara para qualquer pedido. O painel mostra a faixa de volta ("Matches from $150 to under $200"), e uma faixa que nenhum pedido poderia atingir é sinalizada. Use {{ trigger.matched_amount }} em uma mensagem para mostrar o valor que foi contado. Para recompensar uma escada inteira em um único fluxo — e contar as compras de um cliente em uma janela de tempo como uma só — use Níveis de recompensa.
Reembolso total ou parcial
Um reembolso conta como total quando, somado aos reembolsos anteriores do pedido, devolve o valor total do pedido — então, se você reembolsar primeiro parte de um pedido e o restante depois, o primeiro reembolso é parcial e o segundo é total. Todo reembolso anterior a esse ponto é parcial. Em Refund Created, condições como Order contains product verificam o pedido que foi reembolsado — por exemplo, execute um fluxo só para reembolsos de pedidos que continham seu produto cartão-presente. O fluxo roda em todo reembolso de um pedido.
Os gatilhos definem quais condições e ações estão disponíveis
Condições que leem detalhes do pedido (como Order Amount) e as ações Add Order Tag / Note e Reward Tiers só aparecem quando seu gatilho fornece dados do pedido. Em Customer Signup ou Customer Birthday, por exemplo, elas ficam ocultas porque não há pedido. Se você trocar o gatilho de um fluxo depois de adicionar uma dessas ações, a etapa é sinalizada e o fluxo não pode ser ativado até que você restaure o gatilho ou remova a etapa.
Passo 2 — Adicione etapas¶
Clique no botão + abaixo de qualquer cartão para adicionar a próxima etapa. Você pode adicionar uma condição ou uma ação. Para remover uma etapa, clique no ✕ do cartão dela.

Condições¶
Uma condição é uma comporta. As etapas colocadas no ramo YES só são executadas quando a verificação passa; as etapas do ramo NO são executadas quando ela falha.
Escolha Add condition no menu e depois o que verificar, no seletor Condition type do painel de configuração. O painel lê como uma frase — "Go to YES when all of these are true" — e cada verificação oferece comparações em linguagem simples:
| Condição | Verifica | Opções |
|---|---|---|
| Order Amount | O Subtotal (before tax/shipping), o Total (after tax/shipping) ou o Discount amount do pedido | is at least, is more than, is at most, is less than, is exactly |
| Customer Tag | As tags do cliente na Shopify | has any of, has all of, has none of |
| First Order | Se este é o primeiro pedido do cliente | is the first order, is a repeat order |
| Tier Level | O nível de fidelidade atual do cliente, comparado pelo nível | is, is not, is at least, is at most |
| Order contains product | Se produtos específicos (ou variantes) estão no pedido, com uma quantidade mínima | contains, does not contain |
| Product in Collection | Se os produtos pedidos pertencem a certas coleções | has a product from, has only products from, has no products from |
| Order Item Count | O número de itens, como Total quantity ou Unique items | as mesmas cinco comparações de Order Amount |
| Customer Total Spent | O gasto total do cliente, antes deste pedido | as mesmas cinco comparações de Order Amount |
| Tier Reward Earned | Se a etapa Reward Tiers anterior deu a este pedido um complemento de nível. Disponível quando o fluxo tem uma etapa Reward Tiers | earned a tier reward top-up, earned no top-up |
| Tier Reward Reduced | Se o reembolso reduziu a recompensa de nível — veja Reembolsos e Níveis de recompensa. Disponível quando o fluxo tem uma etapa Reward Tiers Refund | reduced the tier reward, left the tier reward as it was |
Para exigir várias verificações ao mesmo tempo, clique em + Add condition no painel — todas as linhas precisam passar para o ramo YES; caso contrário, o pedido segue para NO. Clique em uma linha para abri-la e no ícone de lixeira para removê-la.

Como First Order, Customer Total Spent e Tier Level enxergam seus clientes
O Gift Card Hero conta sozinho os pedidos e o gasto total de cada cliente, a partir do momento em que o cliente recebeu a primeira recompensa — quando o saldo de recompensas dele é criado. Pedidos anteriores a isso não são contados. Por isso, First Order é verdadeiro para qualquer cliente que ainda não recebeu uma recompensa, mesmo que já tenha comprado com você antes, e Customer Total Spent começa do zero. As duas verificam o cliente antes do pedido atual. Um cliente sem nível nunca passa em uma verificação de Tier Level — nem mesmo em "is not". Veja Níveis para saber como o gasto é contado.
Ações¶
Ações são o que o fluxo realmente faz.
| Ação | O que faz |
|---|---|
| Issue Credit | Adiciona crédito da loja ao saldo de recompensas do cliente. Escolha Fixed amount ou % of order, e se deseja Boost by customer tier. Em More options: um maximum credit cap, quando o crédito expira e uma observação. |
| Issue Cashback | Devolve ao cliente uma porcentagem do pedido como crédito da loja. Defina a percentage e um máximo opcional. O cálculo começa pelos itens após descontos, e você pode incluir frete e impostos. Em More options: um valor mínimo de pedido e uma observação. |
| Send Message | Envia uma mensagem ao cliente por email, SMS ou como um Klaviyo event. Para e-mail, comece por um modelo — Credit earned, Tier changed, Credit expiring, Birthday reward, um que você tenha salvo, ou em branco — e edite à vontade. Veja Enviar uma mensagem abaixo. |
| Add Customer Tag | Adiciona uma ou mais tags ao cliente na Shopify. |
| Remove Customer Tag | Remove uma ou mais tags do cliente. |
| Add Order Tag / Note | Adiciona tags ao pedido e uma linha na observação dele na Shopify, para que sua equipe veja o que o fluxo fez quando consultar o pedido. Apenas gatilhos de pedido. Veja Marcando o pedido abaixo. |
| Reward Tiers | Soma as compras do cliente em uma janela de tempo e calcula a recompensa do nível que ele alcança — uma tabela em vez de um fluxo por nível. Não emite crédito da loja. Veja Recompensas por nível abaixo. |
| Reward Tiers Refund | Em Refund Created: calcula o efeito do reembolso sobre a recompensa de Reward Tiers do pedido reembolsado — a recompensa antes, depois e quanto foi descontado. Veja Reembolsos e Níveis de recompensa abaixo. |
| Update Tier | Up one tier, Set to a specific tier ou Recalculate from spend. Veja Níveis. |
| Wait / Delay | Pausa o fluxo por um número de minutos, horas ou dias antes que as etapas seguintes sejam executadas. Veja Recompensas com atraso usando Wait / Delay. |
Para trocar uma ação selecionada por outra, clique em Change no topo do painel de configuração. Como nos gatilhos, trocar apaga as configurações da etapa.
Um canal por ação
E-mail, SMS e um evento do Klaviyo são cada um sua própria ação — para alcançar um cliente por e-mail e por SMS, adicione duas ações Send Message. Veja Enviar uma mensagem para canais, variáveis e testes.
Como Issue Credit e Issue Cashback calculam o valor¶
- A base. Issue Credit com Fixed amount paga esse valor por pedido. Com % of order — e para Issue Cashback — a base é o subtotal do pedido: itens após descontos, antes do frete. Issue Cashback permite acrescentar à base: clique em Change ao lado de "Based on" e marque + shipping e/ou + tax. Com preços que incluem impostos, deixar + tax desmarcado remove a parte do imposto da base.
- O bônus de nível. Com Boost by customer tier ativado (o padrão), o valor é multiplicado pelo multiplicador do nível do cliente. Um cliente sem nível não recebe bônus.
- O limite. O crédito máximo (ou de cashback) é aplicado depois do bônus, nos dois modos — assim, um nível de 2x nunca paga mais do que o limite.
- Arredondamento. O resultado é arredondado para centavos. Um valor zero não emite nada.
O Only for orders of at least do Issue Cashback (em More options) é verificado sobre a mesma base, então incluir frete ou imposto na base também conta para o mínimo.
O nível usado para o bônus é o nível do cliente antes de este pedido ser contado. Um pedido que leva o cliente a um nível mais alto é recompensado no nível antigo; o próximo pedido já usa o novo.
Credit expires (Issue Credit, em More options) oferece Store default e After N days. Hoje, Store default significa que o crédito não expira — não existe uma configuração de validade para a loja inteira. Escolha After N days para dar ao crédito uma data de validade. Issue Cashback não tem opção de validade, então o cashback não expira. Veja as perguntas frequentes sobre dinheiro para entender como a validade funciona.
As recompensas são acumuladas no saldo do cliente
Crédito e cashback são somados ao saldo único de recompensas do cliente, que ele gasta com o código de recompensas. Veja Como os clientes resgatam recompensas.
Recompensas com atraso usando Wait / Delay¶
A ação Wait / Delay retém as etapas seguintes até que um tempo definido tenha passado. Digite um número e escolha Minutes, Hours ou Days; uma nova etapa começa com um dia.
É útil para reter uma recompensa até depois do seu prazo de devolução. Por exemplo: Order Complete → Wait / Delay 14 days → Issue Cashback.
O que acontece quando a espera termina:
- As etapas continuam como o pedido estava quando foi feito. A recompensa é calculada a partir do pedido como ele estava no início — um reembolso parcial durante a espera não a reduz, e um crédito que nunca foi emitido não pode ser recuperado.
- Um reembolso total anula a recompensa. Se o pedido já tiver sido reembolsado por completo até lá, as etapas restantes não são executadas — nem crédito, nem mensagem.
- Um fluxo excluído, ou pedidos pendentes que você cancelou, não continuam.
- Desligar o fluxo não interrompe os pedidos em espera. Uma execução pausada termina mesmo que o fluxo esteja inativo agora, a menos que você a cancele — veja Desligando um fluxo com pedidos em andamento. Os limites de gasto ainda se aplicam no momento em que o crédito é emitido.
- Se o Gift Card Hero não conseguir verificar o pedido na Shopify naquele momento, as etapas prosseguem em vez de descartar uma recompensa.
As retomadas são executadas em uma programação, então as etapas podem começar um pouco depois do horário previsto. O fluxo conta como uma única execução, não importa quantas esperas ele tenha. Em Test workflow, uma etapa Wait / Delay não espera de fato; o teste mostra por quanto tempo ela pausaria e segue em frente.
Veja as perguntas frequentes sobre dinheiro para entender como reembolsos e recuperação de crédito interagem.
Marcando o pedido com Add Order Tag / Note¶
Add Order Tag / Note escreve no pedido que iniciou o fluxo, para que quem o abrir na Shopify — ou o consultar no caixa — veja o que aconteceu. Preencha um campo, ou os dois:
- Tags to add — por exemplo
wine-reward-70. As tags que o pedido já tem são mantidas. A Shopify permite até 40 caracteres por tag; uma tag mais longa é encurtada para 40. - Note line — por exemplo
Wine reward $70 - NOT REDEEMED ({{ order.name }}). Ela é adicionada como uma nova linha abaixo da observação existente do pedido; a observação que já está no pedido nunca é substituída.
Os dois campos podem usar as mesmas variáveis de uma mensagem — {{ order.name }} é a mais comum. Clique em Insert variable para adicionar uma à linha da observação.
Alguns pontos a saber:
- Cada linha é adicionada uma única vez. Se a observação do pedido já tiver exatamente essa linha — porque o mesmo pedido foi processado de novo, ou outro fluxo escreveu as mesmas palavras — ela não é adicionada uma segunda vez.
- Reembolsos marcam o pedido original. Em Refund Created, a etapa marca com tags e observações o pedido que foi reembolsado. Por exemplo, um fluxo Refund Created configurado para Full refund only, com uma condição Order contains product para seu produto de recompensa, pode adicionar
wine-reward-voide a linhaWine reward VOID ({{ order.name }}); um segundo configurado para Partial refund only pode adicionarwine-reward-checkpara que a equipe confira a recompensa manualmente. - Funciona após uma espera e dentro de ramos. Uma etapa colocada depois de Wait / Delay, ou no ramo YES ou NO de uma condição, ainda marca o mesmo pedido.
- Test workflow mostra as tags e a linha de observação que seriam gravadas (com
#1001como número de pedido de exemplo), sem alterar nenhum pedido.
Recompensas por nível com Reward Tiers¶
Reward Tiers paga uma recompensa conforme o valor que o cliente gasta — e conta as compras dele em uma janela de tempo como uma só, então dividir uma compra de $600 em quatro pedidos de $150 gera a mesma recompensa de um pedido de $600, e não quatro vezes a recompensa de $150.

Configure-a na etapa:
- Count — o que um pedido soma: The trigger's products (em Product Purchase ou Collection Purchase, as linhas que o gatilho captou), Chosen products, Products from collections ou The whole order (seu subtotal). Os preços das linhas contam após descontos.
- Add up within — a janela, em horas (24 por padrão, até 720).
- Tiers — linhas de From e Reward: a partir de cada valor (incluído), as compras na janela ganham essa recompensa. Por exemplo: a partir de $150 → $40, a partir de $200 → $50, a partir de $300 → $65 … a partir de $1,000 → $300. Clique em Add tier para outra linha (até 50). As linhas são ordenadas pelo valor; valores e recompensas precisam ser maiores que zero, duas linhas não podem começar no mesmo valor, e um nível mais alto não pode pagar menos que um nível inferior.
- Add up purchases of — a conta do cliente (o padrão), ou o endereço de e-mail do pedido.
Como a janela funciona: a primeira compra qualificada do cliente abre a janela, e cada pedido até o fim do tempo da janela entra nela. Um pedido posterior a isso abre uma nova janela. Cada pedido ganha a recompensa do nível que a janela atingiu, menos o que os pedidos anteriores da janela já receberam:
| Pedido | Total da janela | Recompensa do nível | Este pedido ganha |
|---|---|---|---|
| $150 | $150 | $40 | $40 |
| $150 | $300 | $65 | $25 |
| $150 | $450 | $80 | $15 |
| $150 | $600 | $125 | $45 |
$125 no total — o mesmo que um único pedido de $600.
Depois da etapa, use estas variáveis em uma mensagem ou em uma observação do pedido: {{ reward.delta }} (o que este pedido ganha), {{ reward.amount }} (a recompensa do nível que a janela atingiu) e {{ reward.window_total }} (as compras da janela). Coloque a mensagem e a marcação do pedido no ramo YES de uma condição Tier Reward Earned, para que um pedido que não acrescente nada novo não envie um e-mail:
- Gatilho: Product Purchase — Gift Card - Dollar Value
- Reward Tiers — conta os produtos do gatilho, em 24 horas, sua tabela
- Condição: Tier Reward Earned — YES: Send Message ("Your wine reward: {{ reward.delta }}") e Add Order Tag / Note (
Wine reward +{{ reward.delta }} ({{ order.name }}))
Alguns pontos a saber:
- Nenhum crédito da loja é emitido. A etapa só calcula os valores; a forma de entregar a recompensa fica a cargo das etapas seguintes.
- Processar um pedido de novo não altera nada. Um evento repetido ou reenviado encontra o pedido já contado e dá o mesmo resultado; nada é ganho duas vezes e a mensagem não é enviada duas vezes.
- Reembolsos reduzem a recompensa. Quando produtos que contaram são reembolsados, o valor reembolsado sai do total da janela e a recompensa é recalculada com base no que sobrou — veja Reembolsos e Níveis de recompensa.
- Uma etapa Reward Tiers por fluxo. Ela precisa de um pedido, então não é oferecida em Customer Signup, Customer Birthday ou Refund Created (use Reward Tiers Refund nesse caso).
- Test workflow mostra o que o pedido contaria, o total da janela, o nível e o complemento — para um cliente existente, incluindo os pedidos reais dele na janela atual — sem registrar nada.
Reembolsos e Níveis de recompensa¶
A recompensa é o nível que as compras da janela alcançam, então um reembolso que reduz as compras também reduz a recompensa. Isso acontece sozinho em todo reembolso — você não precisa criar nada:
- Um reembolso parcial reduz a recompensa para o nível do que sobrou. Um pedido de $300 ganhou $65; reembolse $150 dele, e a janela fica com $150 — o nível de $40 — então $25 da recompensa são descontados.
- Um reembolso total do único pedido da janela retira a recompensa inteira ($65 → $0).
- O reembolso de um pedido entre vários recalcula a janela inteira: dois pedidos de $150 ganharam $40 e $25; reembolse o segundo, e a janela volta a $150 — $40 — então seus $25 são descontados.
- O próximo pedido da janela conta a partir da recompensa menor. Reembolse $150 de um pedido de $300 e depois compre mais $150 dentro da janela: a janela volta a $300 e esse pedido ganha $25.
- Só as linhas contadas importam. Um reembolso de produtos que a etapa não contou (o vinho, outros produtos), de frete, ou de valores sem itens de linha não altera nada.
- Um reembolso é aplicado uma vez. Se a Shopify enviar o mesmo reembolso duas vezes, nada muda na segunda vez.
- A janela mantém seu início: reembolsar o primeiro pedido dela não a desloca.
Para avisar o cliente ou sua equipe, adicione um fluxo Refund Created com uma etapa Reward Tiers Refund. Ela lê o efeito do reembolso:
- Reward Tiers workflow — o fluxo cuja etapa Reward Tiers contou o pedido. Se sua loja tiver apenas um, ele é escolhido automaticamente; com vários, escolha um — o fluxo não pode ser ativado até que você faça isso.
- Depois da etapa:
{{ reward.previous_amount }}(a recompensa da janela antes do reembolso),{{ reward.amount }}(depois dele),{{ reward.reversed }}(quanto foi descontado) e{{ reward.window_total }}(as compras que sobraram na janela), além de suas versões_valuecomo números simples. - Coloque a marcação do pedido — e uma mensagem, se quiser — no ramo YES de Tier Reward Reduced. Um reembolso que deixa a janela no mesmo nível não desconta nada e segue o ramo NO.
Por exemplo:
- Gatilho: Refund Created — Any refund
- Reward Tiers Refund — Gift for Gifting
- Condição: Tier Reward Reduced — YES: Add Order Tag / Note (
wine-reward-reduced,Wine reward {{ reward.previous_amount }} → {{ reward.amount }} ({{ order.name }}))
Test workflow reembolsa o pedido de exemplo como se o fluxo Reward Tiers o tivesse contado sozinho: total, ou metade dele em Partial refund only. Adicione ao exemplo os produtos que a etapa Reward Tiers conta, com os preços deles.
Uma recompensa já entregue não é recuperada
O Gift Card Hero não sabe se a recompensa já foi entregue — por exemplo, se o vinho foi retirado no caixa. A nova recompensa é o que as compras valem agora; se a antiga já tiver sido resgatada, decida no caixa usando a observação do pedido. E se, depois desse reembolso, o cliente comprar de novo dentro da mesma janela, o novo pedido ganha seu complemento a partir da recompensa menor — então ele pode receber mais do que de fato retirou. Com uma janela de 24 horas isso é raro, mas vale saber.
Enviar uma mensagem¶
A ação Send Message alcança o cliente em um canal por vez: email, SMS ou um Klaviyo event. Escolha o canal, escreva (ou escolha) a mensagem, e o restante do fluxo continua rodando aconteça o que acontecer com ela — a mensagem é um efeito colateral, não uma comporta.

Mensagens no app não estão disponíveis
Não existe canal de notificação no app. Uma etapa herdada de uma versão antiga, configurada como In-app notification, nunca entregou nada; o editor mostra essa etapa como Email. Escolha um canal para enviar de verdade.
Escolhendo um canal¶
| Canal | O que precisa |
|---|---|
| Envia pelo Gift Card Hero email por padrão, ou pelo seu próprio servidor de e-mail quando você o escolher como Send from — veja Entrega abaixo. Não há nada a conectar para usar o e-mail do Gift Card Hero. | |
| SMS | Precisa de um provedor de SMS conectado em Settings → Integrations (hoje, a Onfon Media). |
| Klaviyo event | Precisa do Klaviyo conectado em Settings → Integrations. O Gift Card Hero envia o evento; um Flow que você cria no Klaviyo envia a mensagem de fato. |
Veja Integrações para conectar qualquer um desses canais.
Um fluxo não pode ser ativado com um canal que não está pronto
Activate é recusado, na própria etapa Send Message, quando essa etapa envia SMS sem um provedor conectado, um evento do Klaviyo sem o Klaviyo conectado, ou e-mail por um servidor de e-mail que não está configurado. Salvar como Draft é sempre permitido, para que você possa montar o restante do fluxo primeiro. Se escolher um canal que não está conectado, o painel mostra um aviso com um botão que abre Settings → Integrations em uma nova aba.
Escrevendo a mensagem¶
- Email — comece por um modelo e edite o assunto, a mensagem e o botão à vontade. Veja E-mail: modelos e edição abaixo.
- SMS — um campo Text message, preenchido previamente com um texto curto embutido na primeira vez que você muda para SMS.
- Klaviyo event — um campo Klaviyo event name (opcional; veja abaixo) e uma lista somente leitura das propriedades que o evento carrega. Não há texto de mensagem para escrever — o seu Flow do Klaviyo compõe o que o cliente vê.
Em Email e SMS, clique em Insert variable para inserir uma variável na posição do cursor, em vez de digitá-la. Uma Preview ao vivo logo abaixo mostra a mensagem renderizada — assunto, texto e botão para e-mail; texto e quantidade de segmentos para SMS; nome do evento e suas propriedades para o Klaviyo — e é atualizada um instante depois que você para de digitar.
E-mail: modelos e edição¶
Todo campo é seu para editar, qualquer que seja o ponto de partida — não existe um estado "embutido" somente leitura depois que você digita algo.

O seletor Template lista os quatro modelos embutidos — Credit earned, Tier changed, Credit expiring, Birthday reward — depois Your templates, os que você já salvou, e por fim Blank. Manage templates abre E-mails de fidelidade em uma nova aba.
Os nomes embutidos são textos iniciais, não gatilhos
Um fluxo só envia textos de Tier changed ou Credit expiring quando seu gatilho e suas etapas fazem isso acontecer — não existe gatilho que dispare com uma mudança de nível ou com crédito expirando. Para anunciar um novo nível, por exemplo, coloque um Send Message logo após uma etapa Update Tier. O Gift Card Hero também envia seu próprio lembrete antes de o crédito expirar — veja as perguntas frequentes sobre dinheiro.
- Escolha um modelo enquanto Subject e Message estiverem intactos, e ele os preenche na hora.
- Escolha um modelo depois de ter escrito seu próprio texto, e o Gift Card Hero pergunta antes: "Replace your subject and message with the [template] template?" — Replace preenche os campos, Cancel mantém o seu texto como estava.
A primeira edição que você faz no assunto, na mensagem ou no botão de um modelo embutido copia o texto desse modelo para a etapa — digitar nunca altera o próprio modelo embutido, nem outra etapa que o use. A partir daí, Started from [name] · edited aparece abaixo do seletor Template, indicando que esta etapa agora tem a própria cópia. Se ela partiu de um modelo salvo que já foi excluído, aparece Started from a deleted template no lugar.
Clique em + Add a button para adicionar um botão abaixo da mensagem: um Button label (por exemplo, "Shop now") e um Button link, que precisa ser um endereço https:// completo — Liquid também funciona ali, então https://{{ shop.domain }} leva o cliente à sua loja virtual. Deixe o rótulo vazio e não haverá botão. Os quatro modelos embutidos já trazem um botão Shop now para a sua loja virtual.
Clique em View email para ver a mensagem exatamente como o cliente a recebe: o nome da sua loja no topo, a mensagem, o botão se houver, e um rodapé com o nome da loja e o e-mail de contato.

Save as template guarda o assunto, a mensagem e o botão atuais da etapa (e as traduções deles) sob um nome que você escolher, para que o próximo fluxo possa começar a partir dele em vez de uma página em branco — gerencie os modelos salvos em E-mails de fidelidade. Uma etapa que parte de um modelo salvo mantém a própria cópia: editar ou excluir o modelo salvo depois nunca altera um e-mail que já esteja em um fluxo.
Idiomas¶
Se sua loja publicar mais de um idioma na Shopify, uma etapa de e-mail ou SMS ganha um seletor Language acima do texto. A primeira opção é o idioma principal da loja, marcado como (default); cada outro idioma publicado mostra o quanto da tradução já está pronto — translated, incomplete ou uses default.

Escolha um idioma para escrever o assunto, a mensagem e o rótulo do botão (ou o texto do SMS). Um campo vazio mostra o texto padrão em cinza, com Falls back to English. O link do botão é o mesmo em todos os idiomas.
Quando a mensagem é enviada, o Gift Card Hero usa o idioma do cliente conforme a Shopify o registra. Ele procura uma correspondência exata (pt-BR), depois só o idioma (pt), e, se não achar, envia o padrão. Um e-mail nunca sai pela metade: uma tradução só é usada quando tem assunto e mensagem, caso contrário o e-mail inteiro sai no idioma padrão. O editor informa isso abaixo do campo. Eventos do Klaviyo não têm traduções — o seu Flow cuida do idioma.
Variáveis¶
| Variável | O que contém | Exemplo |
|---|---|---|
customer.first_name |
O primeiro nome do cliente | Jane |
customer.last_name |
O sobrenome do cliente | Doe |
customer.name |
Um nome para cumprimentar: o primeiro nome, ou "there" quando é desconhecido | Jane |
customer.email |
O endereço de e-mail do cliente | jane.doe@example.com |
customer.phone |
O telefone do cliente, em formato internacional | +254712345678 |
customer.locale |
O idioma do cliente conforme a Shopify o informa; vazio quando desconhecido | fr |
reward.amount |
Crédito da loja que este fluxo emitiu antes nesta execução, no formato de dinheiro da sua loja; vazio se nenhum. Após uma etapa Reward Tiers: a recompensa do nível que as compras atingiram. Após uma etapa Reward Tiers Refund: a recompensa que sobrou após o reembolso | $10.00 |
reward.amount_value |
O mesmo valor como número simples | 10 |
reward.delta |
Reward Tiers: o que este pedido ganhou — a recompensa do nível menos o que os pedidos anteriores da janela receberam (somente fluxos Reward Tiers) | $10.00 |
reward.delta_value |
O mesmo valor como número simples (somente fluxos Reward Tiers) | 10 |
reward.window_total |
Reward Tiers: o total das compras do cliente na janela, incluindo este pedido; após um reembolso, o que sobrou (somente fluxos Reward Tiers) | $150.00 |
reward.window_total_value |
O mesmo total como número simples (somente fluxos Reward Tiers) | 150 |
reward.previous_amount |
Reward Tiers Refund: a recompensa da janela antes do reembolso (somente fluxos de reembolso com uma etapa Reward Tiers Refund) | $25.00 |
reward.previous_amount_value |
O mesmo valor como número simples (somente Reward Tiers Refund) | 25 |
reward.reversed |
Reward Tiers Refund: quanto o reembolso descontou da recompensa — a recompensa antes menos a recompensa depois (somente Reward Tiers Refund) | $15.00 |
reward.reversed_value |
O mesmo valor como número simples (somente Reward Tiers Refund) | 15 |
wallet.balance |
O saldo de crédito da loja do cliente, no formato de dinheiro da sua loja | $25.00 |
wallet.balance_value |
O saldo como número simples | 25 |
wallet.currency |
Moeda do saldo | USD |
tier.name |
O nível de fidelidade do cliente; vazio sem nível | Silver |
tier.next_name |
O próximo nível; vazio no nível mais alto ou sem níveis | Gold |
tier.spend_to_next |
Quanto o cliente ainda precisa gastar para chegar ao próximo nível, no formato de dinheiro da sua loja | $150.00 |
tier.spend_to_next_value |
O mesmo valor como número simples | 150 |
order.name |
O número do pedido (somente gatilhos de pedido) | #1001 |
order.total |
O total do pedido, no formato de dinheiro da sua loja (somente gatilhos de pedido) | $120.00 |
order.total_value |
O total do pedido como número simples (somente gatilhos de pedido) | 120 |
trigger.matched_amount |
O que os produtos ou itens de coleção captados pelo gatilho somam, após descontos, no formato de dinheiro da sua loja (somente gatilhos Product / Collection Purchase) | $100.00 |
trigger.matched_amount_value |
O mesmo valor como número simples (somente gatilhos Product / Collection Purchase) | 100 |
workflow.name |
O nome deste fluxo | Your workflow |
shop.name |
O nome da sua loja | Your Store |
shop.domain |
O domínio da sua loja virtual | your-store.com |
shop.email |
O e-mail de contato da sua loja | hello@your-store.com |
Quatro variáveis de antes, quando as mensagens usavam Liquid, continuam funcionando em qualquer mensagem que você ainda não tenha reescrito: {{amount}}, {{balance}}, {{customer_name}} e {{store_name}} — os mesmos valores de reward.amount, wallet.balance, customer.name e shop.name. Escreva as novas mensagens com a tabela acima.
Noções básicas de Liquid¶
Uma mensagem é um pequeno modelo Liquid. Dois recursos cobrem quase tudo o que um lojista precisa:
- Exibir uma variável com chaves duplas:
Hi {{ customer.first_name }}, your balance is {{ wallet.balance }}. - Mostrar algo apenas em alguns casos com
{% if %}…{% endif %}:
{% if reward.amount_value > 0 %}You also earned a reward on this order!{% endif %}
Nada entre as tags é exibido quando a condição é falsa — nenhuma linha em branco, nenhuma pontuação sobrando.
Uma mensagem com um erro de Liquid não pode ser salva: o construtor aponta o campo e explica o problema.
Tamanho do SMS e segmentos¶
Uma mensagem de texto é cobrada por segmento: uma mensagem simples cabe 160 caracteres em um segmento, e 153 caracteres em cada um dos seguintes. Um caractere fora do alfabeto latino básico — um emoji, uma aspa curva, muitas letras acentuadas — troca a mensagem inteira para um modo que só cabe 70 caracteres por segmento (67 depois do primeiro), então um único caractere solto pode dobrar o custo de uma mensagem. A contagem abaixo do campo Text message é o tamanho do que você digitou, contra o limite de 1.000 caracteres. Quantos segmentos a mensagem ocupa aparece na pré-visualização: ela conta o texto renderizado — depois que as variáveis são preenchidas com valores de exemplo, não as tags {{ }} em si — então um nome de cliente ou um valor longo ainda pode acrescentar um segmento.
Entrega¶
Todo canal termina com um grupo Delivery na parte de baixo do painel — como a mensagem sai e quem tem permissão para recebê-la.

Send from (somente e-mail) é o canal pelo qual o e-mail sai:
| Opção | Envia como |
|---|---|
| Gift Card Hero email | <Your store name> <giftcardhero@syncube.email>, com as respostas indo para o e-mail de contato da sua loja. Sempre disponível. |
| Your mail server (SMTP) | O endereço configurado para ele em Settings → Integrations. Aparece como "— not set up" e desabilitado até que um servidor de e-mail seja conectado ali. |
Manage senders abre Settings → Integrations em uma nova aba. Uma etapa salva antes dessa escolha existir continua seguindo a configuração de e-mail da loja — veja Integrações — até que você escolha um remetente para ela aqui.
Se o servidor de e-mail que uma etapa usa parar de funcionar, o e-mail ainda sai — pelo Gift Card Hero email — e o resultado da etapa informa isso. Um Send test por um servidor de e-mail com defeito falha de vez em vez de usar o alternativo, com "Your mail server isn't set up", para que você descubra antes de um cliente. Um fluxo não pode ser ativado enquanto o servidor de e-mail escolhido por uma etapa de e-mail não estiver configurado — veja o aviso acima.
Para SMS e Klaviyo, este grupo mostra o status da conexão no lugar de Send from — se um gateway ou o Klaviyo está conectado.
Todo canal também tem sua própria caixa de consentimento aqui: "Only send to customers subscribed to SMS marketing" para SMS, ou "Only send to customers subscribed to email marketing" para e-mail e Klaviyo. Ela lê o consentimento de marketing do cliente exatamente como a Shopify o registra para aquele canal.
Ela vem ativada por padrão para SMS e desativada para e-mail e Klaviyo — e trocar de canal redefine para esse padrão, mesmo que você a tenha alterado antes. Desative-a para SMS somente se tiver certeza de que todos os destinatários aceitaram receber mensagens de texto; mensagens transacionais de recompensa cobram um segmento de qualquer forma.
O Klaviyo event e a construção do Flow¶
Uma etapa do Klaviyo envia um evento (métrica), não uma mensagem — sua conta do Klaviyo transforma esse evento no que o seu Flow enviar. O nome do evento padrão é Loyalty: <workflow name>; digite o seu próprio (até 128 caracteres) para direcionar a um Flow específico, o que é útil quando mais de uma etapa Send Message da sua conta alimenta o Klaviyo.
O evento carrega todas as variáveis da tabela acima (não as quatro antigas) como propriedades, além de workflow_id, step_id e is_test. Ele é associado ao perfil do cliente pelo e-mail — um cliente sem e-mail cadastrado não pode receber um evento do Klaviyo.
Crie um Flow no Klaviyo acionado por essa métrica do mesmo modo que faria para lembretes ou notificações de resgate — um evento sem um Flow por trás chega ao Klaviyo e não faz nada.
Enviando um teste¶
Dois recursos diferentes enviam um teste, com finalidades diferentes:
- Test workflow, na barra de ferramentas, executa o fluxo inteiro como uma simulação (dry-run). Para uma etapa Send Message, ele mostra o assunto e o texto renderizados (ou o evento do Klaviyo e suas propriedades) e o destinatário mascarado — e não contata nenhum provedor de e-mail, SMS ou Klaviyo.
- Send test, dentro do próprio editor da ação Send Message, envia uma mensagem real — com valores de exemplo de cliente, recompensa e carteira — para um endereço de e-mail ou número de telefone que você digitar; no e-mail, ele já vem preenchido com o endereço da sua própria loja. Um teste de SMS é uma mensagem real e cobrada. Um teste de e-mail sempre sai pelo remetente da própria etapa e nunca usa outro no lugar; se esse remetente não estiver configurado, o teste falha de vez, com "Your mail server isn't set up", e um teste bem-sucedido confirma o endereço e o remetente usado. Um teste do Klaviyo envia um evento real, com
is_test: true, para o e-mail que você digitar, para que você possa terminar de montar o seu Flow em cima dele. Send test fica desabilitado até que o canal que ele testa esteja conectado. Se a etapa tiver traduções, o teste sai no idioma atualmente selecionado.
Quando uma mensagem não é enviada¶
Uma etapa Send Message nunca interrompe o restante do fluxo — aconteça o que acontecer com a mensagem, as etapas seguintes ainda são executadas. Além disso, ela é enviada no máximo uma vez por etapa, por pedido ou evento: uma tarefa reexecutada ou um webhook repetido da Shopify nunca envia a mesma mensagem duas vezes.
Quando uma mensagem não sai, Test workflow diz o motivo, ali mesmo, na etapa. Nas execuções reais, o mesmo motivo fica registrado na etapa, mas o painel não lista execuções individuais — use Test workflow com o mesmo cliente para reproduzi-lo.
| O que diz | O que aconteceu |
|---|---|
| no email address is known for this customer | O canal é e-mail ou Klaviyo, e o cliente não tem e-mail cadastrado. |
| no usable phone number is known for this customer | O canal é SMS, e não foi encontrado nenhum telefone utilizável para o cliente. |
| the customer is not subscribed to SMS marketing / email marketing | A caixa de consentimento em Entrega está marcada nesta etapa, e a Shopify não tem o cliente marcado como inscrito naquele canal. |
| no SMS gateway is connected (Settings → Integrations) | O provedor de SMS não está conectado — ou foi desconectado depois que esta etapa foi ativada. |
| Klaviyo is not connected (Settings → Integrations) | O mesmo, para uma etapa do Klaviyo. |
| the message shows the reward amount, but this run issued no store credit | A mensagem exibe {{ reward.amount }} (ou o {{amount}} antigo, ou reward.delta / reward.window_total / reward.previous_amount / reward.reversed) em algum ponto, e esta execução específica não emitiu crédito algum — assim, um cliente nunca é informado de que ganhou "$0.00". Testar reward.amount_value em um {% if %} sem exibir o valor (como no exemplo de Noções básicas de Liquid) evita isso. Depois de uma etapa Reward Tiers, isso nunca se aplica — use a condição Tier Reward Earned; depois de uma etapa Reward Tiers Refund, use Tier Reward Reduced. |
| already sent for this event by an earlier attempt | Uma tentativa repetida ou um webhook duplicado tentou enviar de novo a mensagem da mesma etapa. |
Uma mensagem também pode falhar — o provedor a rejeitou, ou o modelo não foi renderizado — e o resultado da etapa mostra o erro que o Gift Card Hero recebeu.
Exemplo de ramificação¶
Um padrão comum recompensa pedidos grandes de forma mais generosa:
- Gatilho: Order Complete
- Adicione uma condição: Order Amount é maior que
100 - No ramo YES, adicione Issue Cashback de
10% - No ramo NO, adicione Issue Cashback de
5%
Quando você coloca uma condição no meio de uma cadeia existente, as etapas que vinham depois dela passam automaticamente para o ramo YES.
Validação e salvamento¶
O botão Save fica desabilitado até que o fluxo seja válido — ele precisa de um nome, um gatilho e pelo menos uma etapa.
Ao salvar, o Gift Card Hero também verifica as configurações de cada etapa. Se um campo obrigatório estiver faltando ou um número estiver fora da faixa (por exemplo, uma porcentagem precisa estar entre 0.1 e 100), o construtor mostra uma faixa de erro e destaca o campo específico a corrigir. Corrija e salve de novo. O mesmo vale para uma faixa de valor de gatilho cujo valor superior não é maior que o inferior — nenhum pedido poderia corresponder a ela — para uma tabela de Reward Tiers com uma linha vazia, zerada, repetida ou decrescente, e para uma programação que termina antes de começar.
A primeira vez que você salva um fluxo novo, ele fica como Draft. Alterações em um fluxo que já está Active passam a valer assim que você salva.
A barra de ferramentas¶

À esquerda: o nome do fluxo, depois Schedule, Budget, Advertise e o selo de status (mais Unsaved sempre que houver alterações não salvas).
- Schedule: Always on — opcionalmente, limite o fluxo a uma janela. Escolha uma data e hora de início e de fim (ou uma predefinição, como Next 30 days); deixe o fim vazio para não ter término; clique em Always on para limpar. O fluxo recompensa um evento somente se ele aconteceu dentro da janela — assim, um pedido feito antes da data de fim ainda ganha mesmo que seja processado um pouco depois. O fim precisa ser posterior ao início. Fora da janela, o selo mostra Scheduled (ainda não começou) ou Ended.
- Budget: No cap — um Monthly budget cap para este fluxo. Quando o crédito emitido por ele no mês do calendário (UTC) ultrapassaria o limite, o fluxo para de emitir crédito e é pausado. Vazio significa sem limite. Um limite para a loja inteira e um limite por cliente são definidos na página Settings da Fidelidade — veja as perguntas frequentes sobre dinheiro.
- Advertise — crie ou vincule uma promoção da loja virtual; veja Divulgando a recompensa de um fluxo. Fica desabilitado até que o fluxo seja salvo.
À direita, depois que o fluxo foi salvo pela primeira vez:
- Results on canvas — mostra as contagens de execução em cada etapa do canvas.
- Test workflow — veja Test workflow (simulação).
- Performance — veja Performance.
- Delete (o ícone de lixeira) — veja Excluindo.
- Activate / Deactivate — veja Ativar, desativar e status.
- Save — sempre visível.
Test workflow (simulação)¶
Antes de ativar — ou sempre que alterar um fluxo em produção — simule-o. Nada é emitido e nenhuma mensagem é enviada — nem por e-mail, SMS ou Klaviyo. O teste executa o canvas exatamente como está agora, incluindo edições que você ainda não salvou. Test workflow aparece depois que o fluxo é salvo pela primeira vez.
- Clique em Test workflow na barra de ferramentas.
- Escolha como testar. New customer é o padrão: um comprador de primeira viagem, sem tags, sem nível e sem gastos. Escolha Existing customer para digitar um Email; o Gift Card Hero procura o cliente, mostra um selo verde com o nome, o nível e a quantidade de pedidos dele, e preenche suas tags, nível e gastos reais.
- Preencha o pedido. A caixa de diálogo mostra apenas os campos que o seu fluxo realmente lê — uma linha no topo, "This workflow checks…", os lista. Subtotal está sempre presente para gatilhos de pedido; os outros (Customer tags, Tier, Lifetime spent, Treat as this customer's first order, Order total, Discount, Products) aparecem quando uma condição precisa deles. Todo o restante fica em More options. Quando um gatilho ou uma etapa Reward Tiers trabalha com valores de produtos, informe também um Price para cada produto de exemplo.
- Clique em Run test na barra de título da caixa de diálogo.

O resultado lista as verificações feitas pelo fluxo (e se cada uma seguiu o ramo YES ou NO), depois o que cada ação faria. Uma etapa Send Message mostra o que enviaria e para quem (mascarado) — veja Quando uma mensagem não é enviada para a redação usada quando ela não sairia. Uma caixa verde na parte de baixo mostra o crédito que o cliente receberia; se nenhum, ela diz No credit would be issued e o motivo. Se o próprio filtro do gatilho não corresponder (por exemplo, o pedido está abaixo do seu valor mínimo), o teste diz Workflow would not run e o motivo.
Simulando clientes 'como se'
Altere os campos Tier, Treat as this customer's first order ou Lifetime spent para testar como se um cliente estivesse em determinado nível, no primeiro pedido ou com determinado gasto — sem precisar de um cliente real que já se enquadre.
Um teste também respeita seus limites de gasto: se um limite bloquearia a recompensa, o teste mostra que ela foi bloqueada.
Ativar, desativar e status¶
Um fluxo tem um de três status que você escolhe, exibido como selo:
- Draft — novo e ainda não executado.
- Active — ativo e executando com eventos reais.
- Inactive — salvo, mas pausado.
Dois outros rótulos são calculados a partir da programação e dos limites: Scheduled e Ended (veja A barra de ferramentas), e Paused by guardrail na lista de fluxos quando um limite de orçamento interrompeu o fluxo. Uma pausa por limite aparece como Inactive no construtor, com uma faixa Paused by guardrail que explica qual limite foi atingido e tem um botão Reactivate; reativar não aumenta o limite, então o fluxo pode pausar de novo.
Clique em Activate para ligar um fluxo, ou em Deactivate para pausá-lo. Salve suas alterações primeiro — Activate age sobre o fluxo salvo. Ativar e desativar pode levar um momento, porque o Gift Card Hero conecta (ou desconecta) por trás dos panos o evento da Shopify que está por baixo.
Activate é recusado, com o problema mostrado na etapa, quando:
- uma etapa precisa de dados que o gatilho não tem (por exemplo, Add Order Tag / Note com Customer Signup);
- uma etapa Reward Tiers Refund não tem um fluxo Reward Tiers para ler, ou tem vários e nenhum foi escolhido;
- uma etapa Send Message usa um canal ou remetente que não está conectado (veja Enviar uma mensagem).
Desligando um fluxo com pedidos em andamento¶
Um pedido ainda pode estar no meio de um fluxo — na fila de processamento ou aguardando em uma etapa Wait / Delay. Quando você clica em Deactivate e há pedidos pendentes, o Gift Card Hero os lista (pedido, cliente e "waiting N min" ou "continues in 3 days") e pergunta:
- Turn off, finish these — o padrão. Os pedidos listados ainda recebem as recompensas deste fluxo.
- Turn off and cancel these — esses pedidos nunca recebem as recompensas deste fluxo. Isso não pode ser desfeito.

Se você escolheu concluí-los, um fluxo Inactive continua mostrando uma faixa enquanto houver algum pendente, com Cancel them (após uma confirmação) e Refresh. Pedidos já processados não são afetados de nenhum dos dois modos.
Performance¶
Performance substitui o painel de configuração por um resumo de como o fluxo tem rodado. Alterne entre 7d, 30d, 90d e All. Ele mostra Runs (e quantas execuções realizaram alguma ação), Customers rewarded, Net credit (emitido, menos o crédito retirado por reembolsos, menos o crédito expirado), Orders rewarded e duas estimativas — Credit spent (a parcela do crédito emitido que os clientes já usaram) e Revenue de pedidos que usaram esse crédito — além de um gráfico de execuções por dia. Se um limite de gasto bloqueou recompensas, uma faixa informa isso, com detalhes e links para os pedidos.

Results on canvas acrescenta as contagens às próprias etapas. Para os números de todos os fluxos, veja Análises de fidelidade.
Excluindo¶
O ícone de lixeira remove o fluxo permanentemente depois que você confirma. Se ele estiver ativo, os eventos da Shopify por trás dele são desconectados antes. Pedidos ainda em andamento são cancelados — a confirmação informa quantos. Uma promoção vinculada ao fluxo volta a rascunho e deixa de aparecer, mas continua na sua lista de promoções. Isso não pode ser desfeito. Você também pode selecionar vários fluxos na lista Loyalty Workflows e usar Delete workflows.
Divulgando a recompensa de um fluxo¶
Criar um fluxo não avisa ninguém automaticamente. Clique em Advertise na barra de ferramentas (depois que o fluxo for salvo e não tiver alterações pendentes) para criar ou vincular uma promoção — um cartão de incentivo em pop-up e/ou um banner exibido na sua loja virtual, com os números da recompensa obtidos ao vivo do fluxo. Somente fluxos que emitem crédito ou cashback podem ser divulgados. Veja O widget de Promoções.