Skip to main content

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 except GET /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:
  1. Click Connect via Settings on the hub’s connect card, or go straight to Settings > Channels > Meta Ads.
  2. Click Connect Ad Account. In Meta’s OAuth dialog, sign in with the Facebook account that administers the business and pick the ad account.
  3. 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 the ad_account_id and the billing currency.
  4. Validate with GET /ads/status: a working connection returns connected: true, the ad_account_id, and currency. Every other Ads endpoint returns CHANNEL_UNAVAILABLE until it succeeds.
Disconnect stops live data flow from Meta and disables click-to-chat campaigns, and reconnecting means a fresh Meta re-authorization. The banner’s Disconnect button therefore opens a dialog that requires typing 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.