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

> Référence des méthodes Kameleoon.API.Goals qui déclenchent des objectifs, traitent les conversions et annulent les conversions.

Ce module gère le déclenchement des objectifs et les données de conversion, y compris les confirmations d'achat et l'enregistrement des revenus.

## cancelConversion

La méthode `cancelConversion()` annule une conversion que vous avez déclenchée pendant la visite en cours. Cette méthode ne peut pas annuler les conversions des visites précédentes.

```javascript theme={null}
var buttons = Kameleoon.API.Utils.querySelectorAll(".btnRemoveFromCart");

buttons.forEach(function (button) {
  Kameleoon.API.Utils.addEventListener(button, "mousedown", function (event) {
    Kameleoon.API.Goals.cancelConversion(event.target.id);
  });
});
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| goalNameOrID | String or Number | Nom ou ID de l'objectif tel que défini dans Kameleoon App. Ce champ est obligatoire. |

## processConversion

> [!WARNING]
>
> Avant d'implémenter processConversion, consultez la fonction [Code personnalisé pour objectif personnalisé](#triggergoal-custom-code-for-custom-goal), qui simplifie la personnalisation en supprimant le besoin d'un ID d'objectif.

La méthode `processConversion()` déclenche une conversion. Les métadonnées doivent être [configurées dans Kameleoon App](https://docs.kameleoon.com/fr/user-manual/assets/goals/create-a-goal.md#métadonnées) avant de les définir avec `processConversion()`.

```javascript theme={null}
// Conversion pour l'objectif « Ajouter au panier » (id d'objectif 123456)
Kameleoon.API.Core.runWhenElementPresent("#buyButton", ([buyButton]) => {
  Kameleoon.API.Utils.addEventListener(buyButton, "click", () => {
    Kameleoon.API.Goals.processConversion(123456); //Add to cart
  });
});

// Conversion pour l'objectif « Ajouter au panier » (id d'objectif 123456) avec argument de revenu optionnel
Kameleoon.API.Core.runWhenElementPresent("#buyButton", ([buyButton]) => {
  Kameleoon.API.Utils.addEventListener(buyButton, "click", () => {
    Kameleoon.API.Goals.processConversion(123456, 19.99); //Add to cart
  });
});
```

> [!NOTE]
>
> Si vous déclenchez des conversions depuis un système de gestion de balises, tel que Google Tag Manager, utilisez la [Command Queue](https://docs.kameleoon.com/fr/developer-docs/apis/activation-api-js/api-reference/command-queue.md) pour retarder l'exécution jusqu'au chargement du moteur. Le moteur traite les commandes en file d'attente dans l'ordre après son initialisation. Exemple :
>
> ```javascript theme={null}
> window.kameleoonQueue = window.kameleoonQueue || [];
> kameleoonQueue.push(['Kameleoon.API.Goals.processConversion', 'GOAL_ID']);
> ```

**Arguments**

| Name | Type | Description |
| - | - | - |
| goalNameOrID | String or Number | Nom ou ID de l'objectif tel que défini dans Kameleoon App. Les noms d'objectifs doivent être uniques. Ce champ est obligatoire. |
| revenue | Number | Montant de la transaction. Fournir cette valeur permet à Kameleoon de suivre les mesures d'achat, tel que le chiffre d'affaires et le montant moyen du panier. Ce champ est facultatif. |
| metadata | Object | Définit des valeurs spécifiques pour les données personnalisées définies comme métadonnées d'objectif dans l'application Kameleoon. [Définissez les métadonnées au préalable dans l'application Kameleoon](https://docs.kameleoon.com/fr/user-manual/assets/goals/create-a-goal.md#métadonnées). Les clés de l'objet sont les **index des données personnalisées** (valeurs numériques figurant dans la colonne `INDEX` du [tableau de bord des données personnalisées](https://docs.kameleoon.com/fr/user-manual/assets/custom-data/manage-custom-data.md#trouver-l’index-d’une-donnée-personnalisée)). Ce champ est facultatif. |

> [!NOTE]
>
> Les valeurs de métadonnées sont accessibles via [exportations de données brutes](https://docs.kameleoon.com/fr/user-manual/experiment-analytics/analyze-results/results-page/results-page-actions.md) et [la page des résultats](https://docs.kameleoon.com/fr/user-manual/experiment-analytics/analyze-results/data-and-metrics/goal-metadata.md).
>
> Si vous fournissez le paramètre `metadata`, Kameleoon utilise ces valeurs pour la conversion au lieu des valeurs que vous avez précédemment collectées via `setCustomData()`. Si vous omettez le paramètre, Kameleoon utilise les dernières valeurs `customData` suivies avant la conversion au cours de la même visite.
>
> Kameleoon ne considère que les valeurs de métadonnées que vous transmettez directement à la méthode `processConversion()` ; il ignore les données personnalisées précédemment définies. Dans l'exemple suivant, la conversion s'associe uniquement aux métadonnées fournies (par exemple, l'index 5 avec « Amex Credit Card »).
>
> ```javascript theme={null}
> Kameleoon.API.Data.setCustomData(5, 'Credit Card');
> Kameleoon.API.Data.setCustomData(9, 'Express Delivery');
>
> Kameleoon.API.Goals.processConversion("GoalIDorName", revenue, {
>     5: ["Amex Credit Card", "PayPal"], // PaymentMode Custom Data
>     4: 1234567, // OrderID CustomData
>     3: "1q2w3e4r" // PayPalID CustomData 
> })
> ```

## triggerGoal (Custom Code for Custom Goal)

Pour déclencher les **objectifs personnalisés**, injectez du code personnalisé en créant un nouvel objectif et en ajoutant le code au panneau `Trigger my goal`.

![Ajout de code personnalisé dans le panneau Trigger my goal d'un objectif personnalisé](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/api-tutorial/custom-code-for-custom-goals.gif)

The `triggerGoal()` function déclenche l'objectif de la code panel without requiring un objectif ID.

```javascript theme={null}
//No params
triggerGoal();
//With revenue
triggerGoal(49.99);
//With revenue and metadata
triggerGoal(49.99, {5: "Gold"});
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| revenue | Number | Montant de la transaction. Fournir cette valeur permet à Kameleoon de suivre les mesures d'achat, tel que le chiffre d'affaires et le montant moyen du panier. Ce champ est facultatif. |
| metadata | Object | Définit des valeurs spécifiques pour les données personnalisées définies comme métadonnées d'objectif dans l'application Kameleoon. Les clés de l'objet sont les **index des données personnalisées** (valeurs numériques figurant dans la colonne `INDEX` du [tableau de bord Données personnalisées](https://docs.kameleoon.com/fr/user-manual/assets/custom-data/manage-custom-data.md)). Ce champ est facultatif. |

> [!NOTE]
>
> Les valeurs de métadonnées sont accessibles via [exportations de données brutes](https://docs.kameleoon.com/fr/user-manual/experiment-analytics/analyze-results/results-page/results-page-actions.md) et [la page des résultats](https://docs.kameleoon.com/fr/user-manual/experiment-analytics/analyze-results/data-and-metrics/goal-metadata.md).
>
> Si vous fournissez le paramètre `metadata`, Kameleoon utilise ces valeurs pour la conversion au lieu des valeurs que vous avez précédemment collectées via `setCustomData()`. Si vous omettez le paramètre, Kameleoon utilise les dernières valeurs `customData` suivies avant la conversion au cours de la même visite.
>
> Kameleoon ne considère que les valeurs de métadonnées que vous transmettez directement à la méthode `triggerGoal()` ; il ignore les données personnalisées précédemment définies. Dans l'exemple suivant, la conversion s'associe uniquement aux métadonnées fournies (par exemple, l'index 5 avec « Amex Credit Card »).
>
> ```javascript theme={null}
> Kameleoon.API.Data.setCustomData(5, 'Credit Card');
> Kameleoon.API.Data.setCustomData(9, 'Express Delivery');
>
> triggerGoal( revenue, {
>     5: ["Amex Credit Card", "PayPal"], // PaymentMode Custom Data
>     4: 1234567, // OrderID CustomData
>     3: "1q2w3e4r" // PayPalID CustomData 
> })
>
> ```
