> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hightouch.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Adform

> Adform empowers your marketing team to analyze conversion events and develop real-time feedback on the effectiveness of your campaigns.

## Supported syncing

| Sync Type | Description | Supported Sync Modes | API reference |
| - | - | - | - |
| **Conversion Event** | Sync conversion event data to Adform | Insert | [Conversions docs](https://www.adformhelp.com/hc/en-us/articles/9740579489041-Use-Server-Side-Tracking) |
| **Segment** | Sync users from your model to Adform DMP | Add | [Audience base (DMP) docs](https://api.adform.com/help/references/audience-base) |

For more information about sync modes, refer to the [sync modes](https://docs.hightouch.com/syncs/types-and-modes.md#sync-modes) docs.

## Connect to Adform

Go to the [**Destinations** overview page](https://app.hightouch.com/destinations?from=docs), select **Add destination**, select **Adform**, and then select **Continue**.

Adform supports two sync types with different credentials. Enter the fields for the sync types you plan to use:

* For conversion syncs:
  * **Tracking Setup ID**
  * **Tracking Domain**
* For segment syncs:
  * **Client ID**
  * **Client Secret**

You can enter one set of credentials or both if you plan to run both sync types from the same destination.

For segment syncs, ask Adform Support to grant your OAuth client these scopes:

* `https://api.adform.com/scope/dmp.segments`
* `https://api.adform.com/scope/dmp.categories`
* `https://api.adform.com/scope/dmp.authenticated`
* `https://api.adform.com/scope/dmp.dataproviders.readonly`

## Sync configuration

Once you've set up your Adform destination and have a [model](https://docs.hightouch.com/getting-started/concepts.md#models) to pull data from, go to the [**Syncs** overview page](https://app.hightouch.com/syncs?from=docs), select **Add sync**, and then select the relevant model and Adform destination.

For each sync, select **Conversion Event** or **Segment** for **Sync type**.

### Syncing conversion events

Sync conversion event data to Adform.

> [!WARNING]
>
> To ensure syncs send each event, your event model must use a truly unique [primary key](https://docs.hightouch.com/getting-started/concepts.md#unique-primary-key-requirement). See the [events syncs](https://docs.hightouch.com/syncs/types-and-modes.md#event-syncs) documentation for more information.

#### Record matching

You can match rows from your model to conversions in Adform on any column in your model and any field in Adform. Ensure the data types of the model column and Adform field you select match.
Refer to the [record matching docs](https://docs.hightouch.com/syncs/record-matching.md) for more information.

#### Field mapping

Hightouch lets you sync event properties via field mapping.

### Syncing audience segments

Sync users from your model to Adform DMP segments.
You can sync to an existing segment or create a new one on the first sync.

Adform segment syncs are add-only.
If records leave your model, Hightouch doesn't remove them from the segment.

#### Select a data provider

Select the Adform data provider that owns the segments you want to sync.
Hightouch fetches the available data providers using the destination's **Client ID** and **Client Secret**.

#### Select an existing segment or create a new one

You can sync to an existing segment or create a new segment in Hightouch.

If you create a new segment, you also need to configure these fields:

* **Category**: Every Adform segment must belong to one category. You can select an existing category or create a new one on the first sync.
* **Data consumer ID**: Optional. Enter an agency ID or publisher ID if another Adform entity should have access to the segment.
* **TTL (days)**: Optional. Controls how long a user remains in the segment after their last upload. The default is `30`.
* **Frequency**: Optional. Controls the minimum number of occurrences required for a user to qualify for the segment. The default is `1`.

#### Select a user identity type

Select the Adform identity type for the user IDs you upload.
Depending on your Adform setup, supported identifier types can include:

* First-party IDs
* Mobile advertising IDs (MAIDs)
* Adform cookies
* ID5 identifiers

After you select an identity type, map the column from your model that contains that identifier to **User ID**.

#### Batch size

You can optionally set a batch size for segment uploads.
The default is `10000`, and Adform limits each upload file to 100 MB.

## Tips and troubleshooting

To see the exact API requests and responses from each sync run, use the [live debugger](https://docs.hightouch.com/syncs/debugger.md). To get notified by Slack, PagerDuty, SMS, or email when a sync fails, set up [sync alerts](https://docs.hightouch.com/syncs/alerting.md). If you run into an issue this page doesn't cover, [contact support](#pylon-chat).

## Common errors

### Adform DMP token request failed with invalid\_scope

This error means the OAuth client configured on your Adform destination is missing one or more required DMP scopes.

Ask Adform Support to grant these scopes to your OAuth client:

* `https://api.adform.com/scope/dmp.segments`
* `https://api.adform.com/scope/dmp.categories`
* `https://api.adform.com/scope/dmp.authenticated`
* `https://api.adform.com/scope/dmp.dataproviders.readonly`

After Adform updates the client, test the destination connection again.
