go upstream
Two CSV files, six or more months of daily history, one currency. You get back an independent ROAS read for every campaign and a recommended budget allocation for the next period, as a report plus the full result tables.
| Column | Required content |
|---|---|
| date | Daily date; YYYY-MM-DD recommended. |
| campaign_id | Stable unique campaign identifier. |
| campaign_name | Human-readable campaign name. |
| platform | Examples: Google Ads, Meta, TikTok, YouTube, DV360, TTD. |
| funnel_stage | Stable stage such as awareness, consideration, or conversion. |
| modality | Paid search, paid social, video, display, CTV, creator video, etc. |
| spend | Daily advertising or creator campaign spend. |
| impressions | Daily delivered impressions. |
| clicks | Daily clicks. |
| conversions | Daily attributed conversions; context, not revenue truth. |
| currency | One currency code, matching the outcome file. |
Measuring influencer campaigns? Add three columns: influencer_id, creator_handle, and creator_tier (nano, micro, mid, macro, mega). Everything else stays the same, and you get modeled ROAS per creator plus a creator-level allocation.
| Column | Required content |
|---|---|
| date | Daily date. |
| outcome_channel | Examples: DTC, Online Retail, Brick & Mortar, Social Commerce. |
| revenue | Daily channel revenue; primary model target. |
| sales | Daily units or completed sales for context. |
| orders | Daily order count for context. |
| currency | Must match campaign-delivery currency. |