> For the complete documentation index, see [llms.txt](https://academy.gopersonal.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://academy.gopersonal.ai/developers/track-personalization/track-recomendaciones.md).

# Track Recomendaciones

Este track aplica a las personalizaciones de tipo **recomendación** (widgets de productos) y es el que alimenta el dashboard de [Analytics > Recomendaciones](/guia-de-usuario/analytics/recomendaciones.md).

{% hint style="info" %}
Si la variante se creó a partir de un **template de gopersonal**, el track ya viene incluido y el SDK lo envía automáticamente. La implementación descrita en esta página aplica cuando la variante se crea desde 0 o cuando el sitio consume las recomendaciones y las renderiza con su propio código.
{% endhint %}

## Momentos a trackear

Se debe trackear la impresión del widget de recomendaciones (cuando el cliente ve la personalización de tipo recomendaciones) y cuando hace click sobre un item recomendado desde la personalización.

## 1. Impresión del widget

Debe enviarse **una vez por cada vez que el widget se muestra al cliente**, no en cada render del componente.

{% hint style="warning" %}
La impresión debe dispararse cuando el widget es **efectivamente visible** para el cliente. Si el widget está debajo del fold o dentro de una solapa, conviene dispararla con un `IntersectionObserver` y no en el momento del render, para no inflar las impresiones ni las sesiones personalizadas.
{% endhint %}

```javascript
// Pegar el track en la personalización. Las variables se completan dinamicamente a la hora de mostrar la personalización.
window.gsSDK?.observeElementInView('gs_main_container_{{gs_variantId}}','{{impressionId}}', 
  async(elementId, impressionId) => {	
    await window.gsSDK?.openImpression(impressionId);
  }
);
```

## 2. Click en un ítem

Debe enviarse cada vez que el cliente hace clic sobre un producto del widget, incluyendo el clic sobre el botón de agregar al carrito si el widget lo tiene.

Agregar query params al href de cada producto recomendado. La sdk se encarga del track automaticamente.

```javascript
// Las variables se completan dinamicamente a la hora de mostrar la personalización. Agrgear Index, es la posicón del producto en el widget.
href="${product.url}?gsImpressionId={{gs_recoImpressionId}}&gsListName={{gs_contentName}}&gsIndex=${index}"
```

{% hint style="info" %}
El clic es lo que habilita la **atribución por clic**. Si no se envía, las conversiones solo pueden atribuirse con el criterio de atribución general (el cliente vio el detalle de un producto que le fue recomendado previamente).
{% endhint %}

## Verificación

Antes de dar la implementación por terminada, verificá que:

1. La impresión se envía una sola vez por visualización del widget y no en cada scroll o re-render.
2. La posición de cada ítem coincide con el orden en pantalla y arranca en 1.
3. El clic se dispara en todos los caminos posibles (clic en la imagen, en el título y en el botón de agregar al carrito).
4. En el dashboard de Analytics > Recomendaciones aparecen impresiones, clics y clientes únicos para la personalización.

{% hint style="warning" %}
El track de gopersonal es independiente del de GA4. Verificar los eventos en el `dataLayer` **no** confirma que el track de gopersonal esté funcionando. Ver [Google Analytics > Recomendaciones](/developers/google-analytics/recomendaciones.md) para el tracking de GA4.
{% endhint %}
