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

> Referenz der Methoden von Kameleoon.API.Data, mit denen benutzerdefinierte Daten gesetzt sowie Daten im Kameleoon-LocalStorage gelesen oder geschrieben werden.

Dieses Modul stellt Methoden zum Festlegen von **benutzerdefinierten Daten** für die Verfolgung von Kundeneigenschaften oder Besuchscharakteristiken bereit. Es umfasst auch Datenverwaltungsmethoden zum Abrufen und Schreiben von Daten im einheitlichen LocalStorage von Kameleoon.

## readLocalData

Die Methode `readLocalData()` liest lokale Daten, die Sie zuvor über `writeLocalData()` gespeichert haben. Die Engine ruft diese Daten aus dem einheitlichen Local Storage ab, das die Standardspeicherbeschränkungen umgeht.

```javascript theme={null}
var userId = Kameleoon.API.Data.readLocalData("myUserId");

if (userId) {
  Kameleoon.API.Data.retrieveDataFromRemoteSource(userId, function (data) {
    console.log(data.returningVisitor);
  });
}
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| key | String | Schlüssel der abzurufenden Daten. Dieses Feld ist erforderlich. |

**Rückgabewert**

| Name | Type | Description |
| - | - | - |
| value | String | Wert der Daten. |

## performRemoteSynchronization

Die Methode `performRemoteSynchronization()` löst einen Server-Synchronisierungsaufruf (SSC) an die Data API aus. Dieser Aufruf ruft den auf den Backend-Servern von Kameleoon gespeicherten Besuchsverlauf des aktuellen Besuchers ab und schreibt ihn in den LocalStorage. So sind die Daten über die Activation API zugänglich und für das Targeting verfügbar. Die Methode läuft in der Regel automatisch für die geräteübergreifende Abstimmung oder für Safari ITP; sie erfordert keinen manuellen Aufruf.

```javascript theme={null}
Kameleoon.API.Data.performRemoteSynchronization("customDataName", "customDataValue", false);
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| key | String | Schlüssel der benutzerdefinierten Daten, die als Mapping-Kennung dienen (z. B. Konto-ID oder E-Mail). Wenn weggelassen, verwendet die Methode die Standard-Kennung, die in der Kameleoon App für die geräteübergreifende Reconciliation konfiguriert ist. |
| value | String | Aktueller Besucher-Kennwert, der für den Daten-API-Aufruf verwendet wird. Wenn weggelassen, verwendet die Methode den aktuellen Wert der benutzerdefinierten Daten, die im ersten Argument bereitgestellt werden. |
| currentVisitOnly | Boolean | Wenn aktiviert, fordert der SSC Daten nur für den aktuellen Besuch an. Verwenden Sie diese Optimierung, um benutzerdefinierte Datenwerte zu aktualisieren, die über die Daten-API oder Server-to-Server-Integration erworben wurden. Wenn weggelassen, wird die Methode standardmäßig auf **false** gesetzt. |

## resetCustomData

The `resetCustomData()` method resets a custom data value.

```javascript theme={null}
Kameleoon.API.Data.resetCustomData("MyCustomDataName");
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| name | String | Name der benutzerdefinierten Daten wie in der Kameleoon App definiert. Dieses Feld ist erforderlich. |

## retrieveDataFromRemoteSource

Die Methode `retrieveDataFromRemoteSource()` ruft auf einem Remote-Kameleoon-Server mit dem angegebenen **Schlüssel** gespeicherte Daten ab. Diese Methode unterstützt das Abrufen von Daten, die zuvor über die Daten-API gespeichert wurden. Verwenden Sie diese Option für schnelle Speicherung und Abruf großer Datenmengen für Besucher.

Dieser asynchrone Mechanismus erfordert eine **callback**-Funktion, wenn der Serveraufruf abgeschlossen ist.

```javascript theme={null}
if (location.href.indexOf("loginPage") != -1) {
  Kameleoon.API.Core.runWhenConditionTrue(function () {
    return typeof dataLayer != null;
  }, function () {
    dataLayer.forEach(function (map) {
      if (map.userId) {
        Kameleoon.API.Data.retrieveDataFromRemoteSource(userId, function (data) {
          Kameleoon.API.Data.setCustomData("known_user", data.knownUser);
        });
      }
    });
  }, 200);
}
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| key | String | Der Lookup-Schlüssel. Dieses Feld ist erforderlich. |
| callback | Function | Funktion, die nach dem Abrufen der Daten durch die Methode ausgeführt wird. Sie erhält ein Argument **data**, bei dem es sich um ein JS-Objekt handelt. Dieses Feld ist erforderlich. |

## setCustomData

Die Methode `setCustomData()` legt einen Custom-Data-Wert fest.

```javascript theme={null}

// Single Type Custom Data
Kameleoon.API.Data.setCustomData("mySingleCustomDataName", "myNewValue"); // --> "myNewValue"

// List Type Custom Data
Kameleoon.API.Data.setCustomData("myListCustomDataName", "myFirstValue"); // --> ["myFirstValue"]
Kameleoon.API.Data.setCustomData("myListCustomDataName", "mySecondValue"); // --> ["myFirstValue", "mySecondValue"]
Kameleoon.API.Data.setCustomData("myListCustomDataName", ["myThirdValue", "myFourthValue"]); // --> ["myFirstValue", "mySecondValue", "myThirdValue", "myFourthValue"]
Kameleoon.API.Data.setCustomData("myListCustomDataName", ["myThirdValue", "myFourthValue"], true); // --> ["myThirdValue", "myFourthValue"]

// Count List Type Custom Data
Kameleoon.API.Data.setCustomData("myCountListCustomDataName", "myFirstValue"); // --> {value: 'myFirstValue', count: 1}
Kameleoon.API.Data.setCustomData("myCountListCustomDataName", "myFirstValue"); // --> {value: 'myFirstValue', count: 2}
Kameleoon.API.Data.setCustomData("myCountListCustomDataName", "mySecondValue"); // --> {value: 'myFirstValue', count: 2}, {value: 'mySecondValue', count: 1}
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| CustomDataNameOrIndex | String or Number | Name oder Index der benutzerdefinierten Daten, wie in der Kameleoon-App definiert. (der Index wird in der Spalte "INDEX" des Dashboards für benutzerdefinierte Daten angezeigt). Dieses Feld ist erforderlich. |
| value | String, Number, Boolean, Array | Wert der benutzerdefinierten Daten. Der übergebene Wert muss dem Typ entsprechen, der für diese benutzerdefinierten Daten in der Kameleoon-App festgelegt ist. Dieses Feld ist erforderlich. **Beachten Sie, dass `setCustomData()` String, Number und Boolean akzeptiert, wenn Sie den `Type` auf `Single` setzen. Wenn Sie den `Type` auf `List` oder `Count List` setzen, akzeptiert die Methode ein Array aus String- oder Number-Werten.** |
| overwrite | Boolean | **Optionaler boolescher Wert**. Wenn `true`, überschreibt der neue Wert vorhandene benutzerdefinierte Daten. Wenn `false` oder weggelassen: **Listen/Zähllisten** fügen Werte an (alle Werte werden in Berichten angezeigt); **Einzelne Typen** überschreiben (nur der neueste Wert wird angezeigt); **Seitenbezogene benutzerdefinierte Daten** (alle Typen) fügen Werte an. |

## writeLocalData

Die Methode `writeLocalData()` zeichnet lokale Daten im Browser des Besuchers für späteres Abrufen über `readLocalData()` auf. Die Engine speichert dies als vereinheitlichte Sitzungsdaten im lokalen Speicher und umgeht damit Standardspeicherbeschränkungen. Daten werden über RAM-Zwischenspeicherung sofort zur Abrufung auf der gleichen Registerkarte verfügbar, während der physische Schreibvorgang asynchron erfolgt.

```javascript theme={null}
Kameleoon.API.Data.writeLocalData("myData", "myDataValue", true);
```

**Arguments**

| Name | Type | Description |
| - | - | - |
| key | String | Schlüssel (Name) der zu schreibenden Daten. Dieses Feld ist erforderlich. |
| value | String | Wert der zu schreibenden Daten. Dieses Feld ist erforderlich. |
| persistent | Boolean | Umschalter für die Datenpersistenz. Nicht-persistente Daten verfallen nach 1 Stunde, während persistente Daten 30 Tage lang bestehen bleiben. Wenn weggelassen, wird die Methode standardmäßig auf **false** gesetzt. |
