CM360 Sync (Decoupled)
What is Google CM360 Floodlight Sync?
Google CM360 Floodlight Sync connects your site to Google Campaign Manager 360 (CM360), Google's enterprise ad management platform used for tracking conversions and measuring campaign performance. As part of the sync, Floodlight conversion events are triggered client-side via Google's gtag.js library using configured Floodlight advertiser settings. This sync enables conversion tracking, attribution, and performance measurement for your CM360 advertising campaigns by creating immediate client-side conversion references that can later be matched with server-side events.
Considerations
- Floodlight Activity Scope - The Floodlight Advertiser ID Objects field should only include activities designated for MetaRouter's server-side matching workflow — not all CM360 Floodlight activities. Adding unrelated activities will cause those tags to fire unexpectedly and may skew CM360 reporting.
- Cookie Lifetime - DCLID and GCLID cookie lifetimes are managed by the parent Google Tag Settings, not this sync. Set them to align with your CM360/DV360 attribution window to avoid expired identifier errors.
- Processing Delay - Google recommends delaying conversion uploads to ensure identifiers are fully available before delivery:
| Identifier | Recommended Delay |
|---|---|
matchId | ~2 hours after Floodlight call |
dclid | ~1 hour after click |
- To enable event delay - Contact your MetaRouter Customer Support Rep to configure a delay for CM360 conversions.
- Retry Behavior - CM360 returns actual HTTP errors when conversions fail (e.g., NOT_FOUND when an identifier is not yet available). These failures are automatically queued for retry by MetaRouter's retry mechanism. Without a configured delay, the sync relies on retry to recover from early delivery.
- IAB TCF Consent - Enabling IAB TCF Consent requires an IAB TCF v2.0-compliant CMP with the
__tcfapiJavaScript API exposed on the site, and Consent Policy set to "Explicit Consent" in MetaRouter Advanced Settings. Vendor ID is 755. - CMP Compatibility - This sync works with any CMP provided the consent categories are configured correctly in the MetaRouter UI.
Architecture Overview
- Google Tag Settings serves as the parent and controls gtag.js library loading
- Google Campaign Manager 360 is a child sync with its own configuration
- GA4, Google Ads, and CM360 can be configured as separate syncs under the same parent
- The parent gtag must be deployed before CM360 sync can function
Google Tag Settings (Parent)
├── GTAG.js Tag ID
├── Load GTAG library
├── Load GTAG when zero consent granted
│
└── Syncs
├── Google Campaign Manager 360
├── Google Ads (optional)
└── GA4 (optional)
Prerequisites
Before configuring the CM360 Floodlight sync:
- Parent Google Tag Settings must be configured — The parent controls gtag.js library loading and must be deployed first
- Floodlight activities must be set up in CM360 — You need Activity Tag String, Group Tag String, and Advertiser ID for each sync activity
Configuration Fields
Parent Fields (Google Tag Settings)
| Field | Description | Required |
|---|---|---|
| GTAG.js Tag ID | Your Google Analytics 4 Measurement ID (e.g., G-XXXXXXXXX) or Google Ads ID (e.g., AW-XXXXXXXXX). Controls which Google property receives data. | No* |
| Load GTAG library | Toggle to load the gtag.js library. Must be ON for CM360 sync to function. | Yes |
| Load GTAG when zero consent granted | When ON, loads gtag even when no consent categories are granted. Useful for consent mode implementations. | Yes |
*GTAG.js Tag ID is optional in the parent if you're only using CM360 and not GA4/Google Ads.
CM360 Sync Fields (Google Campaign Manager 360)
| Field | Description | Required |
|---|---|---|
| Consent Type | Consent category required before sync fires (e.g., C0004 - Targeting Sales). Must be created in Settings > Consent Settings first. | Yes |
| IAB TCF Consent | Enable IAB Transparency & Consent Framework integration. Requires Consent Policy set to "Explicit Consent" in Advanced Settings. | No |
| Floodlight Advertiser ID Objects | JSON array of Floodlight advertiser configurations for sync activities. | Yes |
Setup
1. Configure Parent Google Tag Settings
- From the Pipelines page, find the pipeline associated with your web property
- Hover over the three-dot dropdown and select "Build AJS File"
- In the Identity Syncs section, add Google Tag Settings
- Configure the parent fields:
- GTAG.js Tag ID: Enter your GA4 Measurement ID or leave blank if only using CM360
- Load GTAG library: Set to ON
- Load GTAG when zero consent granted: Set based on your consent requirements
2. Add CM360 Floodlight Sync
- Under the Syncs section within Google Tag Settings, add Google Campaign Manager 360
- Configure the sync fields:
-
Consent Type - Select the consent category required before the sync fires (typically
C0004 - Targeting Sales). -
IAB TCF Consent - Enable if using IAB TCF v2.0-compliant CMP. Prerequisites:
- Consent Policy must be set to "Explicit Consent" in Advanced Settings
- IAB TCF v2.0-compliant CMP must be installed on your site
- CMP must expose the
__tcfapiJavaScript API
-
Floodlight Advertiser ID Objects - This field controls which Floodlight activities the MetaRouter sync fires as conversion events—specifically to register the MetaRouter anonymous ID (
matchId) with CM360 at the moment of the page visit, so it can later be matched against server-side conversion events. Only include activities designated for this sync-time ID capture. See the Considerations section for more detail.Enter a JSON array of Floodlight advertiser configurations:
[
{
"activityTag": "syncn0",
"advertiserID": "14780324",
"group": "teamint"
},
{
"activityTag": "pagei0",
"advertiserID": "14780324",
"group": "page",
"matchIDEnumKey": "u53"
}
]- Field Reference (found in CM360 > Advertisers > Floodlight Activities):
| Field | CM360 Location | Notes |
|---|---|---|
activityTag | "Activity Tag String" column | Required. Use the exact string from CM360. |
advertiserID | Your CM360 Advertiser ID | Works with or without DC- prefix |
group | "Group Tag String" column | Required. Use the exact string from CM360. |
matchIDEnumKey | Custom Floodlight variable (e.g., u53) | Optional |
3. Save and Deploy
- Click Save and Build File
- Deploy your AJS file to propagate changes to your web property
Technical Details
Sync Behavior
The sync executes the following steps:
- Checks gtag.js availability (must be loaded by parent Google Tag configuration)
- Retrieves attribution IDs (
gclid,dclid) from URL parameters or existing cookies - For each configured Floodlight advertiser, constructs and fires a conversion event:
send_to: Formatted as${advertiserID}/${group}/${activityTag}+standarddc_custom_params.match_id: The MetaRouter anonymousID (matchID)- Optional custom parameter: If
matchIDEnumKeyis provided (e.g.,u53), adds it as a top-level parameter with the matchID value
- Calls
gtag('event', 'conversion', conversionEvent)for each advertiser configuration - Stores execution marker (
_CM360_gtag_called) with the current timestamp for 365 days - If gtag is not available, returns the last stored execution timestamp without firing new conversions
Storage Markers
| Storage Type | Key | TTL |
|---|---|---|
| Cookie | _meta_CM360_gtag_called | 365 days |
| IndexedDB | [prefix]_CM360_gtag_called | 365 days |
Parent Google Tag cookies (created by the parent gtag configuration):
| Cookie | TTL | Description |
|---|---|---|
_ga | 400 days | Google Analytics client ID |
_ga_{tagID} | 400 days | Property-specific GA client ID (tagID without "G-" prefix) |
_gcl_au | 90 days | Google Ads conversion linker |
_gcl_aw | 90 days | Google Ads click tracking |
_gcl_dc | 90 days | Display & Video 360 click tracking |
Sync Response Example
When the sync executes successfully, it returns:
{
"gclid": "CjwKCAjwt-OwBhBnEiwAgwzrUkyN...",
"dclid": "CKDdz-fE_IUDFYtTCQkdbyMOPg",
"fired": "Wed Nov 27 2024 13:41:07 GMT+0300 (GMT+03:00)"
}Server-Side Enrichment
Upon completion of the sync, server-side events will incorporate the resolved attribution IDs. The following objects are appended to context.providers:
{
"googleGtag": {
"data": {
"gclid": "CjwKCAjwt-OwBhBnEiwAgwzrUkyN...",
"dclid": "CKDdz-fE_IUDFYtTCQkdbyMOPg",
"sessionID": "1234567890",
"sessionCount": 3
}
},
"CM360": {
"fired": "Wed Nov 27 2024 13:41:07 GMT+0300 (GMT+03:00)"
}
}Conversion Event Format
gtag('event', 'conversion', {
send_to: `${advertiserID}/${group}/${activityTag}+standard`,
dc_custom_params: {
match_id: anonymousID
},
// If matchIDEnumKey provided:
u53: anonymousID
});Verification
- Check Browser Developer Tools:
- Open Network tab and filter for
google-analytics.comorgoogleadservices.com - Look for conversion requests with your Floodlight activity IDs
- Verify
match_idparameter is present
- Open Network tab and filter for
- Check Cookies/Storage:
- Look for
_meta_CM360_gtag_calledcookie or IndexedDB entry - Verify it contains a timestamp
- Look for
- Check CM360 Dashboard:
- Navigate to CM360 > Advertisers > Floodlight Activities
- Check Floodlight reporting (may take up to 2 hours to appear)
- Server-side Event Validation:
- Use MetaRouter's event debugger
- Verify
context.providers.CM360is present withfiredtimestamp
Updated about 15 hours ago