Docs

Ads overview

3x reads cost and performance data of your ad accounts through Composio and joins it to the sessions those ads produced on your site. Platform dashboards tell you clicks and CPC; 3x tells you cost per relevant session, cost per lead and ROAS measured on your own site – per platform, campaign, ad set and ad. The concept page Ad costs explains the model; this section is the operating manual.

StepWhoGuide
1. Configure Composio for the deployment (API key, auth configs, webhook)operator, onceComposio setup
2. Connect an ad platform (organization or project level)org adminGoogle, Meta, LinkedIn, TikTok
3. Select the ad accounts of the project – a 90-day backfill startsproject adminplatform guides
4. Put the UTM templates on your ads (exact matches)marketerUTM templates
5. Fix unmatched UTMs with mapping rulesmarketerMatching sessions to ads
6. Read the KPIseveryoneCost KPIs

Read-only by design

3x only calls read tools: account discovery, entity lists, daily reports, Google's click view and conversion-configuration reads. It never creates, edits, pauses or deletes campaigns, budgets, bids or audiences. The only write operation that can go through Composio is a conversion upload, and only when you explicitly choose the composio transport on a conversion destination (Conversions).

Where the numbers appear

  • Dashboard → Ads: platform → campaign → ad set → ad table with spend, impressions, clicks, CPC, CTR, matched sessions, relevant sessions, leads, conversions, cost per session / relevant session / lead / conversion and ROAS; a daily spend-vs-sessions chart; the Unmatched UTMs view; the sync log.
  • REST API: GET /v1/projects/{project}/ads/report, …/ads/timeseries, …/ads/unmatched, …/ads/entities, …/ads/sync-runs (scope ads:read); POST …/ads/sync and mapping rules (scope ads:write). See the API reference.
  • MCP: ads_performance, ads_timeseries, ads_unmatched, ads_accounts_list, ads_sync_status, ads_sync_run, ads_utm_templates, ads_mapping_rules_*.

All reports accept the complete analytics filter on the session side – for example cost per relevant session of mobile visitors from Germany who reached the pricing page.

Sync schedule

JobIntervalWhat it does
ads.entitiesevery 6 h and right after connectingcampaigns, ad sets, ads and their URL parameters
ads.metricshourly for today (optional), daily for D-1…D-7 (platforms restate), weekly for D-8…D-30daily spend, impressions, clicks, platform conversions
ads.clicksdailyGoogle click view of yesterday (gclid → ad and keyword)
ads.backfillevery scheduler tick while queued90 days in chunks (30 days, LinkedIn one month), resumes after errors
ads.matchevery 15 minassigns new sessions of the last 90 days to ads
ads.healthdailyconnection status (expired tokens show Reconnect)
ads.fxdailyECB reference rates for currency conversion

Report calls take 10–30 seconds each. On serverless deployments the scheduler continues long backfills in follow-up invocations; what to expect per hosting plan is described in Cron and background jobs.