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):

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.

  1. Open Attribution settings → Ad spend import
  2. 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,86

Cents:

date,channel,campaign,spend_cents,currency
2026-09-15,tiktok_ads,spring_prospecting,41250,usd

Download examples:

Channel keys

Use the same keys attribution uses. Campaign names should match utm_campaign on the landing (join is case- and spacing-insensitive).

Channel keyTypical source
meta_adsMeta (live sync preferred)
google_adsGoogle Ads (live sync preferred)
microsoft_adsMicrosoft Ads (live sync preferred)
tiktok_adsTikTok Ads
linkedin_adsLinkedIn Ads
pinterest_adsPinterest Ads
reddit_adsReddit Ads
twitter_adsX (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.

PlatformPortalsWhat Intently needs
MetaAds Manager · Marketing APIOAuth or Marketing API access token + Ad account ID (digits, or act_…)
GoogleGoogle Ads · Ads APIOAuth or access token + Customer ID (no dashes). Optional MCC login-customer-id
Microsoftads.microsoft.com · Advertising APIOAuth 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:

  1. Meta — generate a Marketing API user/system-user token with ads read (and write if you use pause/scale)
  2. Google — OAuth access token with Google Ads scope (Intently’s Connect flow is preferred; developer token is configured on Intently’s side)
  3. Microsoft — OAuth token with msads.manage (Connect flow preferred; developer token is on Intently’s side)

In settings:

  1. Click Connect with … when available, or paste a token under advanced options
  2. Confirm account / customer ids
  3. 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

Next