Ads hub reference
The Ads hub is the dashboard surface for the Meta click-to-chat ads loop: connect one Meta Ad Account per organization, run campaigns whose destination is a WhatsApp, Messenger, or Instagram Direct conversation, activate CDP segments as hashed Custom Audiences, ingest Meta lead-form submissions as contacts, and forward conversions back to Meta. This page is the field-level reference for what is on the hub; the narrative version lives in Ads hub: first Meta connect, first attributed lead. Every control on the hub is tenant-owned: you connect your own Meta account, your segments define the audiences, and nothing renders until you put data in.The connection cards
Until a Meta Ad Account is connected, all four tabs render only the Connect Meta Ad Account card: a how-it-works list, a Connect via Settings button that deep-links to the Meta Ads connector card under Settings > Channels, and an Early access badge while the channel is still rolling out. Every Ads endpoint exceptGET /ads/status returns CHANNEL_UNAVAILABLE while no connection exists.
Once connected, the top of the hub shows:
If
GET /ads/status itself fails (a 401/403/500), the tab shows a real error with Try again, not the connect card. A failed status read never looks like “not connected yet.”
The four tabs
Ad Campaigns
Create and manage click-to-chat campaigns.Conversions
The Meta Conversions API (CAPI) card, with three surfaces.Audiences
Custom Audiences linked to CDP segments.Lead Ads
Each
leadgen_id is fetched from Meta’s Graph and upserted through the same dedupe-consent-audit path as a CSV import.
Attribution has no tab by design: GET /ads/ctwa/attribution is the report. Read it over the API and render it wherever you need it; the model behind it is Ads attribution and lead ingestion.
Roles and permissions
Connect and the typed-DISCONNECT guard
Connect runs once per organization:- Click Connect via Settings on the hub’s connect card, or go straight to Settings > Channels > Meta Ads.
- Click Connect Ad Account. In Meta’s OAuth dialog, sign in with the Facebook account that administers the business and pick the ad account.
- Meta redirects back with an authorization code; the callback exchanges it over
POST /ads/oauth/exchange, stores the long-lived token encrypted at rest, and records thead_account_idand the billingcurrency. - Validate with
GET /ads/status: a working connection returnsconnected: true, thead_account_id, andcurrency. Every other Ads endpoint returnsCHANNEL_UNAVAILABLEuntil it succeeds.
DISCONNECT (all caps, case-sensitive) before the confirm button enables, and DELETE /ads/disconnect only fires after the phrase matches. The step-by-step walkthrough is in Ads hub: first Meta connect, first attributed lead; the object-verb map is in the Ads console walkthrough.
Empty states
What renders per tab before Connect, and what an empty tile means after Connect.
If a tab shows the connect card where you expected data,
GET /ads/status still returns connected: false; re-run the OAuth exchange. The long-form version of each case is the FAQ in the hub walkthrough.
Related docs
- Ads API reference: every endpoint behind the tiles.
- Ads attribution and lead ingestion: the first-touch attribution model the hub implements.
- Ads hub: first Meta connect, first attributed lead: the narrative walkthrough this page references.
- Ads console walkthrough: the object-verb map and troubleshooting.
- Meta Ads: segment to campaign to attribution: the loop over the API with copy-pasteable curl.
- Your first attributed lead, end to end: the same loop in tab order.
- Ads: scope and feature boundaries: the network, destination, and objective boundary.