Connect Google Ads

Last updated: May 19, 2026

Connect Google Ads

Open /connect/google-ads, click Connect, sign in to Google with an account that has Google Ads access, grant the adwords scope. Pick which customer accounts (direct or via MCC) to import. Sync starts within 15 minutes.

Who is this for

Mediabuyers, managers, admins, owners running Google Ads. Manager role or higher required to connect.

Before you start

You need:

  • A Google account with access to at least one Google Ads customer account (direct) OR an MCC (manager account)

  • Browser pop-ups enabled for app.wevion.ai

  • The Wevion role manager, admin, owner, or super_admin

If you're new to MCC vs direct accounts, read gog-102 MCC vs direct first.

How to connect

Step 1: Open the connector page

In the sidebar click Connect → Google Ads or jump to /connect/google-ads. The page shows the permissions Wevion will request plus a list of already-connected Google accounts (if any).

Step 2: Click Connect

Click Connect (top right). A Google OAuth popup opens.

Step 3: Sign in to Google and authorize

In the popup:

  • Log in with your Google account

  • Google shows the permission Wevion is requesting: https://www.googleapis.com/auth/adwords (verified in apps/backend/src/providers/google/core/constants.ts GOOGLE_ADS_SCOPES)

  • Click Continue

This is the only Google Ads scope Wevion requests. It covers reading and writing campaigns, ad groups, ads, keywords, audiences, and conversions on accessible customers.

Step 4: Asset selection

After OAuth completes, Wevion fetches your accessible customer accounts:

  • Direct customer: appears as a single row with customer name + ID

  • MCC: appears as a manager row that expands to show all child customers Wevion can access via the MCC

Tick which customers to import. Click Import selected. Backend creates google_token + google_ad_account rows.

Step 5: First sync

The first sync pulls last 90 days of campaigns, ad groups, ads, keywords, audiences, conversion actions, insights. For typical accounts this takes 5-20 minutes.

Status badge per customer: SyncingSynced when done.

What you'll see when it works

  • Connector card: green badge, Connected

  • Account count visible (e.g. "3 customers imported")

  • Dashboard at /dashboard populates within 15-30 minutes

  • Ads Manager at /ads-manager shows imported campaigns

  • Toast: "Imported N campaigns from Google Ads"

Customer accounts vs Manager accounts

Type

Purpose

Customer ID

Customer (direct)

Advertiser's account; ads run from here, customer is billed

10-digit (e.g. 123-456-7890)

Manager (MCC)

Owns + manages multiple customer accounts; doesn't run ads itself

10-digit

Wevion uses Google's loginCustomerId header internally (verified in apps/backend/src/providers/google/domains/account.provider.ts) to scope API calls when accessing customers via MCC. You don't need to think about this — Wevion handles it.

See gog-102 for the full pattern.

Conversions setup

After connecting, set up at least one conversion action to enable optimization for Sales / Leads campaigns. See gog-103 conversions setup.

Multiple Google users

Like Meta, different teammates can each connect their own Google account → Wevion sees the union. Useful for agencies where the client manages their own Google Ads and grants the agency access via different Google accounts per client.

Token model

Google's refresh token has no fixed expiry (lives until user revokes the app in Google Account settings, or up to 6 months of inactivity for small apps). Wevion auto-refreshes the short-lived access token every ~50 minutes silently.

If refresh fails (user revoked, password change in some setups), the connector card turns yellow with Reconnect button. See gog-105 token refresh.

Wevion uses Google Ads API (not AdWords)

Heads up: Google rebranded "AdWords API" to "Google Ads API" years ago. Wevion uses the current Google Ads API (verified vs apps/backend/src/providers/google/core/constants.ts GOOGLE_ADS_BASE_URL = https://googleads.googleapis.com/...). Some legacy documentation around the internet still references "AdWords" — Wevion uses current naming throughout.

Common issues

  • OAuth popup blocked: enable popups for app.wevion.ai and retry.

  • "No customer accounts found": your Google account has no Google Ads access. Verify at ads.google.com.

  • OAuth fails with invalid_grant: clock skew on your machine — sync your OS clock. Or Wevion's OAuth app rejected for the scope (rare; contact support).

  • Customer not visible in import list: Google user lacks access. Have the Google Ads account admin grant the user access at the customer level.

  • MCC link missing: even with MCC role, you must have explicit access to each customer. Verify the MCC has the customer linked + your user has role on the MCC.

  • Sync stuck > 1h: rate limit on Google API side. Wait, retry from card menu.

Security

  • Token stored encrypted at rest (GOOGLE_TOKEN_ENCRYPTION_KEY env)

  • Single scope (adwords) — no Gmail, Drive, Calendar, or other Google data

  • Never visible to Wevion staff

  • Revoke any time at myaccount.google.com/permissions

Related