Google Campaign Manager 360
Send conversions to Google Campaign Manager 360 (CM360) via the Conversions API to populate remarketing lists and track offline conversions. Upload user identifiers as floodlight conversions that automatically populate remarketing lists associated with the configured floodlight activity.
Prerequisites
- A Google Campaign Manager 360 account with API access enabled
- Your User Profile ID (found in Campaign Manager under your account settings)
- A floodlight activity ID linked to the remarketing list you want to populate
- The floodlight configuration ID for your advertiser
- A Google account with conversion upload permissions
Permissions
The authenticated Google account needs the following Campaign Manager 360 permissions:
- Insert conversions (to upload conversion data via the API)
- View floodlight configurations (to validate the floodlight setup)
The API uses the ddmconversions OAuth scope, which grants read/write access to Campaign Manager 360 offline conversions.
Authentication
Google Campaign Manager 360 uses OAuth 2.0 with PKCE.
- Click Connect with OAuth in Zeotap
- Sign in with your Google account
- Authorize the requested permissions
OAuth scope: https://www.googleapis.com/auth/ddmconversions.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| User Profile ID | Text | Yes | Your Campaign Manager 360 user profile ID (numeric). Found in Campaign Manager under your account settings. Example: 12345678 |
Target Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Floodlight Activity ID | Text | Yes | The floodlight activity ID to associate with uploaded conversions. This activity should be linked to a remarketing list. |
| Floodlight Configuration ID | Text | Yes | The floodlight configuration ID for the advertiser. Found under Floodlight > Configuration in Campaign Manager. |
Supported Operations
Sync Modes
| Mode | Supported |
|---|---|
| Insert | Yes |
| Upsert | — |
| Update | — |
| Mirror | — |
Audience Sync Modes
| Mode | Supported |
|---|---|
| Add | Yes |
| Remove | — |
| Mirror | — |
| Upsert | — |
Features
- Field Mapping: No
- Schema Introspection: No
How It Works
- Authentication: Zeotap authenticates with Google Campaign Manager 360 using OAuth 2.0 tokens with the
ddmconversionsscope - Identifier extraction: Each row must provide a mapped
external_id— this is sent to CM360 as the conversionmatchId, the first-party identifier Campaign Manager 360 requires for every conversion. Email and phone, when available, are normalized and SHA-256 hashed and attached asuserIdentifiersfor enhanced conversions matching - Conversion creation: Each row is mapped to a floodlight conversion event containing the
matchId, the configured floodlight activity ID, a uniqueordinal(to prevent CM360 deduplication from dropping re-syncs), and the batch timestamp - Batch upload: Conversions are uploaded via the
conversions.batchinsertAPI in chunks of 1,000 records per request, with automatic retry on transient errors and rate limits - Per-row status: The API response includes per-conversion status. Rows that CM360 rejects (invalid match ID, missing floodlight, etc.) are surfaced in the sync run’s error report
- Remarketing list population: The associated remarketing list is automatically populated based on the floodlight activity rules configured in Campaign Manager
Required Mapping
You must map a column containing a stable first-party identifier to external_id. This value becomes the CM360 matchId. Rows without an external_id are skipped and reported as failures, because CM360 does not accept conversions without a primary identifier — hashed email or phone alone is not sufficient.
Rate Limits
Google Campaign Manager 360 enforces the following rate limits:
- API quota: Rate limits vary by account; typical limits are around 10 queries per second
- Conversions per request: Recommended to send up to 1,000 conversions per batch insert call
Zeotap automatically chunks uploads and handles rate limit responses with exponential backoff.
Best Practices
- Link floodlight activities to remarketing lists: Before syncing, ensure the floodlight activity is associated with the remarketing list you want to populate in Campaign Manager 360
- Verify floodlight configuration: Double-check the floodlight configuration ID matches the advertiser whose remarketing list you want to populate
- Set up matchId collection first: CM360 requires every uploaded conversion to carry a
matchId— a first-party identifier you previously captured via a Floodlight tag. Configure matchId collection in your Floodlight tag deployment before running syncs, otherwise all uploads will be rejected - Supply enhanced conversions identifiers: When available, also map email and phone columns. Zeotap will SHA-256 hash them and attach them as
userIdentifiersto improve match rates beyond what matchId alone provides - Monitor partial failures: The API response includes per-conversion status. Check sync logs for any partial failure warnings
Troubleshooting
User Profile ID not found
Your User Profile ID is a numeric value found in Campaign Manager 360. Navigate to your account settings or check the URL when logged into CM360 — the profile ID appears in the URL path.
Authentication failed: invalid or expired token
Re-authenticate by clicking Connect with OAuth in the destination settings. Google OAuth tokens expire after 1 hour, but Zeotap automatically refreshes them using the stored refresh token.
Access denied: check profile ID and permissions
Ensure the authenticated Google account has the conversion upload permission in Campaign Manager 360. The account must have access to the specified floodlight configuration.
Conversions not appearing in remarketing list
It can take several hours for uploaded conversions to populate a Campaign Manager 360 remarketing list. Verify that the floodlight activity is correctly linked to the target remarketing list in Campaign Manager under Floodlight > Activities.
Partial failures in batch
The CM360 API returns per-conversion status in the response. Common causes of individual conversion failures include missing matchId, an unrecognized matchId (one that was never captured by a Floodlight tag), duplicate ordinal values, or floodlight activity ID mismatches. Zeotap records each failed conversion’s error code and message in the sync run’s per-row error report.
All rows reported as “missing external_id”
CM360 conversions require a primary identifier (matchId). Zeotap uses the mapped external_id column for this purpose. If every row fails with “missing external_id”, add a mapping from your source column (for example, a user ID captured alongside the Floodlight tag) to the external_id field of the destination.
Rate limit errors
If you see HTTP 429 errors, Zeotap will automatically retry with exponential backoff. For large audiences, consider scheduling syncs during off-peak hours to reduce API contention.