Skip to Content

Adform DMP

Create and license audience segments in your Adform Data Management Platform (DMP) account. Zeotap uses the Adform DMP REST API to create and license segments against your chosen org scope (Agency, Advertiser, or Data Marketplace) and drops the identifier payload (MAIDs and Adform cookie IDs) into the Adform-provided S3 bucket for ingestion.

Prerequisites

  • An Adform DMP account with an active Data Provider
  • An OAuth 2.0 Client Credentials application registered with Adform, scoped to dmp.categories and dmp.segments
  • An S3 drop bucket provisioned by Adform, together with AWS Access Key ID and Secret Access Key that can write to it
  • A category named ZEOTAP CDP (or a custom category name of your choosing) created in the Adform DMP UI before the first sync

Permissions

Register your OAuth client with Adform Support (technical@adform.com) using these parameters:

  • Authorization flow: Client Credentials
  • Scopes: https://api.adform.com/scope/dmp.categories, https://api.adform.com/scope/dmp.segments
  • Description: “Facilitate segment creation and licensing for Zeotap CDP”

Adform will email the Client ID and Client Secret, and separately provision the S3 drop bucket and AWS keys.

Authentication

Adform DMP combines two authentication methods in a single destination:

  1. OAuth 2.0 Client Credentials — used to create, look up, and license segments via the Adform DMP REST API. Zeotap exchanges the Client ID and Client Secret against https://id.adform.com/sts/connect/token and caches the bearer token for reuse.
  2. AWS S3 access keys — used to drop identifier files into the Adform-provided S3 bucket. Zeotap uploads one CSV per identifier type per sync batch.

Both credential pairs are entered when you create the destination in Zeotap.

Configuration

FieldTypeRequiredDescription
Organisation TypeSelectYesAgency, Advertiser, or Data Marketplace. Controls which ID fields are required and how the segment is licensed.
Country IDTextConditionalRequired for Agency and Advertiser.
Agency IDTextConditionalRequired for Agency and Advertiser.
Advertiser IDTextConditionalRequired for Advertiser.
Seat IDTextConditionalRequired for Data Marketplace.
Data Provider IDTextYesAdform DMP Account ID visible under Settings.
CategoryTextNoAdform DMP category that hosts the segment. Defaults to ZEOTAP CDP.
S3 Drop BucketTextYesBucket name provisioned by Adform.
S3 RegionSelectYesAWS region for the drop bucket.
S3 Path — MAIDsTextNoFolder prefix for mobile advertising ID files. Defaults to maids/.
S3 Path — CookiesTextNoFolder prefix for Adform cookie ID files. Defaults to cookies/.
CPM PriceTextNoOptional flat CPM price attached to the segment licensing request.
Percent of Media CostTextNoOptional percent-of-media-cost CPM attached to the segment licensing request.

Target Settings

FieldTypeRequiredDescription
Segment NameTextYesName of the Adform DMP segment to create or reuse inside the selected category.
Segment ID (Ref ID)TextNoExisting Adform segment Ref ID to update. Leave blank to let Zeotap look up the segment by name or create it.

Supported Operations

Sync Modes

Adform is audience-only — standard data sync modes are not supported.

Audience Sync Modes

ModeSupported
AddYes
MirrorYes
Remove
Upsert

Because Adform’s segment ingestion is file-based, Zeotap cannot revoke individual identifiers from a previously delivered drop. Mirror excludes rows marked as removed from the new drop so the segment snapshot reflects current membership.

Features

  • Field Mapping: Yes — map your warehouse columns to maid and/or adform_cookie_id
  • Schema Introspection: No

Required Mapping Fields

At least one of these fields must be mapped for every sync:

FieldDescription
maidMobile advertising ID (IDFA or GAID)
adform_cookie_idAdform browser cookie identifier

Default Destination Fields

FieldTypeDescription
maidStringRaw IDFA (iOS) or GAID (Android).
adform_cookie_idStringAdform browser cookie identifier.

How It Works

  1. Zeotap authenticates with Adform using the OAuth 2.0 client credentials grant and caches the access token.
  2. When the destination is saved, Zeotap looks up any existing segment with the supplied name under the configured data provider + category. If none exists, a new segment is created via the Adform DMP REST API.
  3. Zeotap then licenses the segment against your chosen scope (Agency, Advertiser, or Data Marketplace) using the Adform Segment Data Usage API, attaching the optional CPM price or percent-of-media-cost.
  4. For each sync batch, Zeotap splits rows by identifier type (maid versus adform_cookie_id), serialises each group into a CSV with a segmentId column, and uploads one file per identifier type to the configured S3 drop bucket. File names include the data-provider ID, segment ID, sync mode, and a UTC timestamp.
  5. Adform ingests the drop on their side and materialises segment membership in the DMP. The segment then becomes available for activation across Agency, Advertiser, or Data Marketplace buyers according to the licensing you configured.

Rate Limits

  • The Adform DMP REST API enforces account-level rate limits on segment CRUD operations. Zeotap reports HTTP 429 batches as failed and retries on the next sync run.
  • S3 uploads use AWS default throttling. Because each sync produces a small number of CSV files per batch, throttling is unlikely in normal operation.

Best Practices

  • Create the Category up front — Adform does not auto-create categories. Make sure ZEOTAP CDP (or your custom category name) exists in the Adform DMP UI before activating the destination.
  • Reuse existing Segment IDs when migrating an audience already known to Adform to avoid duplicate segments.
  • Pre-provision S3 keys — request the S3 drop bucket and AWS keys from Adform at the same time you request OAuth credentials to avoid configuration gaps.
  • Audit org-scope licensing — the Organisation Type drives who in Adform can see and activate the segment. Double-check the Country / Agency / Advertiser / Seat IDs before going live.
  • Use Mirror for declarative audiences — Mirror mode drops the full current membership on every run and is the closest equivalent to a reset semantic for file-based destinations.

Troubleshooting

Authentication failed: invalid OAuth client credentials

The Client ID and Client Secret are incorrect or the OAuth client has been disabled. Verify the credentials with Adform Support and that the client is scoped to dmp.categories and dmp.segments.

Access forbidden / Data provider not found

The OAuth client does not have access to the configured Data Provider ID. Confirm the Data Provider ID matches the Adform DMP Account ID and that the OAuth client was issued against the same account.

Segment licensing failed

Zeotap successfully created the segment but could not license it to the configured scope. The drop will still run, but the segment will not be visible to the intended Agency / Advertiser / Data Marketplace buyer until licensing is fixed. Confirm the Country / Agency / Advertiser / Seat IDs, then re-run the sync to retry licensing.

S3 upload failed

Verify that the Access Key ID and Secret Access Key have write access to the configured bucket, and that the region matches the bucket’s region. Adform operates buckets in multiple AWS regions — picking the wrong region causes signature or DNS resolution failures.

The source row contains neither a mobile advertising ID nor an Adform cookie ID. Ensure your warehouse query or field mapping exposes at least one of these columns for every row.

Rate limited (HTTP 429)

Adform’s DMP REST API rate-limited the segment CRUD call. Zeotap marks the batch as failed and retries it on the next sync run.

Last updated on