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

> Referenz der Methoden von Kameleoon.API.Goals, mit denen Ziele ausgelöst, Conversions verarbeitet und Conversions storniert werden.

Dieses Modul verwaltet die Auslösung von Zielen und Konversionsdaten, einschließlich Kaufbestätigungen und Umsatzregistrierung.

## cancelConversion

Die Methode `cancelConversion()` storniert eine Conversion, die Sie während des aktuellen Besuchs ausgelöst haben. Diese Methode kann keine Conversions aus früheren Besuchen stornieren.

```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 | Name oder ID des Ziels wie in der Kameleoon App definiert. Dieses Feld ist erforderlich. |

## processConversion

> [!WARNING]
>
> Lesen Sie vor der Implementierung der Konversionsfunktion die Funktion [Benutzerdefinierter Code für benutzerdefiniertes Ziel](#triggergoal-custom-code-for-custom-goal) durch, die die Anpassung vereinfacht, indem die Anforderung für eine Ziel-ID entfernt wird.

Die Methode `processConversion()` löst eine Konversion aus. Metadaten müssen [in der Kameleoon App konfiguriert werden](https://docs.kameleoon.com/de/user-manual/assets/goals/create-a-goal.md), bevor sie mit `processConversion()` gesetzt werden.

```javascript theme={null}
//Konvertierung für das Ziel "Zum Warenkorb hinzufügen" (Ziel-ID 123456)
Kameleoon.API.Core.runWhenElementPresent("#buyButton", ([buyButton]) => {
  Kameleoon.API.Utils.addEventListener(buyButton, "click", () => {
    Kameleoon.API.Goals.processConversion(123456); //Add to cart
  });
});

//Konvertierung für das Ziel "Zum Warenkorb hinzufügen" (Ziel-ID 123456) mit optionalem Umsatzargument
Kameleoon.API.Core.runWhenElementPresent("#buyButton", ([buyButton]) => {
  Kameleoon.API.Utils.addEventListener(buyButton, "click", () => {
    Kameleoon.API.Goals.processConversion(123456, 19.99); //Add to cart
  });
});
```

> [!NOTE]
>
> Wenn Sie Conversions über ein Tag-Management-System wie den Google Tag Manager auslösen, verwenden Sie die [Command Queue](https://docs.kameleoon.com/de/developer-docs/apis/activation-api-js/api-reference/command-queue.md), um die Ausführung bis zum Laden der Engine zu verzögern. Die Engine verarbeitet die eingereihten Befehle nach der Initialisierung der Reihe nach. Beispiel:
>
> ```javascript theme={null}
> window.kameleoonQueue = window.kameleoonQueue || [];
> kameleoonQueue.push(['Kameleoon.API.Goals.processConversion', 'GOAL_ID']);
> ```

**Arguments**

| Name | Type | Description |
| - | - | - |
| goalNameOrID | String or Number | Name oder ID des Ziels wie in der Kameleoon App definiert. Zielnamen müssen eindeutig sein. Dieses Feld ist erforderlich. |
| revenue | Number | Transaktionsbetrag. Wenn Sie diesen Wert angeben, kann Kameleoon Kaufmetriken wie etwa Umsatz und durchschnittliche Warenkorb-Menge verfolgen. Dieses Feld ist optional. |
| metadata | Object | Legt bestimmte Werte für benutzerdefinierte Daten fest, die in der Kameleoon-App als Ziel-Metadaten definiert sind. [Definieren Sie die Metadaten vorab in der Kameleoon-App](https://docs.kameleoon.com/de/user-manual/assets/goals/create-a-goal.md#metadata). Die Objektschlüssel sind die **Indizes der benutzerdefinierten Daten** (numerische Werte in der Spalte `INDEX` des [Dashboards für benutzerdefinierte Daten](https://docs.kameleoon.com/de/user-manual/assets/custom-data/manage-custom-data.md#den-index-einer-benutzerdefinierten-daten-finden)). Dieses Feld ist optional. |

> [!NOTE]
>
> Metadatenwerte sind über [Raw-Data-Exporte](https://docs.kameleoon.com/de/user-manual/experiment-analytics/analyze-results/results-page/results-page-actions.md) und [die Ergebnisseite](https://docs.kameleoon.com/de/user-manual/experiment-analytics/analyze-results/data-and-metrics/goal-metadata.md) zugänglich.
>
> Wenn Sie den Parameter `metadata` bereitstellen, verwendet Kameleoon diese Werte für die Konversion anstelle der Werte, die Sie zuvor über `setCustomData()` erfasst haben. Wenn Sie den Parameter weglassen, verwendet Kameleoon die letzten verfolgten `customData`-Werte vor der Konversion im gleichen Besuch.
>
> Kameleoon berücksichtigt nur die Metadatenwerte, die Sie direkt an die Methode `processConversion()` übergeben; früher festgelegte benutzerdefinierte Daten werden ignoriert. Im folgenden Beispiel ist die Konvertierung nur mit den bereitgestellten Metadaten verknüpft (z. B. Index 5 mit "Amex Kreditkarte").
>
> ```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)

Um **benutzerdefinierte Ziele** auszulösen, injizieren Sie benutzerdefinierten Code, indem Sie ein neues Ziel erstellen und den Code zum Panel `Trigger my goal` hinzufügen.

![Hinzufügen von benutzerdefiniertem Code im Bereich Trigger my goal eines benutzerdefinierten Ziels](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/api-tutorial/custom-code-for-custom-goals.gif)

The `triggerGoal()` function löst aus das Ziel von der code panel without requiring ein Ziel 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 | Transaktionsbetrag. Wenn Sie diesen Wert angeben, kann Kameleoon Kaufmetriken wie etwa Umsatz und durchschnittliche Warenkorb-Menge verfolgen. Dieses Feld ist optional. |
| metadata | Object | Legt bestimmte Werte für benutzerdefinierte Daten fest, die als Zielmetadaten in der Kameleoon App definiert sind. Die Objektschlüssel sind die **Custom-Data-Indizes** (numerische Werte aus der Spalte `INDEX` des [Custom-Data-Dashboards](https://docs.kameleoon.com/de/user-manual/assets/custom-data/manage-custom-data.md#den-index-einer-benutzerdefinierten-daten-finden)). Dieses Feld ist optional. |

> [!NOTE]
>
> Metadatenwerte sind über [Raw-Data-Exporte](https://docs.kameleoon.com/de/user-manual/experiment-analytics/analyze-results/results-page/results-page-actions.md) und [die Ergebnisseite](https://docs.kameleoon.com/de/user-manual/experiment-analytics/analyze-results/data-and-metrics/goal-metadata.md) zugänglich.
>
> Wenn Sie den Parameter `metadata` bereitstellen, verwendet Kameleoon diese Werte für die Konversion anstelle der Werte, die Sie zuvor über `setCustomData()` erfasst haben. Wenn Sie den Parameter weglassen, verwendet Kameleoon die letzten verfolgten `customData`-Werte vor der Konversion im gleichen Besuch.
>
> Kameleoon berücksichtigt nur die Metadatenwerte, die Sie direkt an die Methode `triggerGoal()` übergeben; früher festgelegte benutzerdefinierte Daten werden ignoriert. Im folgenden Beispiel ist die Konvertierung nur mit den bereitgestellten Metadaten verknüpft (z. B. Index 5 mit "Amex Kreditkarte").
>
> ```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 
> })
>
> ```
