> ## Documentation Index
> Fetch the complete documentation index at: https://docs.upstackdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect Facebook Ads

> Connect your Facebook Ads account as a source to import campaign spend, impressions, clicks, and performance metrics into Upstack Data.

<Note>
  **Data direction:** This is a **source** — data flows **into** Upstack from this platform for analytics, reporting, and enrichment.
</Note>

Connecting Facebook Ads as a source brings ad spend and campaign performance data into Upstack, enabling cost-per-acquisition (CPA) reporting, return on ad spend (ROAS) calculations, and blended attribution across paid and organic channels.

## Prerequisites

<Info>
  **Prerequisites:**

  * An Upstack Data account ([sign up for free](https://app.upstackdata.com))
  * Access to your workspace in the Upstack dashboard
</Info>

You'll also need:

* A **Meta Business Manager** account with admin access
* At least one **Facebook Ads account** with active or historical campaigns
* The **Ad Account ID** you want to connect (found in Meta Business Settings → Ad Accounts)

<Note>
  This is a **source** connection — it pulls cost and performance data **into** Upstack. To send conversion events **to** Meta, see the [Meta CAPI destination guide](/destinations/meta-capi).
</Note>

## Setup

<Steps>
  <Step title="Authenticate with Meta Business">
    In the Upstack dashboard, navigate to **Integrations → Sources** and click **Connect Facebook Ads**.

    Click **Sign in with Meta** to begin the OAuth flow. Log in to your Meta Business Manager account and grant Upstack permission to read your advertising data.

    <Info>
      Upstack requests read-only permissions: `ads_read` and `read_insights`. No permissions to create, modify, or spend on campaigns are requested.
    </Info>
  </Step>

  <Step title="Select ad accounts">
    After authentication, Upstack displays all ad accounts associated with your Meta Business Manager. Select the account(s) you want to sync.

    You can connect multiple ad accounts if you manage separate accounts for different brands or regions. Each account appears as a separate source in the Upstack dashboard.

    <Warning>
      **Select the correct accounts.** Upstack imports spend data for the selected accounts and uses it for ROAS calculations. If you connect the wrong account, your cost metrics won't match your conversion data.
    </Warning>
  </Step>

  <Step title="Authorize and start sync">
    Review the data access summary and click **Confirm**. Upstack immediately begins syncing your ad account data.

    The initial sync imports the last 90 days of campaign performance data. After the initial sync, Upstack pulls updated metrics every 6 hours.
  </Step>
</Steps>

## What Data Flows In

| Metric          | Description                               | Granularity        |
| --------------- | ----------------------------------------- | ------------------ |
| **Spend**       | Total amount spent per campaign/ad set/ad | Daily              |
| **Impressions** | Number of times ads were shown            | Daily              |
| **Clicks**      | Link clicks on ads                        | Daily              |
| **CPM**         | Cost per thousand impressions             | Daily (calculated) |
| **CPC**         | Cost per click                            | Daily (calculated) |
| **CTR**         | Click-through rate                        | Daily (calculated) |
| **Reach**       | Unique accounts that saw ads              | Daily              |

### Campaign Structure

Upstack also imports the full campaign hierarchy:

* **Campaigns** — name, objective, status, budget
* **Ad Sets** — name, targeting, placement, bid strategy
* **Ads** — name, creative ID, status

This structure enables drill-down reporting from campaign-level ROAS down to individual ad performance inside the Upstack dashboard.

<Info>
  Upstack syncs data at the **ad level** and aggregates up. This means you can report at any level of the campaign hierarchy — campaign, ad set, or ad — without any additional configuration.
</Info>

## You'll Know It's Working When...

<Tip>
  **Verification checklist:** Complete all items below to confirm your setup is working correctly. If any check fails, see the troubleshooting section below or the relevant [troubleshooting guide](/troubleshooting/events-not-reaching-destination).
</Tip>

* [ ] Your Facebook Ads source shows **Connected** status in the Upstack dashboard under **Integrations → Sources**
* [ ] Campaign data appears in the **Sources → Facebook Ads** detail page within 30 minutes of initial connection
* [ ] Spend metrics are visible in **Analytics → Attribution** reports alongside your conversion data
* [ ] ROAS calculations populate for campaigns that have both spend data and attributed conversions

## Troubleshooting

<AccordionGroup>
  <Accordion title="No data appearing after connecting">
    **Check the sync status** in **Integrations → Sources → Facebook Ads**. The initial 90-day backfill can take up to 30 minutes depending on the volume of campaigns.

    If no data appears after 1 hour:

    1. Verify the connected ad account has campaigns with spend in the last 90 days
    2. Check that your Meta Business Manager token hasn't been revoked (go to **Meta Business Settings → Users → System Users** and verify the Upstack integration is still authorized)
    3. Try disconnecting and reconnecting the source
  </Accordion>

  <Accordion title="Spend numbers don't match Meta Ads Manager">
    Small discrepancies (under 5%) between Upstack and Meta Ads Manager are normal due to timezone differences and Meta's post-attribution adjustments.

    **Common causes of larger discrepancies:**

    * **Timezone mismatch** — Upstack normalizes spend to UTC. If your Meta account uses a different timezone, daily totals may shift between days.
    * **Attribution window differences** — Upstack imports raw spend (actual dollars spent), not attributed spend. If you're comparing to a Meta report using attributed metrics, the totals will differ.
    * **Multiple ad accounts** — ensure you've connected all ad accounts that contribute spend for your store.
  </Accordion>

  <Accordion title="Token expired or permissions revoked">
    Meta OAuth tokens can expire or be revoked if your Business Manager permissions change.

    If the source status shows an error:

    1. Go to **Integrations → Sources → Facebook Ads**
    2. Click **Reconnect** to re-authenticate with Meta
    3. Re-select your ad accounts and confirm

    Data sync resumes automatically after reconnection. Any data missed during the disconnection is backfilled during the next sync cycle.
  </Accordion>
</AccordionGroup>

***

**Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours.

## Related

<CardGroup cols={2}>
  <Card title="Meta CAPI Destination" icon="meta" href="/destinations/meta-capi">
    Send conversion events **to** Meta — the outbound counterpart to this inbound source.
  </Card>

  <Card title="Attribution and Reporting" icon="chart-mixed" href="/concepts/attribution-and-reporting">
    How Upstack blends ad spend data with conversion events to calculate ROAS and CPA.
  </Card>

  <Card title="Connect Google Ads" icon="google" href="/sources/google-ads">
    Import Google Ads spend data to get a complete picture of your paid media performance.
  </Card>

  <Card title="Integration Catalog" icon="grid-2" href="/sources/overview">
    Browse all available sources and destinations.
  </Card>
</CardGroup>
