Skip to main content

Overview

Campaigns are the top-level containers for your marketing initiatives. They define WHAT you want to achieve with a total budget, then orchestrate multiple Tactics for organized execution, which manage Media Buys with publishers.
Two-Tier Architecture: Campaign → Strategy → Media Buy
  • Campaign: “Q4 Sports Marketing” ($100K total budget)
  • Strategies: Targeting configuration (“CTV/Mobile US”, “Web Display Global”)
  • Media Buys: Publisher execution (“20KwithESPN","20K with ESPN", "15K with Fox”)
Campaign Dependency: All campaigns must be created within a Brand Agent context. You cannot create standalone campaigns - they always belong to an advertiser account.

Campaign Lifecycle

Phase 1: Planning & Setup

Before launching any campaign, ensure you have:
  1. Brand Agent Created - Your advertiser account foundation
  2. Creative Assets Ready - High-quality creatives significantly impact performance
  3. Audience Profiles (Optional) - Brand story targeting profiles
  4. Brand Standards Configured (Optional) - Domain filtering and brand safety rules

Phase 2: Campaign Creation

User: "Create a $50,000 CTV campaign for Nike targeting sports fans aged 25-45"

Claude: 🚀 Creating Nike campaign...
        
        ✅ Campaign created: camp_abc123
        📊 Budget: $50,000 USD
        🎯 Targeting: Sports enthusiasts, ages 25-45, CTV inventory
        📺 Strategy: AI-driven optimization
        🎨 Creatives: Auto-assigned from Nike brand agent library
        
        Status: Ready to launch

Phase 3: Launch & Optimization

Once launched, campaigns orchestrate execution through strategies:
  1. Strategy Creation - Define targeting configurations (channels, countries)
  2. Media Buy Creation - Create publisher executions under strategies
  3. Campaign Monitoring - Track performance across strategies and media buys
  4. Continuous Optimization - Adjust strategies and media buys based on performance

Phase 4: Monitoring & Management

🔄 Incremental Optimization Requests

Natural language optimization - Use the changeRequest parameter to make targeted improvements without rebuilding your entire campaign strategy.
// Boost specific metrics
await updateCampaign({
  campaignId: "camp_123",
  changeRequest: "increase viewability by 10% and need 20% more scale per day"
});
Response shows applied changes:
✅ Campaign updated successfully

**Change Request:** increase viewability by 10% and need 20% more scale per day

**Changes Applied to Campaign Brief:**
👁️ **Viewability Target**: Set minimum viewability standard to 10%
💎 **Premium Inventory**: Prioritized high-viewability placements and publishers
📈 **Scale Increase**: Raised daily spending capacity by 20%
🎯 **Targeting Expansion**: Broadened reach parameters to support increased scale

## 🎯 Strategy Updates
**Targeting Updated** (2 new profiles):
  • Premium Inventory: include 15 items
  • Viewability Standards: exclude 8 items
Common optimization patterns:
  • Performance improvements: “increase CTR by 15%”, “improve completion rates to 80%”
  • Scale adjustments: “need 30% more reach”, “reduce daily spend to $2000”
  • Quality changes: “prioritize viewability over cost”, “add stricter brand safety”
  • Efficiency targets: “reduce CPM to $25”, “improve cost efficiency by 20%”
The changeRequest parameter works alongside existing parameters like prompt, reason, and tacticAdjustments. When provided, it automatically generates an optimized strategy prompt that gets processed by the same backend optimization engine.

Key Campaign Features

🎯 Two-Tier Organization

Campaigns organize execution through strategies: Campaign Level:
  • Overall marketing initiative and budget
  • Links to multiple strategies for organization
Strategy Level:
  • Defines targeting (channels, countries)
  • Organizes related media buys
  • Can be shared across campaigns
Media Buy Level:
  • Executes with specific publishers at negotiated CPMs
  • Real-time performance tracking and adjustment

🔗 Resource Integration

Campaigns seamlessly integrate with other Brand Agent resources:
Shared Creative Library
  • Creatives belong to the Brand Agent, not individual campaigns
  • Multiple campaigns can use the same creative assets
  • Creative performance tracked across all campaigns
  • Easy creative swapping and A/B testing
// Assign creatives during campaign creation
const campaign = await createCampaign({
  brandAgentId: "ba_123",
  name: "Summer Sale Campaign",
  creativeIds: ["cr_video_456", "cr_display_789"]
});

// Update creative assignments
await updateCampaign({
  campaignId: "camp_123",
  creativeIds: ["cr_new_video_999"] // Replaces existing assignments
});

📊 Advanced Analytics & Insights

Every campaign generates rich performance data for optimization:

Hierarchical Performance Analysis

Track performance at each tier: Campaign Metrics (Top Level):
  • Total spend vs budget
  • Overall CPM and efficiency
  • Strategy performance distribution
  • Campaign health score
Strategy Metrics (Organization Layer):
  • Media buy grouping and organization
  • Channel and geographic performance
  • Aggregate spend by strategy
  • Targeting configuration effectiveness
Media Buy Metrics (Execution Layer):
  • Publisher-specific performance
  • CPM vs negotiated rates
  • Delivery pacing
  • Quality scores

Real-time Delivery Monitoring

Get instant visibility into campaign pacing and performance:
const summary = await getCampaignSummary({
  campaignId: "camp_123"
});

// Returns human-readable summary:
// 🎯 Campaign Health Score: 85/100
// 📊 Pacing: On track (52% budget, 48% flight remaining)
// 💰 Performance: $2.34 CPM, strong completion rates
// 🔧 Recommendation: Increase budget for high performers

⚖️ Scoring Configuration

Control campaign performance measurement with three-component scoring. Campaigns can use a weighted formula combining Quality, Outcome, and Story Affinity scores for performance evaluation. You configure the weights and outcome measurement timing.
Optimize for conversions and outcomes
const campaign = await createCampaign({
  brandAgentId: "ba_123",
  name: "Q4 Performance Campaign",
  prompt: "Target high-intent customers for holiday conversions",
  
  // Weight outcome scores heavily
  scoringWeights: {
    quality: 0.2,       // 20% media quality
    outcome: 0.7,       // 70% your conversion data
    affinity: 0.1       // 10% brand story alignment
  },
  
  // Attribution data arrives in 7 days
  outcomeScoreWindowDays: 7,
  
  budget: { total: 100000, currency: "USD" }
});

The Three Scoring Components

Quality Score (Scope3-provided)
  • Impression quality, viewability, completion rates
  • IVT detection and brand safety metrics
  • Scale: 0-100 (100 = premium media quality)
Outcome Score (You provide)
  • Your normalized measurement data (ROAS, conversions, brand lift)
  • Scale: 0-1000 (100 = meets target, 1000 = 10x target)
  • You define what the numbers mean
Story Affinity Score (Scope3-provided)
  • How well tactics align with your selected brand stories
  • Uses the brand stories you created and assigned
  • Scale: 0-100 (100 = perfect story alignment)
Weights determine relative importance of each component for budget allocation. See the Scoring Guide for detailed explanation and weight strategy examples.

Outcome Score Window Days

Critical for RL algorithm performance. Specify how many days before your outcome measurement data arrives:
  • Immediate data: 0-1 days (engagement, clicks)
  • Attribution data: 1-7 days (conversions, CRM matching)
  • Brand studies: 7-30 days (lift measurement)
  • MMM data: 30+ days (incrementality studies)
Without proper window configuration, performance measurement may be inaccurate before your measurement data arrives.

Campaign Workflow Examples

Complete Two-Tier Setup

Two-Tier Execution Example

// Step 1: Create Campaign (Top Level)
const campaign = await createCampaign({
  brandAgentId: "ba_nike_123",
  name: "Nike Q4 Sports Marketing",
  budget: { total: 100000, currency: "USD" },
  prompt: "Reach sports enthusiasts with premium video and CTV"
});

// Step 2: Create Strategies (Organization Layer)
const ctvStrategy = await strategy_create({
  campaignId: campaign.id,
  name: "CTV & Mobile Strategy",
  channelCodes: ["ctv", "mobile"],
  countryCodes: ["US", "CA"]
});

const webStrategy = await strategy_create({
  campaignId: campaign.id,
  name: "Web Display Strategy",
  channelCodes: ["web"],
  countryCodes: ["US", "CA", "GB"]
});

// Step 3: Create Media Buys (Execution Layer)
const espnBuy = await media_buy_create({
  tacticId: ctvStrategy.id,
  name: "ESPN Premium Video",
  products: [{
    salesAgentId: "agent_espn",
    mediaProductId: "prod_premium_video",
    budgetAmount: 20000,
    pricingCpm: 28.00,
    pricingSignalCost: 2.00
  }],
  budget: { amount: 20000 }
});

const foxBuy = await media_buy_create({
  tacticId: ctvStrategy.id,
  name: "Fox Sports Video",
  products: [{
    salesAgentId: "agent_fox",
    mediaProductId: "prod_sports_video",
    budgetAmount: 15000,
    pricingCpm: 25.00,
    pricingSignalCost: 2.00
  }],
  budget: { amount: 15000 }
});

// Step 4: Execute Media Buys
await media_buy_execute({ mediaBuyId: espnBuy.id });
await media_buy_execute({ mediaBuyId: foxBuy.id });

Performance Optimization Best Practices

1. Creative Quality First

  • High-quality creatives are the single biggest factor in campaign performance
  • Use multiple creative formats (video, display, native) for broader reach
  • Test different creative messages and CTAs
  • Monitor creative performance across campaigns

2. Budget Sizing

  • Minimum viable: $1,000 for basic campaigns
  • Recommended minimum: $10,000 for meaningful optimization
  • Enterprise scale: $100,000+ for advanced ML optimization
  • Higher budgets enable more sophisticated targeting and learning

3. Targeting Strategy

  • Start broad, let AI find optimal segments
  • Use natural language descriptions in campaign prompts
  • Leverage brand stories for precise targeting
  • Monitor signal performance and adjust accordingly

4. Monitoring & Optimization

  • Check campaign health weekly with get_campaign_summary
  • Export data for deeper analysis with export_campaign_data
  • Use strategy performance insights for optimization decisions
  • Set up real-time alerts for performance issues

Common Campaign Patterns

Testing Different Targeting Strategies

// Test different targeting approaches within one campaign
const testCampaign = await createCampaign({
  brandAgentId: "ba_123",
  name: "Q4 Targeting Test",
  budget: { total: 50000, currency: "USD" }
});

// Test Strategy A: CTV Focus
const ctvStrategy = await strategy_create({
  campaignId: testCampaign.id,
  name: "Test A: CTV Premium",
  channelCodes: ["ctv"],
  countryCodes: ["US"]
});

// Test Strategy B: Multi-Channel
const multiStrategy = await strategy_create({
  campaignId: testCampaign.id,
  name: "Test B: Multi-Channel",
  channelCodes: ["web", "mobile", "ctv"],
  countryCodes: ["US", "CA"]
});

// Create media buys under each and compare performance
// Monitor with campaign_list_strategies to see performance distribution

Seasonal Campaign Management

// Create seasonal campaigns that share core resources
const holidayCampaign = await createCampaign({
  brandAgentId: "ba_nike_123",
  name: "Nike Holiday 2024",
  prompt: "Target holiday shoppers looking for athletic gifts, premium inventory focus",
  budget: { total: 100000, currency: "USD" },
  creativeIds: ["cr_holiday_video", "cr_holiday_display"],
  audienceIds: ["aud_gift_shoppers", "aud_premium_customers"]
});

const backToSchoolCampaign = await createCampaign({
  brandAgentId: "ba_nike_123",
  name: "Nike Back to School 2024", 
  prompt: "Target students and parents preparing for school year, value-focused messaging",
  budget: { total: 75000, currency: "USD" },
  creativeIds: ["cr_bts_video", "cr_value_display"],
  audienceIds: ["aud_students", "aud_parents"]
});

Integration with External Systems

BI/Analytics Integration

// Export campaign data for external analysis
const exportData = await exportCampaignData({
  brandAgentId: "ba_123",
  dateRange: { 
    start: "2024-01-01", 
    end: "2024-01-31" 
  },
  datasets: ["delivery", "events", "tactics"],
  groupBy: ["date", "campaign", "tactic", "signal"],
  format: "csv", // Optimized for analytics
  compression: "gzip"
});

// Use exported data in your BI pipeline
// Supports: JSON, CSV formats
// Integrates with: Snowflake, BigQuery, Databricks, etc.

Real-time Notifications

While campaign tools provide on-demand insights, set up real-time notifications through the Scope3 Dashboard:
  1. Log into app.scope3.com
  2. Navigate to Campaign Settings → Notifications
  3. Configure alert destinations:
    • Slack channels for team notifications
    • Email addresses for key stakeholders
    • Webhook URLs for custom integrations
Alert types include:
  • Budget pacing issues (over/under delivery)
  • Performance anomalies (significant CPM changes)
  • Campaign status changes (paused, completed)
  • Creative performance alerts (poor completion rates)

Campaign API Reference

Next Steps