Lifecycle · Draft
Campaign Execution
Objective
Translate an approved media plan version into live (or scheduled) campaigns across enabled platforms — idempotently, auditably, and with rollback support.
Preconditions
plan.status = approved- Tracking health = green on GA4
- Platform accounts provisioned and API-authenticated
- Feed critical errors = 0 (if shopping/catalog)
- Required human launch approval (if policy enabled)
Inputs
- Approved
MediaPlanpayload - Creative asset IDs (from asset library)
- Platform account map from onboarding
Outputs
- Platform campaign IDs stored in
execution_manifest - Event:
campaign.liveorcampaign.scheduled - Audit log entries per mutation
Execution flow
Platform order (execution)
Execute in parallel where possible; recommended dependency:
- Google Ads (often primary conversion path)
- Meta
- TikTok
- DV360 (IO structure may take longer)
URL tracking (every mutate)
Before campaign.live, per UTM & attribution spec:
| Platform | Action |
|---|---|
| Google Ads | Auto-tagging on; no utm_*; CRM SKU → kcid/kpv custom params only |
| Meta / TikTok | utm_* macros; system-inject if macro unavailable |
| QC | Google: forbid utm_; Social: utm_campaign = platform ID |
| Manifest | platform_campaign_id, tracking_mode on execution_manifest |
Idempotency
- Each operation keyed by
(tenant_id, plan_version, platform, logical_campaign_key) - Re-run of same plan version does not duplicate campaigns
- Updates apply diff against stored manifest
Naming convention
kobi_{tenant}_{platform}_{objective}_{plan_version}
Rollback
execution.rollback(plan_version)pauses or removes campaigns created under that version- Does not delete historical audit records
Human touchpoints
- First launch per tenant (configurable)
- Policy disapproval during build
- Manual creative upload if asset missing
Error handling
| Error | Action |
|---|---|
| Partial platform failure | Roll back successful platform if atomic launch required; or mark partial with alert |
| Budget rejected | Check plan vs platform limits; if payer issue → PRE-* agency master (not per-client billing) |
| Tracking red | Block launch |
SLA
- Execution after approval: < 4 hours automated
- Partial failures escalated within 1 hour