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

# Kameleoon.API.Products: Tracking

> Referencia de los métodos Kameleoon.API.Products que envían vistas de productos y de categorías, búsquedas, cambios en el carrito y la lista de deseos, y compras.

Use estos métodos para enviar a Kameleoon las vistas de productos y de categorías, las búsquedas, los cambios en el carrito y en la lista de deseos, y las compras.

> [!NOTE]
>
> Este módulo está disponible al suscribirse al módulo Product Recommendation o al add-on Product Targeting.

## trackAddToCart

El método `trackAddToCart()` se dispara cuando un visitante añade un producto al carrito de la compra.

```javascript theme={null}
var buyButton = Kameleoon.API.Utils.querySelectorAll("#buyButton")[0];
Kameleoon.API.Utils.addEventListener(buyButton, "mousedown", function () {
  Kameleoon.API.Products.trackAddToCart("myProductId", 19.99, 1, {
    stock: true, 
    recommended_code: 'some-unique-code', //consulte la tabla de argumentos para más información
    recommended_by: 'dynamic'//consulte la tabla de argumentos para más información
  });
});
```

**Argumentos**

| Nombre | Tipo | Descripción |
| - | - | - |
| productID | String | Identificador único del producto. Este campo es obligatorio. |
| unitPrice | Number | Precio de una unidad del producto al que hace referencia **productID**. Este campo es opcional; si no lo especifica, Kameleoon usa el precio predeterminado del producto del feed de productos importado. |
| amount | Number | Cantidad total del producto tras la actualización del carrito. Use valores no incrementales. Por ejemplo, si el carrito contiene dos artículos con el mismo `productID` y añade otro, indique 3. Si elimina dos artículos de un carrito que contiene 20, indique 18. |
| parameters | Object | [Parámetros para la plataforma de recomendaciones.](#parámetros-para-la-plataforma-de-recomendaciones) Este campo es opcional. |

### Parámetros para la plataforma de recomendaciones

| Nombre | Tipo | Descripción |
| - | - | - |
| recommended\_by | String | Para SPAs o pop-ups, establezca este valor en "dynamic". Este campo es obligatorio en escenarios específicos. |
| recommended\_code | String | Para SPAs o pop-ups, proporcione el código único del widget que se encuentra en el atributo "data-recommender-code" de su cuenta. |
| stock | Boolean | Disponibilidad del producto. Este valor sobrescribe los datos de los feeds de productos o de las importaciones de catálogo. Este campo es opcional. |

## trackAddToWishList

El método `trackAddToWishList()` se ejecuta cuando un visitante añade o elimina un producto de la wish list o de favoritos.

```javascript theme={null}
Kameleoon.API.Products.trackAddToWishList("myProductId"); // para añadir a la wish list

Kameleoon.API.Products.trackAddToWishList("myProductId", -1); // para eliminar de la wish list
```

| Nombre | Tipo | Descripción |
| - | - | - |
| productId | String | Identificador único del producto añadido a la wishlist. Este campo es obligatorio. |
| quantity | Number | Cantidad que se va a actualizar. Use valores negativos (por ejemplo, -1) para indicar eliminación. Si se omite, el método utiliza **1** por defecto. |

## trackCategoryView

El método `trackCategoryView()` se ejecuta para cada vista de página de categoría durante una sesión.

```javascript theme={null}
if (location.href.indexOf("productPage") != -1) {
  Kameleoon.API.Core.runWhenConditionTrue(function () {
    return typeof dataLayer != null;
  }, function () {
    dataLayer.forEach(function (map) {
      if (map.categoryID) {
        Kameleoon.API.Products.trackCategoryView(5);
      }
    });
  }, 200);
}
```

**Argumentos**

| Nombre | Tipo | Descripción |
| - | - | - |
| categoryID | String | Identificador único de la categoría. Este campo es obligatorio. |

## trackProductView

El método `trackProductView()` se ejecuta para cada vista de producto durante una sesión. Este método permite a Kameleoon construir un catálogo de productos automatizado sin una integración de feed XML, lo que simplifica la configuración de proyectos de recomendación de productos.

```javascript theme={null}
Kameleoon.API.Products.trackProductView("myProductID", {
    "name": "productName",
    "categories": [{
        "id": "13",
        "name": "productCategory",
        "parent": null,
        "url": "website.com/category/2"
    }],
    "imageURL": "https://www.mywebsite/productImage.jpg",
    "price": 19.99,
   "oldPrice": 23.99,
    "accessories": ['productID1', 'productID2'],
    "available": true,
    "availableQuantity": 15,
    "brand": "productBrand",
    "groupId": "groupID1",
    "sku": "productSKU",
    "description": "This is a short description",
    "rating": 4,
    "model": "phone 14 128GB",
    "leftovers": "one",
    "tags": ["shirt", "red"],
    "typePrefix": "mobile phone",
    "seasonality": [1, 2, 3, 10, 11, 12],
    "priceMargin": 100,
    "isChild": false,
    "isNew": false,
    "isFashion": true,
    "auto": {
        "vds": ["BP8AN5", "HH5820"],
        "compatibility": [ 
            {
                "brand": "BMW"
            }, 
            { 
                "brand": "Mini", "model": "Cooper S" 
            } 
        ]
    },
    "fashion":  {
        "gender": "f",
        "type": "shoe",
        "sizes": ["37", "42"],
        "feature": "adult",
        "colors": [ 
            { 
                "color": "red" 
            }, 
            { 
                "color": "green", "picture": "https://example.com/items/395532-green.jpg" 
            }
        ]
    },
    "params": [
        {
            "name": "connectivity",
            "value": ["bluetooth", "wi-fi"]
        },
        {
            "name": "lengths",
            "value": ["4", "6", "8"],
            "unit": "cm"
        }
    ]
});
```

**Argumentos**

| Nombre | Tipo | Descripción |
| - | - | - |
| productID | String | Identificador del producto. Use cualquier valor único que identifique este producto en particular. Este campo es obligatorio. |
| productData | Object | [Objeto Product](https://docs.kameleoon.com/es/developer-docs/apis/activation-api-js/api-reference/objects/goal-segment-trigger-and-product.md#product). Este campo es obligatorio para importar feeds de productos mediante el complemento Product Recommendation. |

## trackSearchQuery

El método `trackSearchQuery()` registra las consultas de búsqueda del usuario.

```javascript theme={null}
Kameleoon.API.Products.trackSearchQuery("Example search request");
```

**Argumentos**

| Nombre | Tipo | Descripción |
| - | - | - |
| search\_query | String | Valor de la consulta de búsqueda. Este campo es obligatorio. |

## trackTransaction

El método `trackTransaction()` se ejecuta cuando se produce una transacción o compra.

```javascript theme={null}
Kameleoon.API.Products.trackTransaction(
 [
  {
   "productID": "myProductID1",
   "quantity": 4
  },
  {
   "productID": "myProductID4564",
   "quantity": 1
  }
 ],
 {
  "order": "N318",
  "order_price": 29999
 }
);
```

**Argumentos**

| Nombre | Tipo | Descripción |
| - | - | - |
| products | Array | Lista de objetos que contienen `productID` y `quantity` para cada producto de la transacción. Este campo es obligatorio. |
| params | Object | [Parámetros adicionales para la plataforma de recomendaciones.](#additional-parameters-for-tracktransaction) Este campo es opcional. |

### Parámetros adicionales para trackTransaction

| Nombre | Tipo | Descripción |
| - | - | - |
| order | string | Número de pedido de la tienda. Si lo omite, el motor utiliza un sistema interno de numeración, lo que impide la sincronización del estado del pedido. Consulte las descripciones de parámetros a continuación. |
| order\_price | Number | Coste final del pedido, incluyendo descuentos, bonificaciones y servicios adicionales. Si lo omite, el motor calcula el coste a partir de la base de datos de productos sin descuentos ni servicios. |
| email | string | Correo electrónico del cliente. |
| phone | string | Número de teléfono del cliente. |
| promocode | string | Código promocional de la transacción. |
| order\_cash | number | Importe pagado en efectivo. |
| order\_bonuses | number | Importe pagado con bonificaciones. |
| order\_delivery | number | Coste de envío. |
| order\_discount | number | Importe del descuento del pedido. |
| delivery\_type | string | Método de envío. |
| payment\_type | string | Tipo de pago (por ejemplo, "cash", "card", "wire"). |
| tax\_free | boolean | Estado de exención de impuestos. |
