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

# Almacenar y recuperar datos externos para segmentar usuarios

> Almacene datos externos de CRM o CDP de usuarios en Kameleoon usando el endpoint Map de la Data API, y úselos como condición de targeting en segmentos de experimentos.

Las soluciones de Web y Feature Experimentation de Kameleoon permiten segmentar usuarios basándose en datos externos almacenados en otros sistemas (como CRMs y CDPs), usando el [endpoint Map de la Data API](/api-reference/map/update-data-for-several-keys) y los [custom data](../../../custom-data).

Este tutorial trata sobre:

* Almacenamiento de datos externos de usuarios usando el [endpoint POST Map](/api-reference/map/update-data-for-several-keys).
* Lectura de datos de usuarios usando el [endpoint GET Map](/api-reference/map/get-data-for-a-key). (Nota: [Este paso](#obtener-datos-usando-retrievedatafromremotesource-activation-api) utiliza un método de la Activation API para **Web Experimentation** que envuelve la **Data API**. Para **Feature Experimentation**, hay disponible un método similar en los SDKs de Kameleoon, que simplifica el proceso al evitar la lógica manual de llamada a la API).
* Aprovechamiento de los datos almacenados en un segmento de targeting utilizando custom data con experimentos.

## Publicar datos usando el endpoint MAP de la DATA API

Como la Data API es una **API REST**, una solicitud **POST** al endpoint [MAP](/api-reference/map/update-data-for-several-keys) almacena información adicional vinculada a una clave concreta —que normalmente representa un código de visitante o un ID interno de usuario proporcionado cuando un usuario visita el sitio web.

<Note>
  Puede obtener un token de autenticación para acceder al endpoint MAP siguiendo el mismo flujo que la [Automation API](../../automation-api-rest/get-started/get-started#autenticación) con tokens JSON web (opcional). Para obtener más información sobre la autenticación y la limitación de velocidad, consulte [este artículo](../overview#authentication-and-rate-limiting).
</Note>

La solicitud cURL debe incluir los siguientes parámetros:

* **`siteCode`**: Una cadena de letras y números que identifica el proyecto de experimentación. Consulte [este artículo](/user-manual/faq#how-do-i-find-my-sitecode) para aprender cómo recuperarlo.
* **Objeto JSON**: El cuerpo de la solicitud contiene un objeto formado por una lista de claves y los datos de usuario relevantes.
* **`User-Agent`**: Las solicitudes identificadas como bots o spiders se rechazan según las [reglas de filtrado de user-agent de IAB/ABC](https://www.iab.com/guidelines/iab-abc-international-spiders-bots-list/). Kameleoon utiliza un método de una sola pasada, lo que significa que no se requiere ninguna acción para las solicitudes provenientes de bibliotecas estándar de navegador web (como XHR). **Sin embargo, establezca un valor personalizado de `User-Agent` para sobrescribir el valor por defecto de la biblioteca en otros casos.**

```shell theme={null}
curl -X POST -L 'https://eu-data.kameleoon.io/map/maps?siteCode=f17c21u1ag' \
-H 'Content-Type: application/json' \
-H 'User-Agent: MyCustomUserAgent/1.0' \
-d '{
	"myUserID1": {
        "audiencesNames": {
            "premium": true
        }
    },
    "myUserID2": {
        "audiencesNames": {
            "premium": false
        }
    },
    ...
}'
```

<Note>
  Una solicitud procesada no devuelve contenido. Para verificar el éxito, envíe una solicitud a [este endpoint](/api-reference/map/get-data-for-a-key) usando la siguiente URL: `https://eu-data.kameleoon.io/map/map?siteCode=f17c21u1ag&key=myUserID1`
</Note>

## Obtener datos usando `retrieveDataFromRemoteSource` (Activation API)

Con los datos almacenados en los servidores de Kameleoon, utilice los custom data para acceder a la información de las personas que visitan el sitio. Los custom data sirven como **condición de targeting** dentro de los segmentos de experimento.

En primer lugar, cree y configure los custom data en Kameleoon.

En el menú de la izquierda del dashboard de Kameleoon, haga clic en **Custom data** dentro de **Configure**:

<Frame>
  ![Configuration](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/dataapitutorial/Configure.png)
</Frame>

Será redirigido al dashboard de custom data. Haga clic en **New custom data** en la esquina superior derecha.

<Frame>
  ![New\_custom\_data](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/dataapitutorial/New.png)
</Frame>

Accederá a la ventana **Edit the custom data**.

<Frame>
  ![Custom\_data\_window](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/dataapitutorial/custom-data-window.png)
</Frame>

Ejemplo: Cree un custom data llamado "Premium users" para los usuarios con un estado "premium" igual a `true`. Esta información se guardó en el [paso anterior](#post-data-using-the-data-apis-map-endpoint).

```shell theme={null}
"audiencesNames": {
  "premium": true
}
```

Para identificar a los usuarios con un estado premium igual a `true`, ajuste el método de recuperación a **Custom JavaScript** e inserte el siguiente código para el método `retrieveDataFromRemoteSource` en **Paste a sample code**:

```javascript theme={null}
Kameleoon.API.Data.retrieveDataFromRemoteSource(user_id, function (data) {

if (data && data.audiencesNames && data.audiencesNames.premium !== undefined) {
Kameleoon.API.Data.setCustomData("Premium users", data.audiencesNames.premium);
}});
return {"value": null};
```

Este método recupera el valor almacenado para un usuario específico. En el código de ejemplo, la variable `user_id` contiene el ID único del usuario.

<Note>
  Los proyectos que utilizan Kameleoon Feature Experimentation pueden usar el método del SDK `getRemoteData()` dentro del código del feature flag para recuperar los datos.
</Note>

Una vez que haya rellenado toda la información en la ventana de creación de custom data, haga clic en **Next**.

<Frame>
  ![Custom\_data\_configured](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/dataapitutorial/cd.png)
</Frame>

<Frame>
  ![Custom\_data\_configured\_extended](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/dataapitutorial/cd2.png)
</Frame>

La siguiente ventana le presentará opciones de configuración adicionales que son opcionales. Haga clic en **Create**:

<Frame>
  ![Custom\_data\_created](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/dataapitutorial/create.png)
</Frame>

Será redirigido a su dashboard de custom data, donde encontrará el custom data **Premium users**.

<Frame>
  ![Custom\_data\_dashboard](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/dataapitutorial/dashboard.png)
</Frame>

Una vez creado el custom data "Premium users", puede utilizarse para el targeting en experimentos.

Para ello, haga clic en **Segments** en **Configure**, en el lado izquierdo del dashboard.

<Frame>
  ![Configure\_segment](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/dataapitutorial/config-segment.png)
</Frame>

Por ejemplo, si desea trabajar con un **New segment**, haga clic en **Edit**.

<Frame>
  ![New\_segment](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/dataapitutorial/new-seg.png)
</Frame>

Después, en el lado izquierdo de la ventana de configuración del **Segment**, en **Conditions** > **Technical**, seleccione el custom data **Premium users** que creó anteriormente.

<Frame>
  ![Conditions](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/dataapitutorial/conditions.png)
</Frame>

A continuación, en **Definitions**, configure el custom data para incluir las visitas con el **custom data Premium users** establecido en **true**.

<Frame>
  ![definition](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/dataapitutorial/definition.png)
</Frame>

A continuación, haga clic en **Next** > **Edit segment**.

<Frame>
  ![EDIT SEGMENT](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/dataapitutorial/save.png)
</Frame>

Ya ha configurado correctamente el segmento para incluir las visitas con el custom data **Premium users**.

Para usar New segment en un experimento, vuelva al dashboard de experimentos.

Haga clic en **Edit** junto al experimento al que desea asociar **New segment**.

<Frame>
  ![Edit-experiment](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/dataapitutorial/edit-experiment.png)
</Frame>

Una vez redirigido a la ventana siguiente, seleccione **Targeting** en la esquina superior izquierda.

<Frame>
  ![Targeting](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/dataapitutorial/Targeting.png)
</Frame>

En **Targeting**, elija **Target a segment** y, a continuación, seleccione **New segment**.

Verá lo siguiente en su pantalla:

<Frame>
  ![Segment\_targetted](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/dataapitutorial/Segment-targeting.png)
</Frame>

Después, en la esquina superior derecha, haga clic en **Launch**.

<Frame>
  ![Launch](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/dataapitutorial/Launch.png)
</Frame>

Se mostrará un resumen del borrador del experimento.

<Frame>
  ![Draft](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/dataapitutorial/Draft.png)
</Frame>

Si está satisfecho con la configuración existente, haga clic en **Launch**.

<Frame>
  ![Launched](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/dataapitutorial/Launched.png)
</Frame>

Vuelva al dashboard y haga clic en el experimento al que asoció el segmento. Verá que **New segment** se ha añadido correctamente al experimento:

<Frame>
  ![Final](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/dataapitutorial/Final.png)
</Frame>
