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.aiThe 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 inapps/backend/src/providers/google/core/constants.tsGOOGLE_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: Syncing → Synced when done.
What you'll see when it works
Connector card: green badge, Connected
Account count visible (e.g. "3 customers imported")
Dashboard at
/dashboardpopulates within 15-30 minutesAds Manager at
/ads-managershows imported campaignsToast: "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.aiand 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_KEYenv)Single scope (
adwords) — no Gmail, Drive, Calendar, or other Google dataNever visible to Wevion staff
Revoke any time at myaccount.google.com/permissions
Related
MCC vs direct Google Ads account — understand the customer model
Set up Google Ads conversions — required for Sales/Leads optimization
Connect your first ad platform — generic connect intro