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 legacyFLASHassets — 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_TEXTcreatives 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 creativesApart from the temporary reports, everything on this page is read-only — see Authentication for the permissions behind it.
Further reading (Google documentation)
Campaigns, Placements, and Ads
Reports — the reporting API used for performance
Trafficking overview — the CM360 object hierarchy
Questions about a specific field? Contact [email protected].
