Docs

Connect Meta Ads

Two ways to authenticate

The deployment's Meta auth config decides which one you see (Composio setup):

ModeWhenWhat you do
OAuth (own Meta app with ads_read advanced access)self-serve tenantsclick Connect, sign in with Facebook, allow access
System-user token (API-key mode)your own business, works without Meta app reviewcreate a system user in Business Manager, assign the ad accounts (and the pixel, for conversion uploads), generate a token with ads_read (+ ads_management only if you upload conversions through Composio) and paste it

System-user tokens do not expire unless you choose an expiry. Personal OAuth tokens expire after about 60 days; 3x shows Reconnect when that happens.

Connect

  1. Dashboard → Settings → Integrations → Meta Ads → Connect.
  2. Authenticate (OAuth or token).
  3. Select the ad accounts (act_…) of this project. Currency and time zone come from the account.
  4. A 90-day backfill starts in 30-day chunks.

What is imported

DataNotes
Campaigns, ad sets, adsnames, status and the ad's URL parameters (url_tags) – used for URL-tag matching
Daily insights per adspend, impressions, clicks (link clicks), leads/purchases and their value

Meta reports conversions with an attribution window; 3x requests and stores 7d_click + 1d_view so platform numbers are stable and comparable over time. These platform conversions are shown next to 3x's own leads and conversions – never added to them.

Numbers arrive as strings from the API and are normalized; amounts are in the account currency and converted to the project currency with daily ECB rates.

Put the UTM template into every ad's Tracking → URL parameters (it uses Meta's dynamic {{campaign.id}}, {{adset.id}}, {{ad.id}} macros). Meta appends fbclid itself; 3x keeps it complete for conversion uploads.

Troubleshooting

SymptomCauseFix
Error code 17 / 80000 in the sync logMeta rate limit for the ad accountnothing – the run is retried automatically after the advertised wait
Ads without URL parameters stay unmatchedno utm_* on the adadd the template or create a mapping rule
Spend differs for "today"Meta finalizes the day latercompare closed days
(#200) Permissions errortoken lacks access to the ad accountassign the account to the system user / reconnect