> ## 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.

# Destinations vs data sources: a complete guide

> Destinations send data to ad platforms and email tools; data sources pull data from them. Configure both to power unified attribution, ROAS reporting, and event enrichment in Upstack Data.

Two of the most important concepts in Upstack Data are **destinations** and **data sources** (referred to in the dashboard as **Sources**). They sound similar but serve opposite functions — and understanding the difference is essential for setting up your account correctly and getting accurate attribution data.

## The core distinction

<CardGroup cols={2}>
  <Card title="Destinations" icon="arrow-right-from-bracket" href="/destinations/overview">
    Platforms Upstack **sends** event data **to**. When a customer views a product, adds to cart, or purchases, Upstack captures the event, enriches it with identity data, and pushes it to your destinations via server-side APIs.
  </Card>

  <Card title="Data sources (Sources)" icon="arrow-right-to-bracket" href="/sources/overview">
    Platforms Upstack **pulls** data **from** for reporting and analytics. To show which campaigns are driving revenue and at what cost, Upstack pulls in your ad spend, impressions, and click data from each platform.
  </Card>
</CardGroup>

Think of it this way:

* **Destinations** = Upstack pushing data **OUT** (events going to ad platforms and marketing tools).
* **Sources** = Upstack pulling data **IN** (spend and performance data for your dashboard).

## Why the distinction matters

You might wonder why these are separate. After all, Meta is both a destination (Upstack sends purchase events to it) and a source (Upstack pulls spend data from it). They're configured separately because they serve different purposes and require different permissions:

* **Sending events** (destination) requires write access to a platform's conversion API — like [Meta CAPI](/destinations/meta-capi) or [Google Ads](/destinations/google-ads) offline conversions. This is about feeding the ad platform real-time conversion data for optimization.
* **Pulling spend data** (source) requires read access to a platform's reporting API. This is about bringing performance data into Upstack's [attribution dashboard](/concepts/attribution-and-reporting) so you can see the full picture in one place.

You can connect a platform as a destination without connecting it as a source, and vice versa. But for the complete picture — events flowing out and spend data flowing in — you'll want both.

## Available destinations

Destinations receive enriched event data from Upstack via server-side APIs. Each destination gets relevant ecommerce events along with identity parameters for user matching.

| Destination    | API used                       | Events sent                                                       | Identity data sent                                         |
| -------------- | ------------------------------ | ----------------------------------------------------------------- | ---------------------------------------------------------- |
| **Meta CAPI**  | Conversions API                | Purchase, AddToCart, ViewContent, InitiateCheckout, custom events | Hashed email, phone, name, IP, user agent, `fbclid`, `fbp` |
| **Google Ads** | Offline / Enhanced Conversions | Purchase, conversion events                                       | `gclid`, hashed email, phone                               |
| **TikTok**     | Events API                     | Purchase, AddToCart, ViewContent, funnel events                   | Hashed email, phone, IP, user agent, `ttclid`              |
| **Pinterest**  | Conversions API                | Purchase, AddToCart, ViewContent                                  | Hashed email, click ID, IP, user agent                     |
| **Klaviyo**    | Klaviyo API                    | Browse, cart, purchase events for flow triggering                 | Email, customer properties, event metadata                 |
| **Snapchat**   | Conversions API                | Purchase, conversion events                                       | Hashed email, phone, IP, click ID                          |
| **Omnisend**   | Omnisend API                   | Browse, cart, purchase events                                     | Email, customer properties, event metadata                 |
| **Webhooks**   | Custom HTTP                    | Any configured event                                              | Full enriched payload                                      |

<Note>
  GA4 is no longer a supported destination for new connections and is being deprecated.
</Note>

## Available data sources

Data sources provide Upstack with the information it needs to build your attribution dashboard and calculate key metrics like ROAS.

| Data source                                      | Data pulled                                                       | Used for                                                                               |
| ------------------------------------------------ | ----------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| **[Shopify](/sources/shopify)**                  | Orders, revenue, products, customer data, refunds                 | Revenue attribution, order-level reporting, customer classification (new vs returning) |
| **[Facebook Ads (Meta)](/sources/facebook-ads)** | Campaign spend, impressions, clicks, campaign/ad set/ad structure | ROAS calculation, spend-to-revenue comparison, campaign-level attribution              |
| **[Google Ads](/sources/google-ads)**            | Campaign spend, impressions, clicks, campaign structure           | ROAS calculation, spend-to-revenue comparison, campaign-level attribution              |
| **[TikTok](/sources/tiktok)**                    | Campaign spend, impressions, clicks, campaign structure           | ROAS calculation, spend-to-revenue comparison, campaign-level attribution              |

## How they work together

The real power of Upstack comes from destinations and sources working in tandem:

<Steps>
  <Step title="Events go OUT via destinations">
    A customer makes a purchase. Upstack captures the event, enriches it with identity data, and sends it to Meta via CAPI, Google via offline conversions, and any other connected destinations.
  </Step>

  <Step title="Spend data comes IN via sources">
    Upstack pulls your daily ad spend, campaign structure, and performance metrics from Meta, Google, TikTok, and Shopify.
  </Step>

  <Step title="The attribution dashboard combines both">
    Upstack's [Analytics](/concepts/attribution-and-reporting) matches revenue from Shopify orders (attributed through its own model) against spend data from your ad platforms. This gives you a unified view: how much you spent on each channel, how much revenue each channel drove, and your true ROAS — without relying on each platform's self-reported numbers.
  </Step>
</Steps>

Without destinations connected, your ad platforms don't receive enriched conversion data and can't optimize effectively. Without sources connected, your Upstack dashboard can't show spend or calculate ROAS. You need both for the full picture.

## Setup priority order

If you're configuring Upstack for the first time, here's the recommended order:

<Steps>
  <Step title="Phase 1 — Critical (Day 1)">
    1. **Meta as a destination** — get enriched events flowing to your highest-spend platform.
    2. **Google Ads as a destination** — second-highest priority for most brands.
    3. **Shopify as a source** — usually connected automatically during installation.

    See [Connect a destination](/get-started/connect-a-destination) for the step-by-step.
  </Step>

  <Step title="Phase 2 — Important (Day 1–2)">
    4. **Meta as a source** — pull spend data so your dashboard can calculate ROAS.
    5. **Google Ads as a source** — same reason.
    6. **Klaviyo as a destination** — if you use Klaviyo for email/SMS marketing.
  </Step>

  <Step title="Phase 3 — Expand (Week 1)">
    7. **TikTok, Pinterest, Snapchat, Omnisend as destinations** — connect any additional platforms you advertise on or use for marketing automation.
    8. **TikTok as a source** — to see TikTok spend in your dashboard alongside Meta and Google.
  </Step>
</Steps>

## Common confusion

<AccordionGroup>
  <Accordion title="I connected Facebook — why don't I see spend data?">
    Connecting Facebook as a **destination** ([Meta CAPI](/destinations/meta-capi)) only sets up event sending. You also need to connect [Facebook Ads as a source](/sources/facebook-ads) to pull in spend and campaign data for your attribution dashboard.
  </Accordion>

  <Accordion title="My attribution dashboard shows revenue but no ROAS">
    ROAS requires both revenue data (from Shopify) and spend data (from ad platform sources). If you haven't connected your ad platforms as sources, Upstack can't calculate ROAS. See [Attribution and reporting](/concepts/attribution-and-reporting).
  </Accordion>

  <Accordion title="Do I need to connect Shopify as a destination?">
    No. Shopify is a **source** — Upstack pulls order data from it. Shopify isn't a destination because you don't send tracking events to Shopify; events originate from Shopify.
  </Accordion>
</AccordionGroup>

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Can a platform be both a destination and a source?">
    Yes. Meta, Google Ads, and TikTok are all both destinations (Upstack sends events to them) and sources (Upstack pulls spend data from them). They're configured separately because they use different APIs and permissions.
  </Accordion>

  <Accordion title="What happens if I only connect destinations but not sources?">
    Your ad platforms will receive enriched event data and optimize more effectively, but your Upstack attribution dashboard won't be able to show spend or calculate ROAS. You'll still see revenue attribution, but without the cost side of the equation.
  </Accordion>

  <Accordion title="What happens if I only connect sources but not destinations?">
    Your Upstack dashboard will show spend data, but your ad platforms won't receive enriched server-side events from Upstack. You'd miss out on improved match quality, better optimization signals, and the core value of server-side tracking.
  </Accordion>

  <Accordion title="Do sources update in real time?">
    Ad spend data is typically pulled on a regular schedule (daily or more frequently) rather than in real time. There may be a short delay between when spend occurs on the ad platform and when it appears in your Upstack dashboard.
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="Destinations overview" icon="arrow-right-from-bracket" href="/destinations/overview">
    Every supported destination and its configuration options.
  </Card>

  <Card title="Sources overview" icon="arrow-right-to-bracket" href="/sources/overview">
    Every supported data source and how each one is connected.
  </Card>

  <Card title="Connect a destination" icon="plug" href="/get-started/connect-a-destination">
    Step-by-step setup for your first destination.
  </Card>

  <Card title="Attribution and reporting" icon="chart-line" href="/concepts/attribution-and-reporting">
    How Upstack combines event data and spend data to attribute revenue.
  </Card>

  <Card title="What are destinations?" icon="circle-question" href="/what-are-destinations">
    A focused deep-dive on destinations.
  </Card>

  <Card title="What are data sources?" icon="circle-question" href="/what-are-data-sources">
    A focused deep-dive on sources.
  </Card>
</CardGroup>
