Skip to main content

Campaign Manager 360 — Data Mapping

B
Written by Ben Keeling

The objects we sync from your CM360 account, the exact fields we read for each, and how they map into Medialake — for both media files and performance.


Medialake reads your CM360 structure (user profiles and their advertisers) to let you choose what to sync, syncs the creatives and media assets behind your campaigns, and reads the campaigns, placements, and ads that use them so each file's daily performance can be reported — via Google's Campaign Manager 360 API (v5). We only read the fields listed on this page, nothing else.


​

Objects at a glance

CM360 object

What it is

Why we sync it

Your access identity within a CM360 account

The entry point — every API request is made on behalf of a user profile

A brand or business within the account

Captures the hierarchy — the level you select for syncing

The visual content specification of an ad

Contains the assets — links each Medialake file to its creative context

Creative Asset (within each creative)

An individual media file inside a creative

Medialake ingests these as files — images, videos, and audio

A group of placements and ads for an advertiser

Groups performance in Medialake

Where an ad runs (a site or app slot)

Stored as the ad group level for performance

What is served in a placement, rotating one or more creatives

Performance is collected per ad, and linked to the files of its creatives

A CM360 report of daily metrics

Created temporarily to read each ad's daily performance, then deleted


​

User Profiles & Advertisers

The CM360 hierarchy runs User Profile → Account → Advertiser → Campaign → Ad → Placement (see Google's trafficking overview). Creatives attach at the advertiser level, so Medialake reads the top of the tree live from the API for browsing and selection — profiles and advertisers aren't stored as records themselves. We keep only your selections and, on each ingested file, the profile, advertiser, and creative IDs it belongs to.

User profile fields we read:profileId, userName, accountId, accountName

Advertiser fields we read:id, name


​

Creatives

For each synced advertiser we read its creatives from creatives.list and the assets inside them, so every file can be matched to the creative it serves in.

Fields we read:id, name, type, active, size, lastModifiedInfo.time, and the creative's creativeAssets list. The creative context (profile, advertiser, and creative IDs, name, type, size, last modified) is stored on each ingested file.


​

Media assets

Each creative's creativeAssets become files in Medialake. How the media is retrieved depends on the asset type:

  • Videos & audio (INSTREAM_VIDEO / VPAID / INSTREAM_AUDIO): the API provides serving URLs for these assets. CM360 lists the original upload plus one transcode per rendition of the same source, so Medialake ingests one file per creative — the original upload where available, otherwise the highest-quality transcode. If a stored URL stops working, a fresh one is fetched from the API and the download retried.

Fields we read:id, assetIdentifier (type and file name), fileSize, mimeType, mediaDuration, bitRate, role, progressiveServingUrl / streamingServingUrl

  • Images (HTML_IMAGE / IMAGE): the CM360 API exposes no download URL for image assets, so Medialake retrieves them from Google's public ad-serving CDN, verifying each URL before use.

Fields we read:id, assetIdentifier (type and file name), fileSize, size, role

  • Not ingested:HTML (HTML5 zip bundles) and legacy FLASH assets — the API exposes no URL for them, and each such creative also carries a backup image which is ingested, so the creative stays visually represented. TRACKING_TEXT creatives contain no assets at all.


​

Campaigns, placements & ads (performance)

For each advertiser you sync, Medialake reads its ads from ads.list, then only the campaigns and placements those ads use.

We keep an ad when all of these are true:

  • It's a standard ad. Click trackers, tracking ads, and default ads serve no media, so they're skipped.

  • It's still running, or ended within the last 24 months — CM360 doesn't report anything older.

  • At least one of its creatives contains media Medialake ingests as a file. An ad whose only creative is a video hosted elsewhere (a VAST redirect) has nothing to link to, so it's skipped.

Archived ads are kept, because CM360 still reports their history. An ad's status in Medialake is Active, Paused (not active), or Archived.

Each ad is linked to the files of the creatives it rotates — the same files described under Media assets above — which is how performance reaches each file.

Ad fields we read:id, name, type, active, archived, campaignId, placementAssignments (the placement it runs in), creativeRotation.creativeAssignments (its creatives), startTime, endTime, createInfo.time

Campaign fields we read:id, name

Placement fields we read:id, name, campaignId


​

Reports (performance metrics)

CM360 can only run saved reports, so for each advertiser Medialake creates a report of daily metrics for the ads being refreshed, runs it, downloads the result, and deletes the report. If you open the report list in CM360 at the wrong moment, you may briefly see one named Medialake daily performance (temporary).

To report spend in the right currency, we also read the account's currencyId from accounts.get.

Every metric and what it means is listed in the Metrics Reference.


​

How it maps into Medialake

User Profile
 └─ Advertiser
     ├─ Creative
     │   ├─ File (image — retrieved from Google's ad CDN)
     │   └─ File (video / audio — best rendition, via serving URL)
     └─ Campaign
         └─ Placement
             └─ Ad ──── daily performance
                  └─ linked to the Files of its creatives

Apart from the temporary reports, everything on this page is read-only — see Authentication for the permissions behind it.


​

Further reading (Google documentation)


Questions about a specific field? Contact [email protected].

Did this answer your question?