# Conectar tu tienda

> Envía productos y pedidos desde el backend de tu tienda y añade el script de seguimiento de Emailit para registrar vistas de productos, carritos y compras, y reconocer a los visitantes que llegan desde tus emails. Alfa: solo para el equipo de Emailit.

Una tienda envía a Emailit dos tipos de datos: el catálogo y los pedidos desde su backend, con la API, y lo que hacen los visitantes en la web, con el script de seguimiento de [Seguimiento de eventos](/es/docs/events/). Usa ambos para tener la imagen completa: la API es el registro fiable de los pedidos, y el script añade las vistas de productos, los carritos y los visitantes que llegan desde tus emails.

> **Comercio electrónico está en alfa:** Comercio electrónico solo está abierto al equipo de Emailit mientras lo probamos. La API y el script de seguimiento solo funcionan en los espacios de trabajo que pertenecen al equipo de Emailit. Consulta [Quién puede usar Comercio electrónico](/es/docs/commerce/#who-can-use-commerce).

## Antes de empezar

- Una [clave de API](/es/docs/developers/api-keys/) para las llamadas desde el backend. Una clave **Events Only** puede enviar productos, pedidos y carritos: es la misma clave que envía [eventos desde tu backend](/es/docs/events/send-events/). No puede leer datos, así que sus respuestas solo contienen `object`, `id` y `external_id`. Usa una clave **Full Access** si también necesitas leer datos, gestionar cupones o cambiar la configuración.
- Para el script de seguimiento, permiso para añadir un script a las páginas de tu tienda.

## Enviar datos desde tu backend

### Productos

Envía tu catálogo con [Crear o actualizar productos en bloque](/es/docs/api-reference/products/batch/), y vuelve a hacerlo cada vez que cambien los productos. Cada producto se identifica por el ID de producto de tu tienda, así que al enviarlo de nuevo se actualiza.

```bash
curl https://api.emailit.com/v2/products/batch \
  -X POST \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "products": [{
      "id": "1234",
      "title": "Trail Runner GTX",
      "url": "https://shop.example.com/products/trail-runner",
      "image_url": "https://shop.example.com/images/trail-runner.jpg",
      "price": 139,
      "compare_at_price": 169,
      "currency": "EUR",
      "categories": ["Shoes", "Running"],
      "inventory_quantity": 40
    }]
  }'
```

Los feeds de productos de los emails dejan fuera los productos archivados y los productos con un inventario de 0, así que mantén actualizados `status` e `inventory_quantity`.

### Pedidos

Cuando se realiza un pedido, envíalo con [Crear o actualizar un pedido](/es/docs/api-reference/orders/create/):

```bash
curl https://api.emailit.com/v2/orders \
  -X POST \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "1001",
    "email": "jane@example.com",
    "currency": "EUR",
    "total": 125,
    "shipping": 5,
    "coupon_codes": ["WLC-8K2M4P"],
    "cart_id": "cart_789",
    "items": [{ "product_id": "1234", "title": "Trail Runner GTX", "quantity": 1, "price": 120 }]
  }'
```

- `id` es el número de pedido de tu tienda. Si vuelves a enviar el mismo `id`, el pedido se actualiza en lugar de añadirse otro.
- Emailit atribuye el pedido al último email en el que el comprador hizo clic o que abrió. Consulta [Cómo se atribuyen los pedidos](/es/docs/commerce/#how-orders-are-credited-to-emails).
- El comprador se convierte en contacto si todavía no lo es. Añade `"accepts_marketing": true` y un `audience_id` para suscribirlo también, por ejemplo cuando ha marcado la casilla de la newsletter al pagar. `"create_contact": false` evita crear un contacto. El comando `purchase` del script de seguimiento nunca crea ni suscribe un contacto.
- `cart_id` marca ese carrito como convertido.

Cuando el pedido se paga, se prepara, se cancela o se reembolsa, envía el cambio con [Actualizar un pedido](/es/docs/api-reference/orders/update/), o vuelve a enviar el pedido con su nuevo `status`. Los pedidos cancelados no cuentan en los ingresos, y los reembolsos se restan.

### Pedidos anteriores

Importa tu historial de pedidos con [Importar pedidos en bloque](/es/docs/api-reference/orders/batch/), hasta 1000 pedidos por petición. Por defecto, las importaciones son históricas: completan el historial de compras, las métricas y las recomendaciones, pero no se atribuyen a los emails ni inician automatizaciones.

## El script de seguimiento

El script de seguimiento registra lo que hacen los visitantes en tu web: vistas de productos, el carrito, compras y visitas. También reconoce a los visitantes que llegan desde tus emails, para que su actividad se asigne a su contacto.

### Añadir el script

1. **Crea una clave de seguimiento.** En **Email API → Events**, abre la pestaña **Tracking** y selecciona **Create tracking key**. En **Allowed origins**, indica los dominios de tu tienda, por ejemplo `shop.example.com` o `*.example.com`. Déjalo vacío para aceptar cualquier web.

2. **Añade el fragmento de código a todas las páginas,** antes de `</head>`. La pestaña **Tracking** lo muestra con tu clave ya incluida:

```html
<script>window.emailit=window.emailit||function(){(window._emailitq=window._emailitq||[]).push(arguments)};</script>
<script async src="https://js.emailit.com/track/TRACKING_KEY/events.js"></script>
```

   Las claves de seguimiento son públicas: solo pueden enviar eventos, nunca leer datos. Si el script de los [formularios de Emailit](/es/docs/forms/install/) ya está en la página, mantén los dos.

Para registrar también una vista de página en cada página, añade `data-autotrack="pages"` a la etiqueta del script. Las vistas de página actualizan cuándo estuvo activo el contacto en tu web por última vez y su zona horaria; no se guardan como eventos.

### Registrar la actividad de la tienda

Llama a estos comandos donde se produce cada acción:

```js
// Product page
emailit("product", { id: "1234", title: "Trail Runner GTX", url: location.href,
  image_url: "https://shop.example.com/images/trail-runner.jpg", price: 139, currency: "EUR",
  categories: ["Shoes", "Running"] });

// Every time the cart changes
emailit("cart", { id: "cart_789", currency: "EUR", checkout_url: "https://shop.example.com/checkout",
  items: [{ product_id: "1234", title: "Trail Runner GTX", quantity: 1, price: 139 }] });

// Order confirmation page
emailit("purchase", { id: "1001", total: 125, currency: "EUR",
  items: [{ product_id: "1234", quantity: 1, price: 120 }], coupon_codes: ["WLC-8K2M4P"] });
```

| Comando | Registra |
| --- | --- |
| `product` | Una vista de producto. Un producto que todavía no está en tu catálogo se añade a partir de estos campos; los productos que envías con la API no cambian. |
| `cart` | Todo el carrito actual, que sustituye a la versión anterior. Sin un `id`, el carrito del visitante se sigue con un ID propio. Envía una lista `items` vacía cuando se vacíe el carrito. |
| `purchase` | Un pedido, con los mismos campos que la [API de pedidos](/es/docs/api-reference/orders/create/). También convierte el carrito del visitante. Es preferible enviar los pedidos desde tu backend: los bloqueadores de anuncios pueden detener las llamadas desde el navegador. Si haces las dos cosas, usa el mismo `id` de pedido para que el pedido no se cuente dos veces. El script nunca modifica un pedido que hayas enviado desde tu backend, y nunca crea ni suscribe un contacto. |
| `page` | Una vista de página. Se envía en cada página con `data-autotrack="pages"`. |

### Identificar a los visitantes

La actividad cuenta para un contacto en cuanto el script sabe quién es el visitante:

- **Desde un enlace de un email.** Cuando un contacto hace clic en un enlace de un email de campaña o de automatización que lleva a tu web, el enlace incluye un parámetro `_eit` firmado. El script lo guarda y lo quita de la barra de direcciones. Los enlaces lo reciben cuando el seguimiento de clics está activado y el enlace va a un origen permitido de una clave de seguimiento o, en las claves sin orígenes permitidos, a tu dominio de envío.
- **Cuando inicia sesión o paga,** llama a `identify` con su dirección de email o su ID de contacto:

```js
emailit("identify", { email: "jane@example.com" });
```

- **Cuando cierra sesión,** llama a `emailit("reset")` para olvidarlo en ese navegador.

Las vistas de productos y los carritos anteriores a la identificación del visitante pasan al contacto. El script también registra la zona horaria del navegador, que usa el envío según la [hora local del destinatario](/es/docs/campaigns/sending-options/#recipients-local-time), y cuándo estuvo activo el contacto en tu web por última vez.

`emailit("debug", true)` muestra en la consola del navegador lo que envía el script.

### Dónde aparece la actividad

La actividad de la tienda va al mismo registro de eventos que tus demás eventos. Las vistas de productos se convierten en eventos [`product.viewed`](/es/docs/webhooks/events/product/viewed/), los carritos nuevos o modificados en [`cart.updated`](/es/docs/webhooks/events/cart/updated/) y las compras en [`order.placed`](/es/docs/webhooks/events/order/placed/). Los ves en **Email API → Events** y en la actividad del contacto, y los webhooks pueden suscribirse a ellos. `product.viewed` y `cart.updated` no forman parte de **All events**, así que suscribe el webhook a ellos por su nombre. Consulta [Eventos de Comercio electrónico](/es/docs/commerce/#events).

## Comprobar que funciona

- **Email Marketing → Commerce** muestra tus productos y pedidos, y **Carts** muestra los carritos del script.
- **Email API → Events** lista los eventos `product.viewed`, `cart.updated` y `order.placed` a medida que los visitantes navegan y compran.
- Abre un contacto que haya hecho un pedido: la tarjeta **Purchases** muestra sus pedidos, su gasto total y los productos vistos recientemente.
- Después de una campaña, los pedidos que se le atribuyen aparecen en su pestaña **Revenue**.

## Ver también

  - [Comercio electrónico](/es/docs/commerce/): La atribución, la configuración y las páginas de Commerce.
  - [API de pedidos](/es/docs/api-reference/orders/create/): Todos los campos de un pedido.

---
Fuente: https://emailit.com/es/docs/commerce/connect-your-shop/
