# Eventos de productos

> Visualizaciones de productos registradas por el script de seguimiento.



## product.viewed

> Se envía cuando el script de seguimiento registra una vista de producto, de un contacto o de un visitante anónimo. Alfa: solo para el equipo de Emailit.

# product.viewed

Se envía cada vez que el comando `product` del [script de seguimiento](/es/docs/commerce/connect-your-shop/#record-shop-activity) registra una vista de producto. Las vistas llegan de contactos conocidos y de visitantes anónimos. Cuando un visitante anónimo se identifica más tarde, sus vistas anteriores cuentan para el contacto, pero los eventos ya enviados conservan `contact_id` igual a `null`. Consulta [Comercio electrónico](/es/docs/commerce/#events).

> **Comercio electrónico está en alfa:** Comercio electrónico solo está abierto al equipo de Emailit mientras lo probamos. Consulta [Quién puede usar Comercio electrónico](/es/docs/commerce/#who-can-use-commerce).

Las vistas de productos proceden del tráfico de la web, así que los webhooks con **All events** activado no reciben este evento. Suscribe el webhook a `product.viewed` por su nombre.

Las peticiones de webhook contienen un array JSON de eventos como este; consulta [Peticiones de webhook](/es/docs/webhooks/webhook-requests/).

```json
{
  "event_id": "evt_3xbB2QmL7cVn0Rk8sWd4TfY1uHa",
  "type": "product.viewed",
  "object": {
    "object": "product_view",
    "product": {
      "id": "prd_3Rx6aB1cD2eF3gH4iJ5kL6mN7oP",
      "external_id": "8123456789",
      "title": "Trail running shoe",
      "url": "https://shop.example.com/products/trail-running-shoe",
      "image_url": "https://shop.example.com/images/trail-running-shoe.jpg",
      "price": 89,
      "currency": "USD"
    },
    "contact_id": "con_3EwrXnu9OaQWlfI1AyPUUEoYjQs",
    "email": "ada@example.com",
    "anonymous_id": "anon_5f0c9e2b7d1a4c8e9b3f6a2d1c0e7b4a",
    "viewed_at": "2026-10-19T09:12:40.512Z",
    "source": "js",
    "context": {
      "page": {
        "url": "https://shop.example.com/products/trail-running-shoe",
        "path": "/products/trail-running-shoe",
        "title": "Trail running shoe"
      },
      "campaign": { "source": "emailit", "medium": "email", "name": "Autumn sale" },
      "timezone": "Europe/Prague"
    }
  },
  "data": {
    "object": {
      "object": "product_view",
      "product": {
        "id": "prd_3Rx6aB1cD2eF3gH4iJ5kL6mN7oP",
        "external_id": "8123456789",
        "title": "Trail running shoe",
        "url": "https://shop.example.com/products/trail-running-shoe",
        "image_url": "https://shop.example.com/images/trail-running-shoe.jpg",
        "price": 89,
        "currency": "USD"
      },
      "contact_id": "con_3EwrXnu9OaQWlfI1AyPUUEoYjQs",
      "email": "ada@example.com",
      "anonymous_id": "anon_5f0c9e2b7d1a4c8e9b3f6a2d1c0e7b4a",
      "viewed_at": "2026-10-19T09:12:40.512Z",
      "source": "js",
      "context": {
        "page": {
          "url": "https://shop.example.com/products/trail-running-shoe",
          "path": "/products/trail-running-shoe",
          "title": "Trail running shoe"
        },
        "campaign": { "source": "emailit", "medium": "email", "name": "Autumn sale" },
        "timezone": "Europe/Prague"
      }
    }
  }
}
```

## Campos

- `event_id` (string): El ID del evento (`evt_…`). Una petición reintentada lleva el mismo ID, así que úsalo para omitir los eventos que ya hayas procesado. También puedes consultar el evento con [Obtener un evento](/es/docs/api-reference/events/get/).

- `type` (string): Siempre `product.viewed`.

- `object` (object): La vista de producto que describe el evento. Sus campos se indican a continuación.

- `data.object` (object): El mismo objeto otra vez, con la forma que devuelve la [API de eventos](/es/docs/api-reference/events/get/) en `data`.

### Objeto de vista de producto

- `object` (string): Siempre `product_view`.

- `product` (object): El producto visto: `id` (`prd_…`, `null` si el producto no está en tu catálogo), `external_id` (el ID del producto en tu tienda), `title`, `url`, `image_url`, `price` y `currency`. Los valores proceden de tu [catálogo](/es/docs/api-reference/products/get/) si el producto está en él, y de la llamada `product` en caso contrario.

- `contact_id` (string | null): El contacto que vio el producto (`con_…`), o `null` si es un visitante anónimo.

- `email` (string | null): La dirección de email del contacto, o `null` si es un visitante anónimo.

- `anonymous_id` (string | null): El ID que el script de seguimiento asigna al navegador del visitante.

- `viewed_at` (string): Cuándo vio el visitante el producto, en formato ISO 8601 UTC.

- `source` (string): Siempre `js` (el script de seguimiento).

- `context` (object | null): Lo que el script sabe de la visita: `page` (`url`, `path`, `title`, `referrer`), `campaign` (valores UTM), `locale`, `timezone`, `library` y `user_agent`. Son los mismos campos que en los [eventos del script de seguimiento](/es/docs/events/tracking-script/#what-the-script-sends).

---
Fuente: https://emailit.com/es/docs/webhooks/events/product/product-viewed/
