> ## 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

> Référence des méthodes Kameleoon.API.Products qui envoient les vues de produits et de catégories, les recherches, les modifications du panier et de la liste de souhaits, ainsi que les achats.

Utilisez ces méthodes pour envoyer à Kameleoon les vues de produits et de catégories, les recherches, les modifications du panier et de la liste de souhaits, ainsi que les achats.

> [!NOTE]
>
> Ce module est disponible lorsque vous êtes abonné au module Recommandation de produits ou à l'extension Ciblage de produits.

## trackAddToCart

La méthode `trackAddToCart()` se déclenche lorsqu'un visiteur ajoute un produit au panier.

```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', // voir le tableau des arguments pour plus d'informations
    recommended_by: 'dynamic'// voir le tableau des arguments pour plus d'informations
  });
});
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| productID | String | Identifiant unique du produit. Ce champ est obligatoire. |
| unitPrice | Number | Prix d'une unité du produit référencé par **productID**. Ce champ est facultatif ; s'il n'est pas spécifié, Kameleoon utilise le prix par défaut du produit issu du flux de produits importé. |
| amount | Number | Quantité totale du produit après la mise à jour du panier. Utilisez les valeurs non-croissantes. Par exemple, si le panier contient deux articles avec le même `productID` et que vous en ajoutez un autre, spécifiez 3. Si vous supprimez deux articles d'un panier contenant 20, spécifiez 18. |
| parameters | Object | [Paramètres pour la plateforme de recommandation.](#paramètres-pour-la-plateforme-de-recommandation) Ce champ est optionnel. |

### Paramètres pour la plateforme de recommandation

| Name | Type | Description |
| - | - | - |
| recommended\_by | String | Pour les SPA ou les fenêtres contextuelles, définissez cette valeur sur "dynamic". Ce champ est obligatoire dans certains scénarios. |
| recommended\_code | String | Pour les SPA ou les pop-ups, fournissez le code de widget unique trouvé dans l'attribut « data-recommender-code » de votre compte. |
| stock | Boolean | Disponibilité du produit. Cette valeur remplace les données des flux de produits ou des importations de catalogues. Ce champ est optionnel. |

## trackAddToWishList

La méthode `trackAddToWishList()` s'exécute lorsqu'un visiteur ajoute ou supprime un produit de la liste de souhaits ou des favoris.

```javascript theme={null}
Kameleoon.API.Products.trackAddToWishList("myProductId"); // pour ajouter à la liste de souhaits

Kameleoon.API.Products.trackAddToWishList("myProductId", -1); // pour supprimer de la liste de souhaits
```

| Name | Type | Description |
| - | - | - |
| productId | String | Identifiant unique du produit ajouté à la liste de souhaits. Ce champ est obligatoire. |
| quantity | Number | Quantité à mettre à jour. Utilisez des valeurs négatives (par ex. -1) pour indiquer la suppression. Si omis, la méthode par défaut est **1**. |

## trackCategoryView

La méthode `trackCategoryView()` s'exécute pour chaque affichage de page de catégorie au cours d'une session.

```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);
}
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| categoryID | String | Identifiant unique de la catégorie. Ce champ est obligatoire. |

## trackProductView

La méthode `trackProductView()` s'exécute pour chaque vue de produit au cours d'une session. Cette méthode permet à Kameleoon de construire un catalogue de produits automatisé sans intégration du flux XML, ce qui simplifie la configuration des projets de recommandation de produits.

```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"
        }
    ]
});
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| productID | String | Identifiant du produit. Utilisez une valeur unique qui identifie ce produit. Ce champ est obligatoire. |
| productData | Object | [Objet Product](https://docs.kameleoon.com/fr/developer-docs/apis/activation-api-js/api-reference/objects/goal-segment-trigger-and-product.md#product). Ce champ est obligatoire pour importer des flux de produits via l'add-on Product Recommendation. |

## trackSearchQuery

The `trackSearchQuery()` method records user search queries.

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

**Arguments**

| Name | Type | Description |
| - | - | - |
| search\_query | String | La valeur de la requête de recherche. Ce champ est obligatoire. |

## trackTransaction

The `trackTransaction()` method executes lorsque a transaction or purchase occurs.

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

**Arguments**

| Name | Type | Description |
| - | - | - |
| products | Array | Liste des objets contenant le `productID` et la `quantity` pour chaque produit dans la transaction. Ce champ est obligatoire. |
| params | Object | [Paramètres supplémentaires pour la plateforme de recommandation.](#additional-parameters-for-tracktransaction) Ce champ est optionnel. |

### Paramètres supplémentaires pour trackTransaction

| Name | Type | Description |
| - | - | - |
| order | string | Numéro de commande du magasin. Si vous omettez ceci, le moteur utilise un système de numérotation interne, qui empêche la synchronisation du statut de commande. Consultez les descriptions des paramètres ci-dessous. |
| order\_price | Number | Coût final de la commande, incluant les remises, les bonus et les services supplémentaires. Si vous omettez cela, le moteur calcule le coût à partir de la base de données des produits sans remises ni services. |
| email | string | Customer email. |
| phone | string | Customer phone number. |
| promocode | string | Transaction promo code. |
| order\_cash | number | Cash payment amount. |
| order\_bonuses | number | Bonus payment amount. |
| order\_delivery | number | Delivery fee. |
| order\_discount | number | Order discount amount. |
| delivery\_type | string | Delivery method. |
| payment\_type | string | Payment type (e.g., "cash", "card", "wire"). |
| tax\_free | boolean | Tax-free status. |
