> 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/google-analytics/recomendaciones.md).

# Recomendaciones

Para medir correctamente las recomendaciones, se deben enviar eventos en dos momentos clave: cuando el cliente visualiza el widget y cuando interactúa con él.

**1. Visualización del widget**

Cuando el cliente ve el widget, se debe enviar el evento **`view_item_list`**, incluyendo:

* Nombre de la personalización
* Ítems recomendados

Para esto, utilizar la función: `trackGopersonalProductImpression` que envía el evento a GA4.

<figure><img src="/files/bdOfKmOI9UOfDuestfKi" alt=""><figcaption></figcaption></figure>

**2. Click en un ítem del widget**

Cuando el cliente hace click en un ítem, se debe enviar el evento **`select_item`**, incluyendo:

* Nombre de la personalización
* Ítem seleccionado
* Posición dentro del listado

Este evento es enviado automáticamente por el SDK mediante la *interaction view*.\
Para que funcione correctamente, es importante que la URL del producto incluya:

* Nombre de la personalización
* Posición del ítem

<figure><img src="/files/Ss9k8QLtMKwk57Umweb8" alt=""><figcaption></figcaption></figure>

En otros casos (por ejemplo si tienen botón de agregar al carrito) se debe agregarlo a través de la sdk usando la función ***trackGopersonalProductClickById*** o ***trackGopersonalProductClickByField***

#### Verificación

Es posible verificar que los eventos se estén enviando correctamente desde la consola del navegador, inspeccionando el objeto `dataLayer`.

<figure><img src="/files/mu7wxHCLHsTRczqojphz" alt=""><figcaption></figcaption></figure>

**IMPORTANTE**:

Pueden existir implementaciones personalizadas de GA4. En estos casos, aunque los eventos aparezcan en `dataLayer`, es posible que no se envíen correctamente a GA4.

{% hint style="warning" %}
Como parte de la verificación se debe corroborar que los eventos se envían de igual manera que los otros eventos en el sitio.
{% endhint %}

Si los eventos difieren, deben enviarse como eventos personalizados utilizando la función:\
`trackGopersonalToDataLayer`, incluyendo todo el *body* necesario para GA4.

<figure><img src="/files/oPGEmhpojKHDgzZOUSXy" alt=""><figcaption></figcaption></figure>

El evento **`select_item`** también debe enviarse de esta forma en caso de implementaciones personalizadas.

**OBS**: Al usar `trackGopersonalToDataLayer` es necesario usar la función `parseItemsForGA4` para llevar a un formato esperado por GA4.
