Skip to main content

Overview

Creatives are the actual ad content that users see - the videos, images, text, and interactive experiences that bring your brand message to life. In the Scope3 platform, creatives are created and stored at the Brand Agent level (the advertiserโ€™s account), then referenced by multiple campaigns as needed.
Important Architecture: Creatives belong to Brand Agents, NOT to campaigns. You first create creatives in the brand agentโ€™s library, then campaigns reference those creatives. This enables reuse across multiple campaigns.

Creative Architecture

How Creatives Work

Creatives implement specific formats using assets: Key Concepts:
  • Assets - The actual media files (images, videos, text) you provide
  • Format - The AdCP specification that defines requirements
  • Creative - Implements a specific format using your assets
  • Delivery - Creative is delivered to campaigns that need that format

Asset Requirements

Important: Creative assets must be accessible via public URLs. You can either host them on your own CDN or use our REST API for automatic hosting.
Two Asset Hosting Options:
Host assets on your infrastructure
{
  "creative": {
    "url": "https://cdn.yourbrand.com/video.mp4",
    "headline": "Your Product",
    "cta": "Learn More"
  }
}
Requirements: Assets must be publicly accessible with HTTPS URLs

Core Creative Concepts

1. Creative Types

๐ŸŽฌ Video

Connected TV & Online Video
  • 15s, 30s, 60s formats
  • VAST/VPAID compatible
  • Adaptive bitrate streaming
  • Captions and overlays

๐Ÿ–ผ๏ธ Display

Banner & Rich Media
  • Standard IAB sizes
  • Responsive layouts
  • Retina-ready graphics
  • HTML5 animations

๐Ÿ“ Native

In-Feed & Content
  • Headline + description
  • Sponsored content format
  • Platform-native styling
  • Multiple image ratios

๐ŸŽฎ Interactive

HTML5 & Playables
  • Rich interactive experiences
  • Game demos
  • Product configurators
  • AR/VR experiences

๐ŸŽง Audio

Podcast & Streaming Audio
  • Podcast ad insertions
  • Streaming music platforms
  • Digital radio spots
  • Companion display units

๐Ÿ“บ DOOH

Digital Out-of-Home
  • Digital billboards
  • Transit displays
  • Retail screens
  • Venue-based media

2. Creative Formats

Creatives implement specific formats defined by publishers and standards bodies. Each creative targets one format. Publishers define their supported formats through the Ad Context Protocol (ADCP).

3. Creative Assignment Pattern

Creatives follow a create-once, use-many pattern: Benefits:
  • Efficiency: Upload once, use everywhere
  • Consistency: Same creative across campaigns
  • Performance Tracking: See which creatives work best
  • A/B Testing: Easy creative rotation

Creative Lifecycle

Automatic Tracking

When you create a creative, the platform automatically generates tracking URLs if the format supports them. This happens transparently during creative creation - no manual setup required.

How Auto-Tracking Works

Automatic Detection: The platform checks the creative format for impression_tracker and click_tracker asset support. If the format includes these assets, tracking URLs are automatically generated and injected into your creative.

Tracker Types

TrackerEndpointPurposeSpecial Parameters
Impression Tracker/impFires when ad is displayedp=1 (return pixel flag)
Click Tracker/clkFires when ad is clickedrurl={REDIRECT_URL}

Tracking URL Structure

Generated tracking URLs follow this structure:
https://tracking.scope3.com/imp?dsid={dataset_id}&cid={creative_id}&camp={CAMPAIGN_ID}&axem={AXEM}&p=1&dtype={DEVICE_TYPE}&country={COUNTRY}...
Key Parameters:
  • dsid - Your customer dataset ID (hardcoded at creation)
  • cid - Creative ID (hardcoded at creation)
  • camp - Campaign ID macro (filled at ad serving)
  • axem - Emissions tracking macro
  • p=1 - Return pixel flag (triggers 1x1 pixel response)

Universal Macros

Scope3 uses ADCP Universal Macros - placeholders that get replaced with actual values at impression time. The formatโ€™s supported_macros array determines which macros are included in your tracking URLs.
MacroParameterDescription
{CAMPAIGN_ID}campCampaign identifier
{AXEM}axemEmissions tracking value
MacroParameterExample Value
{DEVICE_TYPE}dtypemobile, desktop, ctv
{OS}osiOS, Android, tvOS
{OS_VERSION}osv17.2, 14.0
{DEVICE_MAKE}makeApple, Samsung
{DEVICE_MODEL}modeliPhone15,2
{APP_BUNDLE}bundlecom.publisher.app
{APP_NAME}appPublisher News App
MacroParameterExample Value
{COUNTRY}countryUS, GB, CA
{REGION}regionNY, CA, ON
{CITY}cityNew York, London
{ZIP}zip10001, SW1A 1AA
{DMA}dma501 (New York)
{LAT}lat40.7128
{LONG}long-74.0060
MacroParameterExample Value
{GDPR}gdpr1 (applies), 0 (doesnโ€™t)
{GDPR_CONSENT}gdpr_cTCF 2.0 consent string
{US_PRIVACY}us_p1YNN (CCPA string)
{LIMIT_AD_TRACKING}lmt1 (limited), 0 (allowed)
{DEVICE_ID}didMobile advertising ID
{DEVICE_ID_TYPE}did_typeidfa, aaid
MacroParameterExample Value
{VIDEO_ID}vidvid_12345
{VIDEO_TITLE}vtitleBreaking News Story
{VIDEO_DURATION}vdur600 (seconds)
{VIDEO_CATEGORY}vcatIAB1
{CONTENT_GENRE}genrenews, sports
{CONTENT_RATING}ratingG, PG, TV-14
{PLAYER_WIDTH}pw1920
{PLAYER_HEIGHT}ph1080
{POD_POSITION}pod_pospre, mid, post
{POD_SIZE}pod_size3
{AD_BREAK_ID}break_idbreak_001
MacroParameterExample Value
{PLACEMENT_ID}pid12345678
{FOLD_POSITION}foldabove_fold, below_fold
{AD_WIDTH}w300, 728
{AD_HEIGHT}h250, 90

Example: Generated Tracking URLs

Hereโ€™s what auto-generated tracking URLs look like for different format types:
Format: display_300x250 with macros: DEVICE_TYPE, COUNTRY, PLACEMENT_IDImpression Tracker:
https://tracking.scope3.com/imp?dsid=ds_abc123&cid=creative_hero_banner&camp={CAMPAIGN_ID}&axem={AXEM}&p=1&dtype={DEVICE_TYPE}&country={COUNTRY}&pid={PLACEMENT_ID}
Click Tracker:
https://tracking.scope3.com/clk?dsid=ds_abc123&cid=creative_hero_banner&camp={CAMPAIGN_ID}&axem={AXEM}&rurl={REDIRECT_URL}&dtype={DEVICE_TYPE}&country={COUNTRY}&pid={PLACEMENT_ID}

Checking Format Support

To see if a format supports tracking, use the list_creative_formats MCP tool and check for impression_tracker or click_tracker in the assets array:
const formats = await listCreativeFormats({
  agentUrl: "https://creative.adcontextprotocol.org"
});

// Check if format supports trackers
const format = formats.find(f => f.id === "video_30s");
const supportsImpressionTracker = format.assets.some(
  a => a.asset_id === "impression_tracker"
);
const supportsClickTracker = format.assets.some(
  a => a.asset_id === "click_tracker"
);

console.log(`Impression tracker: ${supportsImpressionTracker}`);
console.log(`Click tracker: ${supportsClickTracker}`);
console.log(`Supported macros: ${format.supported_macros.join(", ")}`);
No Action Required: Tracking is fully automatic. If you need your dataset ID for conversion tracking setup, use the customer_dataset_get_id MCP tool.

Creative Creation Approaches

Choose from three approaches to create creatives:
Use existing ad server tags (e.g., Google CM360, Flashtalking)We take your ad server code and wrap it in a creative - itโ€™s a single step:
const creative = await createCreative({
  brandAgentId: "ba_123",
  name: "Campaign Creative",
  formatId: "adcp_display_300x250",
  adServerTag: "https://ad.doubleclick.net/ddm/trackclk/..."
});
Best for: Teams with existing ad server relationships How it works: Your ad server tag is passed through directly to publishers

Campaign Assignment

Creatives are assigned to campaigns during creation or via updates:
// Option 1: Assign during campaign creation
const campaign = await createCampaign({
  brandAgentId: "ba_nike_123",
  name: "Summer Sale Campaign",
  creativeIds: ["cr_video_456", "cr_display_789"], // Assign creatives
  budget: { total: 50000, currency: "USD" }
});

// Option 2: Update existing campaign
const updated = await updateCampaign({
  campaignId: "camp_abc123",
  creativeIds: ["cr_video_456", "cr_native_012"] // Replace creatives
});

Step 4: Performance Optimization

The platform automatically optimizes creative delivery based on performance:

๐Ÿ“Š Creative Rotation

Automatic A/B Testing
  • Even rotation initially
  • Performance-based weighting
  • Winner emergence over time
  • Statistical significance testing

๐ŸŽฏ Contextual Matching

Right Creative, Right Context
  • Sports content โ†’ Athletic creatives
  • News sites โ†’ Native formats
  • Entertainment โ†’ Video focus
  • Shopping โ†’ Product displays

โšก Dynamic Optimization

Real-Time Adjustments
  • Dayparting optimization
  • Device-specific selection
  • Audience resonance
  • Fatigue management

๐Ÿ”„ Format Adaptation

Cross-Platform Delivery
  • Automatic format conversion
  • Resolution optimization
  • Bandwidth adaptation
  • Platform compliance

Creative Best Practices

Quality Guidelines

Technical Requirements
  • Resolution: 1920x1080 minimum (4K preferred)
  • Frame rate: 24-30 fps standard
  • Bitrate: 10+ Mbps for HD
  • Audio: 128 kbps minimum stereo
Content Guidelines
  • Hook within first 3 seconds
  • Clear brand identification
  • Captions for sound-off viewing
  • Strong CTA in final frame
  • Multiple duration versions (15s, 30s)
Design Standards
  • High contrast for readability
  • Mobile-first responsive design
  • Retina-ready graphics (2x resolution)
  • File size under 200KB for display
Format Coverage
  • 300x250 (Medium Rectangle)
  • 728x90 (Leaderboard)
  • 160x600 (Wide Skyscraper)
  • 320x50 (Mobile Banner)
  • 300x600 (Half Page)
Content Strategy
  • Value-first messaging
  • Editorial-style writing
  • Authentic imagery
  • Subtle brand integration
Text Optimization
  • Headline: 25-40 characters
  • Description: 75-90 characters
  • Clear value proposition
  • Action-oriented CTAs
Technical Requirements
  • Format: MP3 or AAC
  • Sample rate: 44.1 kHz minimum
  • Bitrate: 128 kbps minimum (192+ preferred)
  • Duration: 15s, 30s, or 60s standard
Content Guidelines
  • Clear audio without background noise
  • Professional voice talent recommended
  • Include companion display when supported
  • Strong audio branding (jingles, sonic logos)
Technical Requirements
  • Resolution: Match screen specifications
  • Aspect ratios: 16:9, 9:16, 4:3 common
  • File formats: MP4, JPEG, HTML5
  • Duration: 10-15s for high-traffic locations
Design Guidelines
  • High contrast for outdoor visibility
  • Large text (readable from distance)
  • Simple messaging (3-5 seconds to comprehend)
  • Weather/daypart considerations

API Mapping

Core Creative Operations

Advanced Creative Tools

Common Patterns

Multi-Format Campaign Launch with Asset Upload

// 1. Upload assets via REST API (example using fetch)
async function uploadAsset(file, brandAgentId, assetType, tags) {
  const formData = new FormData();
  formData.append('file', file);
  formData.append('brandAgentId', brandAgentId);
  if (assetType) formData.append('assetType', assetType);
  if (tags) formData.append('tags', tags.join(','));

  const response = await fetch('https://api.scope3.com/api/assets', {
    method: 'POST',
    headers: { 'Authorization': `Bearer ${token}` },
    body: formData
  });
  return response.json();
}

// Upload each asset
const videoAsset = await uploadAsset(videoFile, 123, 'video', ['hero', 'ctv']);
const bannerAsset = await uploadAsset(bannerFile, 123, 'image', ['banner', 'display']);
const nativeAsset = await uploadAsset(nativeFile, 123, 'image', ['native', 'content']);

// 2. Create creatives using uploaded asset URLs
const videoCreative = await createCreative({
  brandAgentId: "ba_brand_123",
  name: "Hero Video - 30s",
  type: "video",
  url: videoAsset.publicUrl
});

const displayCreative = await createCreative({
  brandAgentId: "ba_brand_123",
  name: "Product Banner Set",
  type: "image",
  url: bannerAsset.publicUrl
});

const nativeCreative = await createCreative({
  brandAgentId: "ba_brand_123",
  name: "Sponsored Story",
  type: "native",
  headline: "Discover Our Latest Innovation",
  body: "Learn how our products can transform...",
  url: nativeAsset.publicUrl
});

// 3. Launch campaign with all creatives
const campaign = await createCampaign({
  brandAgentId: "ba_brand_123",
  name: "Q4 Integrated Campaign",
  creativeIds: [
    videoCreative.id,
    displayCreative.id,
    nativeCreative.id
  ],
  budget: { total: 100000, currency: "USD" }
});

Creative Performance Analysis

// Get campaign summary with creative breakdown
const summary = await getCampaignSummary({
  campaignId: "camp_abc123",
  includeCreativePerformance: true
});

// Analyze which creatives drive performance
summary.creativePerformance.forEach(creative => {
  console.log(`${creative.name}:
    - Impressions: ${creative.impressions}
    - CTR: ${creative.ctr}%
    - Conversions: ${creative.conversions}
    - Efficiency Score: ${creative.efficiencyScore}/100
  `);
});

// Optimize based on performance
const topPerformers = summary.creativePerformance
  .filter(c => c.efficiencyScore > 80)
  .map(c => c.id);

await updateCampaign({
  campaignId: "camp_abc123",
  creativeIds: topPerformers // Focus on winners
});

Troubleshooting

Common Causes:
  • Creative not approved by publishers
  • Asset URLs not accessible (403/404 errors)
  • Format incompatible with inventory
  • File size exceeds limits
Solution: Check approval status and validate asset URLs
Diagnostic Steps:
  1. Check creative age (fatigue after 4-6 weeks)
  2. Verify audience-creative match
  3. Review competitive landscape
  4. Test new variations
Quick Fix: Refresh creative assets and test new messages
Publisher Sync Problems:
  • Spec mismatches
  • Missing required fields
  • Approval delays
Resolution: Use format discovery API to ensure compliance

Next Steps

Pro Tip: Start with 3-5 creative variations to enable meaningful A/B testing. The platformโ€™s ML optimization works best with multiple options to choose from.