# Adobe Marketo Engage

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

**Premium Feature:** Adobe Marketo Engage
{% endhint %}

Didomi allows you to update your Marketo contact attributes with the preferences collected through your preference management platform (PMP).

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

## Implementation

### **Connection**

Didomi connects to Adobe Marketo Engage on your behalf through the following credentials:

* **Client ID**: To get your client ID, navigate to your Marketo Engage Interface -> Admin -> Integration -> Launchpoint menu.
* **Client secret**: To get your client ID, navigate to your Marketo Engage Interface -> Admin -> Integration -> Launchpoint menu.
* **Instance**: Your instance is the Endpoint provided in Marketo Engage through Interface -> Integration -> Web services -> REST API

{% 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 leads in Marketo, by setting `upsert_mode` to true. Otherwise, when a consent is collected but the `organization_user_id` value does not match with any lead in Marketo, the consent update will not be propagated to Marketo.
* **Bidirectional flow**: Please note that the bidirectional flow is not supported at the moment.

### **Mapping**

Didomi uses the entity Person (Lead) of Marketo and sends the Lead attribute property when updating a lead. Hence consent events are mapped to Marketo's lead attributes.

| Property        | Description                                                                 | Required                  |
| --------------- | --------------------------------------------------------------------------- | ------------------------- |
| Upsert mode     | By setting upsert\_mode to true you allow Didomi to create leads in Marketo | No, Default value = false |
| Client ID       | A client ID from your Marketo account                                       | Yes                       |
| Client secret   | A client secret from your Marketo account                                   | Yes                       |
| Instance        | Your Marketo REST api endpoint                                              | Yes                       |
| User identifier | Identifier property for users. Options: `email`, `leadID`.                  | Yes                       |
| Mappings        | Mapping for properties between Didomi and Marketo                           | Yes                       |

### Example

```javascript
{
    "type_id": "marketo",
    "authentication": {
        "client_id": "your_client_id",
        "client_secret": "your_client_secret",
	"instance": "your_marketo_endpoint"
    },
    "properties": {
	"user_identifier": ["email"]
    },
    "mappings": [
        {
	    "id": "lead_attribute_api_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-marketo-engage.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.
