Documentation
Ad spend & ROAS
Import daily spend, unlock campaign ROAS, and apply pause/+20% budget on Meta/Google/Microsoft with confirm.
Attributed revenue alone cannot answer “what did I get for what I spent?” Import daily ad spend into Intently to unlock campaign ROAS, pipeline vs spend, and pause / scale write-back on Meta, Google, and Microsoft (confirm required).
Portals (live sync):
- Meta Ads Manager · Marketing API
- Google Ads · Google Ads API
- Microsoft Advertising · Microsoft Advertising API
Intently setup: Attribution settings → Ad spend · guide below.
Import spend (CSV)
Works for every channel. Required for TikTok, LinkedIn, Pinterest, X, and Reddit until live sync exists for those networks.
- Open Attribution settings → Ad spend import
- Upload a CSV
CSV format
Required columns: date, channel, and either spend_cents (integer cents) or spend (dollars).
Optional: campaign, currency (default usd), impressions, clicks, platform.
date may also be labeled spend_date. Headers are case-insensitive; spaces become underscores (Spend Cents → spend_cents).
Dollars (easiest for exports from Ads Manager):
date,channel,campaign,spend,currency,impressions,clicks
2026-09-15,tiktok_ads,spring_prospecting,412.50,usd,18420,312
2026-09-15,linkedin_ads,abm_enterprise,890.00,usd,4200,86Cents:
date,channel,campaign,spend_cents,currency
2026-09-15,tiktok_ads,spring_prospecting,41250,usdDownload examples:
- ad-spend-import.csv — dollars
- ad-spend-import-cents.csv — cents
Channel keys
Use the same keys attribution uses. Campaign names should match utm_campaign on the landing (join is case- and spacing-insensitive).
| Channel key | Typical source |
|---|---|
meta_ads | Meta (live sync preferred) |
google_ads | Google Ads (live sync preferred) |
microsoft_ads | Microsoft Ads (live sync preferred) |
tiktok_ads | TikTok Ads |
linkedin_ads | LinkedIn Ads |
pinterest_ads | Pinterest Ads |
reddit_ads | Reddit Ads |
twitter_ads | X (Twitter) Ads |
Rows upsert on account + date + channel + campaign + currency.
What unlocks
- Campaigns workspace: attributed revenue by channel/campaign with spend, ROAS, net (revenue − spend), and inline Pause / +20% when Meta, Google, or Microsoft is connected
- Pipeline vs ad spend on Attribution: daily attributed revenue vs daily spend
- Readiness item Ad spend (for ROAS) completes when spend rows exist in the last 30 days
Without spend, those views still load; ROAS shows as empty and the UI points you back to import.
Platform sync (Meta, Google, Microsoft)
Prefer Connect with … OAuth in Attribution settings → Ad spend. Intently’s server apps handle the OAuth client; you authorize your ad account.
| Platform | Portals | What Intently needs |
|---|---|---|
| Meta | Ads Manager · Marketing API | OAuth or Marketing API access token + Ad account ID (digits, or act_…) |
| Google Ads · Ads API | OAuth or access token + Customer ID (no dashes). Optional MCC login-customer-id | |
| Microsoft | ads.microsoft.com · Advertising API | OAuth or access token + numeric Account ID + Customer ID |
Find account IDs
- Meta: Ads Manager → Ad account settings → Account ID
- Google: Google Ads → upper right account number (remove dashes when pasting)
- Microsoft: ads.microsoft.com → Accounts & Billing → numeric Account Id (not the Account Number like
F123…)
Manual tokens (advanced)
Use only if OAuth is unavailable for your workspace or you are rotating credentials:
- Meta — generate a Marketing API user/system-user token with ads read (and write if you use pause/scale)
- Google — OAuth access token with Google Ads scope (Intently’s Connect flow is preferred; developer token is configured on Intently’s side)
- Microsoft — OAuth token with
msads.manage(Connect flow preferred; developer token is on Intently’s side)
In settings:
- Click Connect with … when available, or paste a token under advanced options
- Confirm account / customer ids
- Click Sync last 30 days
If Connect with … is unavailable, live OAuth is not enabled for your workspace yet — use CSV import, or paste a token if your plan supports it. Contact support if you need OAuth turned on.
Pause / scale write-back
On Campaigns, you can pause or increase budget based on ROAS (and Attribution still surfaces pause/scale suggestions).
When spend sync has stored campaign ids, you can click Pause or +20% (or Apply from suggestions). Intently asks for confirm, then updates that campaign in the connected ad account.
Supported today
- Meta, Google Ads, and Microsoft Ads
- Needs the platform connected and a successful spend sync (so campaign ids exist)
- +20% budget only works for campaigns with an editable daily (non-shared) budget