# Adobe Experience Cloud

{% hint style="success" %}
**Available for:** Consent Management Platform (CMP) & Preference Management Platform (PMP)

**Premium Feature:** Adobe Experience Cloud
{% endhint %}

Didomi allows you to sync user preferences to your Adobe CDP through a server to server native integration with Adobe Experience Cloud.

{% hint style="info" %}
Alternatively, the Adobe Experience Cloud integration can be performed directly from the Didomi console for the Preference Management Platform (PMP).

Organizations who wish to integrate Adobe Experience Cloud with the Consent Management Platform (CMP) will need to do so via API as detailed below.
{% endhint %}

## Implementation

### **Connection**

Didomi connects to Adobe Experience Cloud CDP on your behalf using OAuth2, hence the need to provide the following parameters:

* **Client ID**
* **Client secret**
* **API key**

In addition to that, and in order to target the exact workflow in your CDP you will also need to provide the following parameters:

* Your Adobe Experience organization ID
* Your schema ID
* Your Dataflow ID and endpoint
* Your Dataset ID

Learn more in this [Help center doc](https://docs.didomi.io/integrations/customer-data-platform-cdp/adobe-experience-cloud-cdp).

{% hint style="warning" %}
**Note**: In order to ensure that events are received, Didomi will retry at least five times in the span of five minutes before moving on when your endpoint is down.
{% endhint %}

### **Options**

**Upsert mode**

You can choose allowing Didomi to create contact in Adobe Experience Cloud, by setting `upsert_mode` to true. Otherwise, when a consent is collected but the `organization_user_id` value does not match with any contact in Adobe, the consent update will not be propagated.

**Bidirectional flow**

Please note that the bidirectional flow is not supported at the moment.

### **Mapping**

Didomi uses the entity profile of Adobe CDP and sends the profile attribute property when updating a profile. Hence consent events are mapped to Microsoft Dataverse's contact attributes.

## Configuration

<table><thead><tr><th>Property</th><th width="301.3333333333333">Description</th><th>Required</th></tr></thead><tbody><tr><td>Client ID</td><td>Client ID of your project created in <a href="https://developer.adobe.com/console">Adobe Experience Console</a></td><td>Yes</td></tr><tr><td>Client secret</td><td>Client secret of your project created in <a href="https://developer.adobe.com/console">Adobe Experience Console</a></td><td>Yes</td></tr><tr><td>API key</td><td>API key of your project created in <a href="https://developer.adobe.com/console">Adobe Experience Console</a></td><td>Yes</td></tr><tr><td>Organization ID</td><td>Your Adobe Organization ID (from your <a href="https://developer.adobe.com/console">Adobe Experience Console</a>)</td><td>Yes</td></tr><tr><td>Schema ID</td><td>The profile schema defined in <a href="https://experience.adobe.com/">Adobe Experience Platform</a></td><td>Yes</td></tr><tr><td>Dataflow ID</td><td>The ID of your HTTP API Dataflow in <a href="https://experience.adobe.com/">Adobe Experience Platform</a></td><td>Yes</td></tr><tr><td>Dataflow endpoint</td><td>The endpoint of your HTTP API Dataflow in <a href="https://experience.adobe.com/">Adobe Experience Platform</a></td><td>Yes</td></tr><tr><td>Dataset ID</td><td>The ID of the Dataset created in <a href="https://experience.adobe.com/">Adobe Experience Platform</a></td><td>Yes</td></tr><tr><td>User identifier</td><td>Identifier property for users. Options: <code>email</code>, <code>id</code>, <code>personID</code>.</td><td>Yes</td></tr><tr><td>Upsert mode</td><td>By setting upsert_mode to true you allow Didomi to create contacts in Adobe CDP</td><td>No, Default value = false</td></tr><tr><td>Mappings</td><td>Mapping for properties between Didomi and Adobe CDP</td><td>Yes</td></tr></tbody></table>

### API Example

```javascript
{
    "type_id": "adobe-experience-cloud",
    "authentication": {
        "client_id": "your_client_id",
        "client_secret": "your_client_secret",
        "api_key": "your_adobe_api_key",
    },
    "properties": {
        "organization_id": "your_adobe_organization_id",
        "dataflow_endpoint":"your_adobe_dataflow_endpoint",
        "dataflow_id":"your_adobe_dataflow_id",
	"schema_id": "your_schema_id",
	"dataset_id":"your_adobe_dataset_id",
	"user_identifier": ["email"]
    },
    "mappings": [
        {
	    "id": "adobe_profile_attribute_logical_name",
	    "value": "consents_purposes_newsletter_enabled"
	}
    ],
    "upsert_mode": true
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.didomi.io/integrations/third-party-apps/adobe-experience-cloud.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
