> For the complete documentation index, see [llms.txt](https://docs.mediarithmics.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mediarithmics.io/connectors/destinations/google/ad-manager-batch-upload.md).

# Ad Manager - Batch Upload

Synchronise audiences with Google Ad Manager by batch upload, including publisher provided identifiers.

The Google Ad Manager batch upload connector synchronises your audiences with Google Ad Manager through a file upload. It is the route that carries **PPIDs** - publisher provided identifiers.

<table data-search="false"><thead><tr><th width="220">Connection</th><th></th></tr></thead><tbody><tr><td><strong>Type</strong></td><td>Server-side</td></tr><tr><td><strong>Category</strong></td><td><a href="/connectors/partner-types/ssp-and-ad-servers.md">SSP &#x26; ad servers</a></td></tr><tr><td><strong>Identifiers sent</strong></td><td>Mobile and TV advertising IDs, network IDs, PPIDs, user account IDs</td></tr><tr><td><strong>Authentication</strong></td><td>Service account whitelisted in your GCP / GAM instance</td></tr></tbody></table>

## Description

### What you can do with this connector

* Synchronise a mediarithmics segment with Google Ad Manager by batch upload.
* Activate on identifiers the API connector does not carry, PPIDs in particular.
* Feed a Google user list that already exists, or let the connector create one.

### Which identifiers are sent

* **Android Advertising ID (AAID)**
* **Apple Identifier for Advertisers (IDFA)**
* **Android Advertising ID (AAID) for Android TV**
* **Apple Advertising ID (IDFA) for Apple TV**
* **Custom mobile IDs**
* **Mobile vendor IDs**
* **Network IDs**
* **PPIDs** (Publisher Provided Identifiers)
* **Tizen ID for Advertisers (TIFA)** on Samsung TV
* **User account IDs**

{% hint style="info" %}
A **PPID** is a user identifier defined by the publisher, from the identifiers they collect - an IDFV, a hashed email, and so on. To push one, it must be stored as a **User Account ID** in mediarithmics. See the **Setup & Monitor** section, under *Collect & manage your data › Design your data model & schema › User identity › User identifiers › User Account*.
{% endhint %}

{% hint style="warning" %}
PPID may not be enabled on your network. Contact your Google account manager to activate it.
{% endhint %}

## Connector setup

### Prerequisites

Activating your first batch upload feed requires a **whitelisting** process:

* You grant mediarithmics access to create and list Audience Segments.
* You have access to the target file storage solution.
* Google provides a **destination token**.
* You send mediarithmics your **Ad Network Code**.

### Authentication

In your GCP / GAM instance, authorise mediarithmics to:

* **create and list Audience Segments** in Google Ad Manager, plus Key Value Management;
* **read and write** to the GCP bucket Google generates.

The service account to whitelist is `mediarithmics-ppid-audience-fe@ppid-audience-feed.iam.gserviceaccount.com`.

### Setup steps

{% stepper %}
{% step %}
**Whitelist the mediarithmics service account in your GCP / GAM instance.**

With the two permissions above.
{% endstep %}

{% step %}
**Collect the destination token from Google and send your Ad Network Code to mediarithmics.**
{% endstep %}

{% step %}
**Select the Google Ad Manager batch upload connector and fill in the mandatory fields.**

<table data-search="false"><thead><tr><th width="320">Field</th><th></th></tr></thead><tbody><tr><td><strong>Name</strong></td><td>Identifies the feed. Used inside the platform only; not visible on the external system.</td></tr><tr><td><strong>Description</strong></td><td>The description of the feed.</td></tr><tr><td><strong>Destination Token</strong></td><td>Provided by Google.</td></tr><tr><td><strong>Ad Network Code</strong></td><td>Yours to provide.</td></tr><tr><td><strong>Consent status for the use of ad user data</strong></td><td><code>GRANTED</code>, <code>DENIED</code> or <code>UNSPECIFIED</code>. See <a href="/connectors/destinations/google/consent-management.md">Google - Consent management</a>.</td></tr><tr><td><strong>Consent status for the use of ad personalization data</strong></td><td><code>GRANTED</code>, <code>DENIED</code> or <code>UNSPECIFIED</code>. See <a href="/connectors/destinations/google/consent-management.md">Google - Consent management</a>.</td></tr><tr><td><strong>Identifiers resources</strong></td><td><code>USER_ACCOUNT</code>, <code>MOBILE_ADVERTISING_ID</code>, <code>CUSTOM_DEVICE_ID</code>, <code>MOBILE_VENDOR_ID</code>, <code>NETWORK_DEVICE_ID</code>.</td></tr></tbody></table>
{% endstep %}

{% step %}
**Set the advanced fields if you need them.**

<table data-search="false"><thead><tr><th width="320">Field</th><th></th></tr></thead><tbody><tr><td><strong>Format Google segment name in a special format</strong></td><td>Adds the segment ID as a suffix: the Google user list becomes <code>SEGMENT_NAME[SEGMENT_ID]</code>.</td></tr><tr><td><strong>Custom Criteria key_id</strong></td><td>Ensures only the intended users enter the segment. Default <code>mics</code>. Up to 10 characters, without hyphens (<code>-</code>). The format is checked when the audience is created, so existing feeds are not affected.</td></tr><tr><td><strong>Custom Criteria value</strong></td><td>The value for that key. Default <code>mics-ppid</code>.</td></tr><tr><td><strong>Google List Id</strong></td><td>Fills an existing list instead of creating one.</td></tr><tr><td><strong>Google List name</strong></td><td>Customises the Google user list name. <strong>Google List Id takes precedence over this.</strong></td></tr><tr><td><strong>Segment creation date on Google Ad Manager</strong></td><td>Filled in by the connector. Do not fill this field.</td></tr></tbody></table>
{% endstep %}
{% endstepper %}

Creating and activating the feed on a segment is covered in the **Audience & Activation** section, under *Activate your audiences › Send your first-party data to a destination*.

## Good to know

{% hint style="info" %}
Following Google's specifications, an audience activated in mediarithmics starts being populated in Ad Manager **at least 24 hours after its creation**.
{% endhint %}

## FAQ

#### Why is my audience still empty in Ad Manager?

Google populates it at least 24 hours after creation. Wait a day before investigating further.

#### How do I send a hashed email as a PPID?

Store it as a **User Account ID** in mediarithmics. PPIDs are pushed from the user account resource.

#### I set both Google List Id and Google List name - which wins?

**Google List Id.** The name is ignored when an ID is present.

## Partner documentation

Google Ad Manager documents its own platform at <https://support.google.com/admanager/>. Use it for anything that happens on the partner side of this connector: account setup, the fields the partner expects, and its own limits.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.mediarithmics.io/connectors/destinations/google/ad-manager-batch-upload.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
