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

> ゴールのトリガー、コンバージョンの処理、コンバージョンの取り消しを行う Kameleoon.API.Goals メソッドのリファレンスです。

このモジュールは、購入確認や売上登録を含む、ゴールのトリガリングおよびコンバージョンデータを管理します。

## cancelConversion

`cancelConversion()` メソッドは、現在のビジットでトリガーされたコンバージョンを取り消します。このメソッドで、以前のビジットのコンバージョンを取り消すことはできません。

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

**引数**

| 名前 | 型 | 説明 |
| - | - | - |
| goalNameOrID | String または Number | Kameleoon App で定義されたゴールの名前または ID。このフィールドは必須です。 |

## processConversion

> [!WARNING]
>
> processConversion を実装する前に、[カスタムゴール用カスタムコード](#triggergoal-カスタムゴール用カスタムコード)機能を確認してください。この機能を使用すると、ゴール ID を指定する必要がなくなるため、カスタマイズが簡単になります。

`processConversion()` メソッドはコンバージョンをトリガーします。メタデータは、`processConversion()` で設定する前に [Kameleoon App で構成](https://docs.kameleoon.com/ja/user-manual/assets/goals/create-a-goal.md#メタデータ) されている必要があります。

```javascript theme={null}
//Conversion for "Add to cart" goal (goal id 123456)
Kameleoon.API.Core.runWhenElementPresent("#buyButton", ([buyButton]) => {
  Kameleoon.API.Utils.addEventListener(buyButton, "click", () => {
    Kameleoon.API.Goals.processConversion(123456); //Add to cart
  });
});

//Conversion for "Add to cart" goal (goal id 123456) with optional revenue argument
Kameleoon.API.Core.runWhenElementPresent("#buyButton", ([buyButton]) => {
  Kameleoon.API.Utils.addEventListener(buyButton, "click", () => {
    Kameleoon.API.Goals.processConversion(123456, 19.99); //Add to cart
  });
});
```

> [!NOTE]
>
> Google Tag Manager などのタグ管理システムからコンバージョンを送信する場合は、[Command Queue](https://docs.kameleoon.com/ja/developer-docs/apis/activation-api-js/api-reference/command-queue.md) を使用して、エンジンが読み込まれるまで実行を遅らせてください。エンジンは初期化後にキュー内のコマンドを順番に処理します。例:
>
> ```javascript theme={null}
> window.kameleoonQueue = window.kameleoonQueue || [];
> kameleoonQueue.push(['Kameleoon.API.Goals.processConversion', 'GOAL_ID']);
> ```

**引数**

| 名前 | 型 | 説明 |
| - | - | - |
| goalNameOrID | String または Number | Kameleoon App で定義されたゴールの名前または ID。ゴール名は一意である必要があります。このフィールドは必須です。 |
| revenue | Number | 取引金額。この値を指定することで、Kameleoon は売上や平均カート金額などの購入指標を追跡できます。このフィールドは省略可能です。 |
| metadata | Object | Kameleoon アプリでゴールのメタデータとして定義されたカスタムデータに特定の値を設定します。[事前に Kameleoon アプリでメタデータを定義してください](https://docs.kameleoon.com/ja/user-manual/assets/goals/create-a-goal.md#メタデータ)。オブジェクトのキーは**カスタムデータのインデックス**です(値は[カスタムデータのダッシュボード](https://docs.kameleoon.com/ja/user-manual/assets/custom-data/manage-custom-data.md#カスタムデータのインデックスを確認する)の `INDEX` 列にある数値です)。このフィールドは省略可能です。 |

> [!NOTE]
>
> メタデータの値は [生データのエクスポート](https://docs.kameleoon.com/ja/user-manual/experiment-analytics/analyze-results/results-page/results-page-actions.md#エクスポート) および [結果ページ](https://docs.kameleoon.com/ja/user-manual/experiment-analytics/analyze-results/data-and-metrics/goal-metadata.md) からアクセスできます。
>
> `metadata` パラメータを指定すると、Kameleoon は以前に `setCustomData()` を介して収集された値ではなく、現在のコンバージョンにそれらの値を使用します。パラメータを省略した場合、Kameleoon は同じ訪問内でコンバージョン前に最後に追跡された `customData` の値を使用します。
>
> Kameleoon は `processConversion()` メソッドに直接渡されたメタデータの値のみを考慮し、以前に設定されたカスタムデータは無視します。次の例では、コンバージョンは指定されたメタデータ (例: インデックス 5 に '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 (カスタムゴール用カスタムコード)

**カスタムゴール**をトリガーするには、新しいゴールを作成し、`Trigger my goal` パネルにコードを追加してカスタムコードを挿入します。

![カスタムゴールの Trigger my goal パネルにカスタムコードを追加する操作](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/api-tutorial/custom-code-for-custom-goals.gif)

`triggerGoal()` 関数は、ゴール ID を必要とせずにコードパネルからゴールをトリガーします。

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

**引数**

| 名前 | 型 | 説明 |
| - | - | - |
| revenue | Number | 取引金額。この値を指定することで、Kameleoon は売上や平均カート金額などの購入指標を追跡できます。このフィールドは省略可能です。 |
| metadata | Object | Kameleoon App でゴールメタデータとして定義されたカスタムデータに特定の値を設定します。オブジェクトのキーは **カスタムデータのインデックス**（[Custom data ダッシュボード](https://docs.kameleoon.com/ja/user-manual/assets/custom-data/manage-custom-data.md#カスタムデータのインデックスを確認する) の `INDEX` 列にある数値）です。このフィールドは省略可能です。 |

> [!NOTE]
>
> メタデータの値は [生データのエクスポート](https://docs.kameleoon.com/ja/user-manual/experiment-analytics/analyze-results/results-page/results-page-actions.md#エクスポート) および [結果ページ](https://docs.kameleoon.com/ja/user-manual/experiment-analytics/analyze-results/data-and-metrics/goal-metadata.md) からアクセスできます。
>
> `metadata` パラメータを指定すると、Kameleoon は以前に `setCustomData()` を介して収集された値ではなく、現在のコンバージョンにそれらの値を使用します。パラメータを省略した場合、Kameleoon は同じ訪問内でコンバージョン前に最後に追跡された `customData` の値を使用します。
>
> Kameleoon は `triggerGoal()` メソッドに直接渡されたメタデータの値のみを考慮し、以前に設定されたカスタムデータは無視します。次の例では、コンバージョンは指定されたメタデータ (例: インデックス 5 に '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 
> })
>
> ```
