Skip to main content

Configuration

Complete reference for the campaign YAML schema.

Schema Overview

version: "1.0"
campaigns:
- id: string # Unique identifier
name: string # Display name
objective: string # Campaign objective
status: string # ACTIVE or PAUSED
ad_sets:
- id: string
name: string
status: string
budget_daily: number
targeting:
locations: [string]
age_min: number
age_max: number
interests: [string]

Fields Reference

MarketingPlan

FieldTypeRequiredDescription
versionstringYesSchema version (currently "1.0")
campaignsarrayYesList of campaigns

Campaign

FieldTypeRequiredDescription
idstringYesUnique identifier for the campaign
namestringYesDisplay name
objectivestringYesCampaign objective
statusstringYesACTIVE or PAUSED
ad_setsarrayYesList of ad sets

Objectives:

  • OUTCOME_SALES - Conversions and sales
  • OUTCOME_TRAFFIC - Website traffic
  • OUTCOME_AWARENESS - Brand awareness

AdSet

FieldTypeRequiredDescription
idstringYesUnique identifier
namestringYesDisplay name
statusstringYesACTIVE or PAUSED
budget_dailynumberYesDaily budget in account currency
targetingobjectYesTargeting configuration

Targeting

FieldTypeRequiredDefaultDescription
locationsarrayYes-List of country codes
age_minnumberNo18Minimum age
age_maxnumberNo65Maximum age
interestsarrayNo[]List of interests

Complete Example

version: "1.0"
campaigns:
- id: summer-sale-2025
name: Summer Sale 2025
objective: OUTCOME_SALES
status: ACTIVE
ad_sets:
- id: us-millennials
name: US Millennials
status: ACTIVE
budget_daily: 100.00
targeting:
locations: ["US"]
age_min: 25
age_max: 40
interests: ["online shopping", "fashion", "deals"]

- id: canada-broad
name: Canada Broad
status: ACTIVE
budget_daily: 50.00
targeting:
locations: ["CA"]
age_min: 18
age_max: 65
interests: []

- id: brand-awareness-q1
name: Brand Awareness Q1
objective: OUTCOME_AWARENESS
status: PAUSED
ad_sets:
- id: global-reach
name: Global Reach
status: PAUSED
budget_daily: 200.00
targeting:
locations: ["US", "CA", "GB", "AU"]
age_min: 18
age_max: 54

Validation

growthctl validates your YAML against the schema before any operation. Common validation errors:

# Missing required field
Validation Error: field required: 'objective'

# Invalid status value
Validation Error: value is not a valid enumeration member: 'active'
# Fix: Use 'ACTIVE' (uppercase)

# Invalid objective
Validation Error: value is not a valid enumeration member: 'SALES'
# Fix: Use 'OUTCOME_SALES'