> ## Documentation Index
> Fetch the complete documentation index at: https://docs.revize.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Klaviyo

> Envie e-mails automatizados pelo Klaviyo quando os clientes editarem os pedidos. Conecte Shopify Flow, Revize e Klaviyo para notificar os clientes sobre qualquer alteração no pedido.

<Info>
  **Precisa de ajuda para configurar?** Nossa equipe pode configurar a integração completa Shopify Flow + Klaviyo para você. [Entre em contato conosco](/pt/support/contact) e cuidaremos disso.
</Info>

## Do que você precisa

* Shopify Flow (disponível em todos os planos Shopify)
* Uma conta Klaviyo com o [app Klaviyo Shopify](https://apps.shopify.com/klaviyo-email-marketing) instalado
* Revize instalado com gatilhos do Shopify Flow habilitados

## Como funciona

O Revize dispara um gatilho do Shopify Flow sempre que um cliente edita o pedido. Você conecta esse gatilho à ação "Track an Event" do Klaviyo, que envia os dados do pedido para o Klaviyo. A partir daí, você cria um Klaviyo Flow para enviar o e-mail.

Gatilho Revize → Shopify Flow → Evento Klaviyo → E-mail Klaviyo

***

## Gatilhos disponíveis

Você pode enviar e-mails do Klaviyo para qualquer um destes gatilhos do Revize:

<CardGroup cols={2}>
  <Card title="Pedido editado" icon="pen-to-square" color="#6366f1">
    Dispara em qualquer edição de pedido, incluindo alterações de produto e edições de código de desconto.
  </Card>

  <Card title="Endereço de entrega atualizado" icon="location-dot" color="#0ea5e9">
    Dispara quando um cliente altera o endereço de entrega.
  </Card>

  <Card title="Endereço de e-mail atualizado" icon="envelope" color="#10b981">
    Dispara quando um cliente atualiza o endereço de e-mail.
  </Card>

  <Card title="Número de telefone atualizado" icon="phone" color="#3b82f6">
    Dispara quando um cliente atualiza o número de telefone.
  </Card>

  <Card title="Data de entrega atualizada" icon="calendar" color="#f59e0b">
    Dispara quando um cliente seleciona ou altera uma data de entrega.
  </Card>

  <Card title="Pedido cancelado" icon="xmark" color="#ef4444">
    Dispara quando um cliente cancela o pedido.
  </Card>

  <Card title="Ticket de suporte criado" icon="headset" color="#8b5cf6">
    Dispara quando um cliente envia uma solicitação de suporte pelo portal.
  </Card>

  <Card title="Nota fiscal gerada" icon="file-invoice" color="#14b8a6">
    Dispara quando um cliente gera uma nota fiscal para o pedido.
  </Card>
</CardGroup>

<Note>
  Cada gatilho segue o mesmo processo de configuração. As únicas coisas que mudam são o gatilho que você seleciona no Shopify Flow, o nome do evento que você envia ao Klaviyo e as propriedades do evento.
</Note>

***

## Parte 1: Configurar o Shopify Flow

### Etapa 1: Encontre sua Public API Key do Klaviyo

<Steps>
  <Step title="Faça login no Klaviyo">
    Vá para o painel do Klaviyo.
  </Step>

  <Step title="Abra Configurações">
    Clique no nome da conta no canto inferior esquerdo, depois vá para **Settings**.
  </Step>

  <Step title="Navegue até API Keys">
    Vá para a seção **API Keys**.
  </Step>

  <Step title="Copie sua Public API Key">
    Copie a **Public API Key** (um código alfanumérico curto). Você precisará disto na Etapa 3.
  </Step>
</Steps>

<Warning>
  Certifique-se de copiar a chave **Public** API, não a Private API. A chave pública é a mais curta.
</Warning>

***

### Etapa 2: Crie um workflow do Shopify Flow

<Steps>
  <Step title="Abra o Shopify Flow">
    No seu Admin Shopify, vá para **Apps → Shopify Flow** e clique em **Create workflow**.
  </Step>

  <Step title="Selecione um gatilho Revize">
    Clique em **Select a trigger**, busque por **Revize** e escolha o gatilho que deseja (ex.: Pedido editado, Endereço de entrega atualizado, etc.).
  </Step>

  <Step title="Adicione uma ação Wait">
    Clique no **+** abaixo do gatilho e adicione uma ação **Wait**. Defina a duração para **10 segundos**.
  </Step>

  <Step title="Adicione uma ação Get Order Data">
    Clique no **+** abaixo da etapa Wait e adicione uma ação **Get Order Data** (ação Shopify).

    Configure-a da seguinte forma:

    * Defina **Select a query** como **Advanced**
    * No campo **Edit query**, insira: `id:{{order.legacyResourceId}}`
    * Defina **Maximum number of orders** como **1**
    * Defina **Sort data by** como **Updated at, Descending**
  </Step>
</Steps>

<Note>
  **Por que a espera de 10 segundos?** Dá tempo à API da Shopify para refletir as últimas alterações do pedido antes de buscar dados frescos. A etapa Get Order Data então puxa os itens de linha e variantes atuais corretos.
</Note>

### Etapa 3: Adicione a ação Klaviyo "Track an Event"

<Steps>
  <Step title="Busque por Klaviyo">
    Na lista de ações, busque por **Klaviyo** e selecione **Track an Event**.
  </Step>

  <Step title="Preencha os campos">
    Use a tabela abaixo para preencher cada campo.
  </Step>
</Steps>

| Campo                      | Valor                                   |
| -------------------------- | --------------------------------------- |
| **Klaviyo Public API Key** | Sua Public API Key da Etapa 1           |
| **Event Name**             | Veja a tabela de nomes de evento abaixo |
| **Customer Email Address** | `{{order.customer.email}}`              |
| **Customer First Name**    | `{{order.customer.firstName}}`          |
| **Customer Last Name**     | `{{order.customer.lastName}}`           |

#### Nomes de evento por gatilho

Use um nome de evento descritivo para que possa identificar cada gatilho no Klaviyo:

| Gatilho Revize                 | Nome de Evento Recomendado     |
| ------------------------------ | ------------------------------ |
| Pedido editado                 | `Revize_Order_Edited`          |
| Endereço de entrega atualizado | `Revize_Address_Updated`       |
| Endereço de e-mail atualizado  | `Revize_Email_Updated`         |
| Número de telefone atualizado  | `Revize_Phone_Updated`         |
| Data de entrega atualizada     | `Revize_Delivery_Date_Updated` |
| Pedido cancelado               | `Revize_Order_Cancelled`       |
| Ticket de suporte criado       | `Revize_Support_Ticket`        |
| Nota fiscal gerada             | `Revize_Tax_Invoice`           |

<Tip>
  Você pode nomear esses eventos como quiser. Estes são apenas nossos nomes recomendados para manter a organização.
</Tip>

### Etapa 4: Defina as Customer Properties

No campo **Customer Properties**, cole o seguinte JSON:

```json theme={null}
{
  "$email": "{{order.customer.email}}",
  "$first_name": "{{order.customer.firstName}}",
  "$last_name": "{{order.customer.lastName}}"
}
```

Isto diz ao Klaviyo a qual perfil de cliente associar o evento.

### Etapa 5: Defina as Event Properties

No campo **Event Properties**, cole o JSON que corresponde ao seu gatilho. Isto usa dados de pedido recém-buscados da etapa Get Order Data, então o Klaviyo sempre recebe os dados atuais corretos.

<Tabs>
  <Tab title="Pedido Editado">
    Use isto quando quiser enviar os detalhes completos do pedido atualizado, incluindo itens de linha:

    ```liquid theme={null}
    {% for single_order in getOrderData %}
    {
      "order_id": "{{single_order.id}}",
      "order_name": "{{single_order.name}}",
      "order_number": "{{single_order.legacyResourceId}}",
      "total_price": "{{single_order.totalPriceSet.shopMoney.amount}}",
      "subtotal_price": "{{single_order.subtotalPriceSet.shopMoney.amount}}",
      "total_tax": "{{single_order.totalTaxSet.shopMoney.amount}}",
      "total_shipping": "{{single_order.totalShippingPriceSet.shopMoney.amount}}",
      "currency": "{{single_order.currencyCode}}",
      "edited_at": "{{single_order.updatedAt}}",
      "customer_email": "{{single_order.customer.email}}",
      "customer_name": "{{single_order.customer.firstName}} {{single_order.customer.lastName}}",
      "line_items": [{% assign comma = "" %}{% for item in single_order.lineItems %}
        {% if item.currentQuantity != 0 %}{{comma}}
        {"title": {{item.title | json}}, "quantity": {{item.currentQuantity}},
         "price": "{{item.originalUnitPriceSet.shopMoney.amount}}",
         "variant_title": {{item.variantTitle | json}}, "sku": {{item.sku | json}}}
        {% assign comma = "," %}{% endif %}
      {% endfor %}]
    }
    {% endfor %}
    ```

    <Warning>
      Não envolva os colchetes do array `line_items` `[ ]` em aspas. Os colchetes devem estar fora de todas as aspas para que o Klaviyo receba um array adequado.
    </Warning>
  </Tab>

  <Tab title="Endereço / E-mail / Telefone / Data de Entrega">
    Use isto para atualizações de endereço de entrega, informações de contato ou data de entrega. Envia o resumo do pedido sem itens de linha:

    ```liquid theme={null}
    {% for single_order in getOrderData %}
    {
      "order_id": "{{single_order.id}}",
      "order_name": "{{single_order.name}}",
      "order_number": "{{single_order.legacyResourceId}}",
      "total_price": "{{single_order.totalPriceSet.shopMoney.amount}}",
      "currency": "{{single_order.currencyCode}}",
      "updated_at": "{{single_order.updatedAt}}",
      "customer_email": "{{single_order.customer.email}}",
      "customer_name": "{{single_order.customer.firstName}} {{single_order.customer.lastName}}",
      "shipping_address": "{{single_order.shippingAddress.address1}}, {{single_order.shippingAddress.city}}, {{single_order.shippingAddress.province}} {{single_order.shippingAddress.zip}}, {{single_order.shippingAddress.country}}"
    }
    {% endfor %}
    ```
  </Tab>

  <Tab title="Cancelamento">
    Use isto para eventos de cancelamento de pedido:

    ```liquid theme={null}
    {% for single_order in getOrderData %}
    {
      "order_id": "{{single_order.id}}",
      "order_name": "{{single_order.name}}",
      "order_number": "{{single_order.legacyResourceId}}",
      "total_price": "{{single_order.totalPriceSet.shopMoney.amount}}",
      "currency": "{{single_order.currencyCode}}",
      "cancelled_at": "{{single_order.updatedAt}}",
      "customer_email": "{{single_order.customer.email}}",
      "customer_name": "{{single_order.customer.firstName}} {{single_order.customer.lastName}}"
    }
    {% endfor %}
    ```
  </Tab>
</Tabs>

<Note>
  O loop `{% for single_order in getOrderData %}` lê dos dados do pedido recém-buscados, não do gatilho original. Isto garante dados corretos toda vez.
</Note>

### Etapa 6: Ative o workflow

<Steps>
  <Step title="Revise todos os campos">
    Certifique-se de que tudo está preenchido corretamente.
  </Step>

  <Step title="Ative o workflow">
    Clique em **Turn on workflow** no canto superior direito.
  </Step>

  <Step title="Pronto">
    O workflow agora está ativo. Toda vez que um cliente dispara essa ação pelo Revize, o evento é enviado ao Klaviyo com dados atualizados do pedido.
  </Step>
</Steps>

***

## Parte 2: Configurar o e-mail do Klaviyo

### Etapa 7: Crie um Klaviyo Flow

<Steps>
  <Step title="Crie um novo Flow">
    No Klaviyo, vá para **Flows → Create Flow** e selecione **Build your own**.
  </Step>

  <Step title="Defina o gatilho">
    Para o gatilho, escolha **Metric** e busque pelo nome do evento que você usou (ex.: `Revize_Order_Edited`).
  </Step>

  <Step title="Adicione uma ação de e-mail">
    Arraste uma ação **Email** para o flow.
  </Step>

  <Step title="Crie seu modelo">
    Use as variáveis abaixo para puxar dados do pedido dinamicamente.
  </Step>
</Steps>

### Etapa 8: Variáveis do modelo de e-mail

Use estas variáveis no seu modelo de e-mail Klaviyo:

| Dado                | Variável Klaviyo               |
| ------------------- | ------------------------------ |
| Nome do Cliente     | `{{ event.customer_name }}`    |
| Número do Pedido    | `{{ event.order_name }}`       |
| Subtotal            | `{{ event.subtotal_price }}`   |
| Imposto Total       | `{{ event.total_tax }}`        |
| Frete               | `{{ event.total_shipping }}`   |
| Preço Total         | `{{ event.total_price }}`      |
| Moeda               | `{{ event.currency }}`         |
| Data da Edição      | `{{ event.edited_at }}`        |
| E-mail do Cliente   | `{{ event.customer_email }}`   |
| Endereço de Entrega | `{{ event.shipping_address }}` |

### Exibindo itens de linha

Para exibir cada produto no pedido editado, use este loop no seu modelo de e-mail Klaviyo:

```liquid theme={null}
{% for item in event.line_items %}
  {{ item.title }}
  Variant: {{ item.variant_title }}
  Qty: {{ item.quantity }}
  Price: {{ item.price }}
{% endfor %}
```

<Tip>
  Você pode estilizar este loop com HTML/CSS no seu modelo de e-mail Klaviyo para combinar com sua marca. Por exemplo, coloque-o dentro de uma tabela para um visual de nota fiscal limpo.
</Tip>

### E-mail de exemplo

Aqui está um exemplo de como o assunto e o corpo do seu e-mail podem ficar:

```
Subject: Your order {{ event.order_name }} has been updated

Hi {{ event.customer_name }},

Your order has been updated. Here is your revised summary:

{% for item in event.line_items %}
  {{ item.title }} ({{ item.variant_title }})
  Qty: {{ item.quantity }}  |  Price: {{ item.price }} {{ event.currency }}
{% endfor %}

Total: {{ event.currency }} {{ event.total_price }}
```

***

## Evite e-mails duplicados

Se um cliente faz várias edições rápidas em uma sessão, o Klaviyo pode enviar múltiplos e-mails. Para evitar isto:

1. Abra seu Klaviyo Flow
2. Adicione um **Flow Filter**
3. Defina-o para suprimir se o cliente recebeu este e-mail nos **últimos 5 minutos**

***

## Solução de problemas

<AccordionGroup>
  <Accordion title="Flow mostra 'Succeeded' mas sem evento no Klaviyo" icon="circle-exclamation">
    Verifique se a **Public API Key** no Shopify Flow corresponde à da sua conta Klaviyo. Este é o problema mais comum.
  </Accordion>

  <Accordion title="Evento chega, mas os dados estão vazios" icon="circle-exclamation">
    O JSON de Event Properties pode estar inválido. Certifique-se de que não há quebras de linha dentro de valores de string e que `line_items` usa colchetes `[ ]` sem aspas ao redor.
  </Accordion>

  <Accordion title="Variante errada aparecendo nos itens de linha" icon="circle-exclamation">
    Certifique-se de estar usando a etapa **Get Order Data** com a espera de 10 segundos e que suas Event Properties usam o loop `getOrderData`, não `order.lineItems` diretamente.
  </Accordion>

  <Accordion title="Múltiplos e-mails sendo enviados" icon="circle-exclamation">
    Adicione um **Flow Filter** no Klaviyo para suprimir se o cliente recebeu este e-mail nos últimos 5 minutos.
  </Accordion>

  <Accordion title="Onde encontrar a métrica no Klaviyo" icon="circle-question">
    Vá para **Analytics → Metrics** e busque pelo nome do evento (ex.: `Revize_Order_Edited`). É criado automaticamente na primeira vez que um evento é recebido.
  </Accordion>

  <Accordion title="Como verificar se funcionou" icon="circle-check">
    Vá para **Audience → Profiles** no Klaviyo, encontre o e-mail do cliente e verifique a aba **Activity** para o evento.
  </Accordion>
</AccordionGroup>

***

## Quer múltiplos gatilhos?

Você pode configurar workflows separados do Shopify Flow para cada gatilho. Por exemplo:

* **Workflow 1:** Pedido editado → `Revize_Order_Edited` → e-mail "Seu pedido foi atualizado"
* **Workflow 2:** Endereço atualizado → `Revize_Address_Updated` → e-mail "Seu endereço de entrega foi alterado"
* **Workflow 3:** Pedido cancelado → `Revize_Order_Cancelled` → e-mail "Seu pedido foi cancelado"

Cada workflow segue os mesmos passos acima. Apenas mude o gatilho, o nome do evento e as propriedades do evento.

***

<Tip>
  Precisa de ajuda? [Entre em contato conosco](/pt/support/contact) e configuraremos a integração completa Shopify Flow + Klaviyo para você.
</Tip>
