> ## 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 Google Ads

> Connect your Google Ads account as a source to import campaign spend, clicks, impressions, 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 Google Ads as a source brings campaign cost data into Upstack, enabling cost-per-acquisition (CPA) reporting, return on ad spend (ROAS) calculations, and unified attribution across Google Search, Shopping, Display, and YouTube campaigns.

## 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 **Google Ads account** with active or historical campaigns
* **Admin** or **Standard** access to the Google Ads account you want to connect
* If you use a **Google Ads Manager Account** (MCC), you'll need access to the specific sub-accounts you want to sync

## Setup

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

    Click **Sign in with Google** to begin the OAuth flow. Log in with the Google account that has access to your Google Ads account and grant Upstack permission to read your advertising data.

    <Info>
      Upstack requests read-only access to your Google Ads data. No permissions to create, modify, or spend on campaigns are requested.
    </Info>
  </Step>

  <Step title="Select ad accounts">
    After authentication, Upstack lists all Google Ads accounts (including sub-accounts under an MCC) accessible to your Google account. Select the account(s) you want to sync.

    Each selected account appears as a separate data source in the Upstack dashboard with its own sync status and metrics.

    <Warning>
      **Match accounts to your store.** Select only the Google Ads accounts that drive traffic to the Shopify store connected to Upstack. Connecting unrelated accounts will skew your ROAS and CPA metrics.
    </Warning>
  </Step>

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

    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 cost per campaign/ad group/ad          | Daily              |
| **Clicks**      | Total clicks on ads                          | Daily              |
| **Impressions** | Number of times ads were shown               | Daily              |
| **Conversions** | Google-reported conversions (for comparison) | Daily              |
| **CPC**         | Cost per click                               | Daily (calculated) |
| **CPM**         | Cost per thousand impressions                | Daily (calculated) |
| **CTR**         | Click-through rate                           | Daily (calculated) |

### Campaign Structure

Upstack imports the full Google Ads hierarchy:

* **Campaigns** — name, type (Search, Shopping, Display, Video, Performance Max), status, budget
* **Ad Groups** — name, targeting, bid strategy
* **Ads** — name, type, status

<Info>
  Google Ads data is synced at the **ad group level** and aggregated up. Performance Max campaigns are reported at the campaign level since Google doesn't expose ad group details for pMax.
</Info>

### Click ID Tracking

When visitors arrive at your store from Google Ads, the `gclid` (Google Click ID) parameter is captured by the Upstack Pixel and stored in the visitor's session. This `gclid` links the ad click to any subsequent conversion events, enabling deterministic click-to-conversion attribution.

## 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 Google Ads source shows **Connected** status in the Upstack dashboard under **Integrations → Sources**
* [ ] Campaign data appears in the **Sources → Google 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 → Google Ads**. The initial 90-day backfill can take up to 30 minutes.

    If no data appears after 1 hour:

    1. Verify the connected account has campaigns with spend in the last 90 days
    2. Confirm you selected the correct account (check the Account ID matches what you see in Google Ads)
    3. If using an MCC, ensure you selected the sub-account, not the manager account itself
    4. Try disconnecting and reconnecting the source
  </Accordion>

  <Accordion title="Spend numbers don't match Google Ads">
    Small discrepancies (under 5%) are normal due to timezone normalization and Google's post-click adjustments.

    **Common causes of larger discrepancies:**

    * **Timezone mismatch** — Upstack normalizes spend to UTC. Google Ads accounts may use a different timezone, causing daily totals to shift between days.
    * **Currency conversion** — if your Google Ads account bills in a different currency than your Shopify store, exchange rate timing can cause minor differences.
    * **Invalid clicks** — Google periodically removes invalid click charges. These adjustments may not be reflected in Upstack's data until the next sync cycle.
  </Accordion>

  <Accordion title="Google OAuth token expired">
    Google OAuth tokens can expire if you change your Google account password, revoke third-party access, or if the token's refresh cycle fails.

    To fix:

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

    Data sync resumes immediately. Any data missed during the disconnection is backfilled during the next sync.
  </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="Google Analytics 4 Destination" icon="google" href="/destinations/ga4">
    Send server-side conversion events to GA4 — 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 Facebook Ads" icon="meta" href="/sources/facebook-ads">
    Import Facebook Ads spend data for a complete view of paid media performance.
  </Card>

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