> ## 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

> Envía correos automatizados a través de Klaviyo cuando los clientes editan sus pedidos. Conecta Shopify Flow, Revize y Klaviyo para notificar a los clientes sobre cualquier cambio en el pedido.

## Lo que necesitas

* Shopify Flow (disponible en todos los planes de Shopify)
* Una cuenta de Klaviyo con la [app Klaviyo Shopify](https://apps.shopify.com/klaviyo-email-marketing) instalada
* Revize instalado con los activadores de Shopify Flow habilitados

<Info>
  ¿Prefieres saltarte la configuración? Podemos configurar toda la integración de Shopify Flow + Klaviyo por ti. [Contáctanos](/es/support/contact).
</Info>

## Cómo funciona

Revize dispara un activador de Shopify Flow cada vez que un cliente edita su pedido. Conectas ese activador a la acción "Track an Event" de Klaviyo, que envía los datos del pedido a Klaviyo. Desde allí, construyes un Flow de Klaviyo para enviar el correo.

Activador de Revize → Shopify Flow → Evento de Klaviyo → Correo de Klaviyo

***

## Activadores disponibles

Puedes enviar correos de Klaviyo para cualquiera de estos activadores de Revize:

* **Pedido editado** — se dispara en cualquier edición de pedido, incluyendo cambios de producto y ediciones de código de descuento
* **Dirección de envío actualizada**
* **Dirección de correo actualizada**
* **Número de teléfono actualizado**
* **Fecha de entrega actualizada**
* **Pedido cancelado**
* **Ticket de soporte creado**
* **Factura fiscal generada**

Cada activador sigue el mismo proceso de configuración. Solo cambian el activador que seleccionas en Shopify Flow, el nombre del evento que envías a Klaviyo y las propiedades del evento.

***

## Parte 1: Configurar Shopify Flow

### Paso 1: Encuentra tu Klaviyo Public API Key

<Steps>
  <Step title="Inicia sesión en Klaviyo">
    Ve a tu panel de Klaviyo.
  </Step>

  <Step title="Abre Configuración">
    Haz clic en el nombre de tu cuenta en la esquina inferior izquierda, luego ve a **Settings**.
  </Step>

  <Step title="Navega a API Keys">
    Ve a la sección **API Keys**.
  </Step>

  <Step title="Copia tu Public API Key">
    Copia la **Public API Key** (un código alfanumérico corto). La necesitarás en el Paso 3.
  </Step>
</Steps>

<Warning>
  Asegúrate de copiar la API key **Public**, no la Private API key. La clave pública es la más corta.
</Warning>

***

### Paso 2: Crea un workflow de Shopify Flow

<Steps>
  <Step title="Abre Shopify Flow">
    En tu panel de Shopify, ve a **Apps → Shopify Flow** y haz clic en **Create workflow**.
  </Step>

  <Step title="Selecciona un activador de Revize">
    Haz clic en **Select a trigger**, busca **Revize** y elige el activador que quieras (p. ej., Order edited, Shipping address updated, etc.).
  </Step>

  <Step title="Agrega una acción Wait">
    Haz clic en el **+** debajo del activador y agrega una acción **Wait**. Establece la duración en **10 segundos**.
  </Step>

  <Step title="Agrega una acción Get Order Data">
    Haz clic en el **+** debajo del paso Wait y agrega una acción **Get Order Data** (acción de Shopify).

    Configúrala de la siguiente manera:

    * Establece **Select a query** en **Advanced**
    * En el campo **Edit query**, ingresa: `id:{{order.legacyResourceId}}`
    * Establece **Maximum number of orders** en **1**
    * Establece **Sort data by** en **Updated at, Descending**
  </Step>
</Steps>

<Note>
  **¿Por qué la espera de 10 segundos?** Le da a la API de Shopify tiempo para reflejar los últimos cambios del pedido antes de obtener datos frescos. El paso Get Order Data luego extrae los artículos y variantes actuales correctos.
</Note>

### Paso 3: Agrega la acción "Track an Event" de Klaviyo

<Steps>
  <Step title="Busca Klaviyo">
    En la lista de acciones, busca **Klaviyo** y selecciona **Track an Event**.
  </Step>

  <Step title="Completa los campos">
    Usa la tabla a continuación para completar cada campo.
  </Step>
</Steps>

| Campo                      | Valor                                                  |
| -------------------------- | ------------------------------------------------------ |
| **Klaviyo Public API Key** | Tu Public API Key del Paso 1                           |
| **Event Name**             | Consulta la tabla de nombres de eventos a continuación |
| **Customer Email Address** | `{{order.customer.email}}`                             |
| **Customer First Name**    | `{{order.customer.firstName}}`                         |
| **Customer Last Name**     | `{{order.customer.lastName}}`                          |

#### Nombres de eventos por activador

Usa un nombre de evento descriptivo para que puedas identificar cada activador en Klaviyo:

| Activador de Revize             | Nombre de evento recomendado   |
| ------------------------------- | ------------------------------ |
| Pedido editado                  | `Revize_Order_Edited`          |
| Dirección de envío actualizada  | `Revize_Address_Updated`       |
| Dirección de correo actualizada | `Revize_Email_Updated`         |
| Número de teléfono actualizado  | `Revize_Phone_Updated`         |
| Fecha de entrega actualizada    | `Revize_Delivery_Date_Updated` |
| Pedido cancelado                | `Revize_Order_Cancelled`       |
| Ticket de soporte creado        | `Revize_Support_Ticket`        |
| Factura fiscal generada         | `Revize_Tax_Invoice`           |

<Tip>
  Puedes nombrar estos eventos como quieras. Estos son solo nuestros nombres recomendados para mantener las cosas organizadas.
</Tip>

### Paso 4: Establecer Customer Properties

En el campo **Customer Properties**, pega el siguiente JSON:

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

Esto le dice a Klaviyo con qué perfil de cliente asociar el evento.

### Paso 5: Establecer Event Properties

En el campo **Event Properties**, pega el JSON que coincida con tu activador. Esto usa datos de pedido recién obtenidos del paso Get Order Data, por lo que Klaviyo siempre obtiene los datos actuales correctos.

<Tabs>
  <Tab title="Pedido editado">
    Usa esto cuando quieras enviar los detalles completos actualizados del pedido, incluidos los artículos:

    ```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>
      No envuelvas los corchetes del array `line_items` `[ ]` entre comillas. Los corchetes deben estar fuera de todas las comillas para que Klaviyo reciba un array adecuado.
    </Warning>
  </Tab>

  <Tab title="Dirección / Correo / Teléfono / Fecha de entrega">
    Usa esto para actualizaciones de dirección de envío, información de contacto o fecha de entrega. Envía el resumen del pedido sin artículos:

    ```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="Cancelación">
    Usa esto para eventos de cancelación de pedidos:

    ```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>
  El bucle `{% for single_order in getOrderData %}` lee de los datos del pedido recién obtenidos, no del activador original. Esto asegura datos correctos cada vez.
</Note>

### Paso 6: Activa el workflow

<Steps>
  <Step title="Revisa todos los campos">
    Asegúrate de que todo esté completado correctamente.
  </Step>

  <Step title="Activa el workflow">
    Haz clic en **Turn on workflow** en la esquina superior derecha.
  </Step>

  <Step title="Listo">
    El workflow ahora está activo. Cada vez que un cliente active esa acción a través de Revize, el evento se envía a Klaviyo con datos de pedido actualizados.
  </Step>
</Steps>

***

## Parte 2: Configurar el correo de Klaviyo

### Paso 7: Crea un Flow de Klaviyo

<Steps>
  <Step title="Crea un nuevo Flow">
    En Klaviyo, ve a **Flows → Create Flow** y selecciona **Build your own**.
  </Step>

  <Step title="Establece el activador">
    Para el activador, elige **Metric** y busca el nombre de evento que usaste (p. ej., `Revize_Order_Edited`).
  </Step>

  <Step title="Agrega una acción de correo">
    Arrastra una acción **Email** al flow.
  </Step>

  <Step title="Diseña tu plantilla">
    Usa las variables a continuación para extraer los datos del pedido dinámicamente.
  </Step>
</Steps>

### Paso 8: Variables de plantilla de correo

Usa estas variables en tu plantilla de correo de Klaviyo:

| Dato               | Variable de Klaviyo            |
| ------------------ | ------------------------------ |
| Nombre del cliente | `{{ event.customer_name }}`    |
| Número de pedido   | `{{ event.order_name }}`       |
| Subtotal           | `{{ event.subtotal_price }}`   |
| Impuesto total     | `{{ event.total_tax }}`        |
| Envío              | `{{ event.total_shipping }}`   |
| Precio total       | `{{ event.total_price }}`      |
| Moneda             | `{{ event.currency }}`         |
| Fecha de edición   | `{{ event.edited_at }}`        |
| Correo del cliente | `{{ event.customer_email }}`   |
| Dirección de envío | `{{ event.shipping_address }}` |

### Mostrar artículos

Para mostrar cada producto en el pedido editado, usa este bucle en tu plantilla de correo de Klaviyo:

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

Envuelve este bucle en una tabla o HTML estilizado en tu plantilla de correo de Klaviyo para que coincida con tu marca.

### Correo de ejemplo

Aquí tienes un ejemplo de cómo podría verse el asunto y el cuerpo de tu correo:

```
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 }}
```

***

## Evita correos duplicados

Si un cliente realiza múltiples ediciones rápidas en una sesión, Klaviyo puede enviar múltiples correos. Para evitar esto:

1. Abre tu Flow de Klaviyo
2. Agrega un **Flow Filter**
3. Establece que suprima si el cliente recibió este correo en los **últimos 5 minutos**

***

## Solución de problemas

<AccordionGroup>
  <Accordion title="El Flow muestra 'Succeeded' pero no hay evento en Klaviyo" icon="circle-exclamation">
    Verifica dos veces que la **Public API Key** en Shopify Flow coincida con la de tu cuenta de Klaviyo. Este es el problema más común.
  </Accordion>

  <Accordion title="El evento llega pero los datos están vacíos" icon="circle-exclamation">
    El JSON de Event Properties puede ser inválido. Asegúrate de que no haya saltos de línea dentro de los valores de cadena y que `line_items` use corchetes `[ ]` sin comillas alrededor.
  </Accordion>

  <Accordion title="Variante incorrecta mostrada en los artículos" icon="circle-exclamation">
    Asegúrate de estar usando el paso **Get Order Data** con la espera de 10 segundos, y que tus Event Properties usen el bucle `getOrderData`, no `order.lineItems` directamente.
  </Accordion>

  <Accordion title="Se envían múltiples correos" icon="circle-exclamation">
    Agrega un **Flow Filter** en Klaviyo para suprimir si el cliente recibió este correo en los últimos 5 minutos.
  </Accordion>

  <Accordion title="Dónde encontrar la métrica en Klaviyo" icon="circle-question">
    Ve a **Analytics → Metrics** y busca el nombre de tu evento (p. ej., `Revize_Order_Edited`). Se crea automáticamente la primera vez que se recibe un evento.
  </Accordion>

  <Accordion title="Cómo verificar que funcionó" icon="circle-check">
    Ve a **Audience → Profiles** en Klaviyo, encuentra el correo del cliente y verifica su pestaña **Activity** para el evento.
  </Accordion>
</AccordionGroup>

***

## ¿Quieres múltiples activadores?

Puedes configurar workflows separados de Shopify Flow para cada activador. Por ejemplo:

* **Workflow 1:** Pedido editado → `Revize_Order_Edited` → correo "Tu pedido ha sido actualizado"
* **Workflow 2:** Dirección actualizada → `Revize_Address_Updated` → correo "Tu dirección de envío ha sido cambiada"
* **Workflow 3:** Pedido cancelado → `Revize_Order_Cancelled` → correo "Tu pedido ha sido cancelado"

Cada workflow sigue los mismos pasos arriba. Solo cambia el activador, el nombre del evento y las propiedades del evento.
