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

# Checkouts abandonados

> Qué registra Reval cuando un cliente deja el checkout de suscripción a medias, por qué no aparece en la lista de Shopify y cómo armar el email de recuperación en Klaviyo.

Cuando un cliente carga su email en el checkout de Reval y no termina de pagar, hoy esa venta se pierde sin que te enteres. Con **Checkouts abandonados** activado, Reval guarda el intento, lo muestra en **Pedidos → Checkouts abandonados** y emite un evento para que armes un email de recuperación en Klaviyo o en tu herramienta de webhooks.

> [!WARNING]
>
> Los checkouts de Reval **no aparecen en Pedidos → Checkouts abandonados de Shopify**. Esa lista es de solo lectura para las apps y Shopify la alimenta únicamente con su propio checkout. La lista de Reval es el equivalente, dentro de la app.

## Activarlo

**Configuración → Pedidos e inventario → Checkouts y carritos abandonados**. Viene **apagado**: son datos personales de personas que no compraron. Mientras está apagado no se guarda ni se emite nada.

## Qué se registra

En cuanto el cliente escribe un email válido en cualquiera de los tres checkouts de Reval (producto, carrito de suscripciones o caja), Reval guarda el intento y lo va actualizando mientras completa el formulario: email, nombre y dirección si los cargó, los productos con su frecuencia, el monto y la fecha. Nunca se guarda nada de la tarjeta.

Un mismo cliente que abandona varias veces el mismo tipo de checkout actualiza **un solo registro**, no varios.

## La lista

**Pedidos → Checkouts abandonados** muestra cliente, productos, monto, tipo de checkout, estado y última actividad:

| Estado | Qué significa |
| - | - |
| **En curso** | El cliente cargó el email hace menos de una hora. |
| **Abandonado** | Pasó una hora sin actividad y no pagó (el mismo criterio que usa Shopify). |
| **Completado** | Pagó en la misma sesión. No aparece en la pestaña Abandonados. |
| **Recuperado** | Pagó después de haber abandonado, o volvió por el link de recuperación. |

**Copiar link** te da el link de recuperación: abre el mismo checkout con los productos, el plan, la frecuencia y los datos del cliente ya cargados (la tarjeta, no). Es el mismo link que viaja en el evento.

Los registros se **borran a los 90 días** sin actividad, igual que Shopify.

## El email de recuperación en Klaviyo

Reval sigue el mismo esquema que la integración de Shopify con Klaviyo: el evento **«Checkout iniciado»** sale **apenas el cliente carga el email**, no después de la espera. La espera y el corte los pone el flow, igual que tu flow de carrito abandonado:

1. **Trigger**: métrica «Checkout iniciado» (en tiendas en portugués también «Checkout iniciado»).
2. **Espera**: la que quieras (Shopify usa 10 horas por defecto; 1 hora también es común).
3. **Filtro del flow**: *«Suscripción creada» cero veces desde que empezó este flow*. Si el cliente compró, el email no sale.
4. **Email**: usá `{{ event.recovery_url }}` como botón, `{{ event.items_text }}` o `{{ event.product_names }}` para listar lo que dejó, y `{{ event.amount_formatted }}` para el monto.

Propiedades del evento: `checkout_kind` (`product` / `box` / `cart`), `title`, `product_names`, `items_text`, `items` (lista con `title`, `quantity`, `frequency_label`), `item_count`, `amount`, `amount_formatted`, `currency`, `customer_first_name`, `customer_last_name`, `shipping_city`, `shipping_province`, `shipping_country`, `recovery_url`, `checkout_started_at`.

No hay un evento «recuperado» aparte: la señal de que compró es la métrica **«Suscripción creada»** de siempre, que es la que el filtro del paso 3 mira.

## Carritos abandonados

El **carrito de suscripciones** de Reval (el cajón que junta varios productos para pagarlos en un solo checkout) se registra con la misma opción, un paso antes: cuando el cliente lo llena y no sigue al checkout. Como el carrito vive en el navegador y no sabe quién es el cliente, Reval solo lo guarda cuando puede identificarlo con certeza: el cliente **inició sesión** en la tienda, o **ya dejó su email** en un checkout de Reval desde ese mismo navegador. Los carritos anónimos no se guardan ni generan evento; la lista muestra qué porcentaje de carritos pudo identificarse, para decidir si vale ampliar.

En la lista aparecen como **Carrito (sin checkout)**, con los productos que Reval cotizó y un link que abre el checkout con ese carrito cargado. Cuando el cliente sigue al checkout el registro pasa a **Llegó al checkout** (y el checkout toma la posta); si vacía el carrito, a **Vaciado**; si compra, a **Completado**.

El evento es **«Carrito iniciado»** (en portugués «Carrinho iniciado»), con las mismas propiedades que «Checkout iniciado», y sale apenas hay un carrito identificable. Para que una misma persona reciba **un solo flujo** y no uno por carrito y otro por checkout, el flow de carrito lleva dos filtros:

1. **Trigger**: métrica «Carrito iniciado».
2. **Espera**: la que quieras.
3. **Filtros del flow**: *«Checkout iniciado» cero veces desde que empezó este flow* (si llegó al checkout, ese flow se encarga) **y** *«Carrito vaciado» cero veces desde que empezó este flow* (si lo vació, no hay nada que recuperar). Sumá *«Suscripción creada» cero veces* si querés cubrir una compra directa.
4. **Email**: `{{ event.recovery_url }}` abre el checkout con el carrito.

Por webhooks los temas son **`cart.started`** y **`cart.emptied`**.

> [!NOTE]
>
> Esto requiere la versión actualizada del bloque del carrito en el theme (se publica con la app). Hasta que la tienda la tenga, el carrito no se registra; los checkouts sí.

## Webhooks

El mismo evento sale a tus endpoints con el tema **`checkout.started`** si lo suscribís en **Integraciones → Webhooks**, con las mismas propiedades en `data`. Ver [Webhooks](https://docs.appreval.com/desarrolladores/webhooks.md).

> [!NOTE]
>
> Shopify Flow no recibe este evento por ahora: su trigger «Evento de suscripción» va atado a una suscripción, y acá todavía no hay ninguna.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.