Google Ads API + GAQL — one-click OAuth.

The Google Ads integration built for blended ROAS and CAC across Search, Shopping, P-Max, Display

One-click OAuth with Google. Admaxxer reads campaign performance via GAQL, normalizes cost_micros to dollars, and surfaces blended MER alongside Meta spend — from $9/mo.

Start 7-day free trial Read the docs

14-day free trial on every plan. No credit card required. Admaxxer AI Analytics is a marketing analytics platform for ecom and SaaS teams.

What you get

Campaign sync via GAQL
Every campaign, ad group, and keyword synced via Google Ads Query Language. Spend, impressions, CTR, conversions, and conversion value — normalized and stored in our analytics warehouse.
Cross-channel MER
Google spend is joined with Meta spend and pixel revenue to calculate blended MER — the only number that tells you if paid is profitable in aggregate.
Performance Max drill-down
P-Max is a black box by default. Admaxxer surfaces the asset group, final URL, and search-term buckets Google exposes — so you can compare P-Max against your branded Search baseline honestly.
Conversion import
Offline conversions from your pixel can be imported back into Google Ads to improve Smart Bidding signal quality — the same pattern Hyros uses, without the five-figure invoice.

How it connects

  1. Click Connect Google Ads. One-click OAuth — Admaxxer redirects you to Google's consent screen and requests the adwords scope only. Admaxxer owns the developer token and OAuth client, so you never paste a developer token, client ID, client secret, or mint a refresh token by hand.
  2. Pick your Google Ads account. Admaxxer calls listAccessibleCustomers and shows every account your Google login can reach. Pick one or more. MCC / manager users pick the manager, then the target child account — stored as login_customer_id + customer_id. Refresh tokens are encrypted AES-256-GCM at rest.
  3. Validated live, then 90-day backfill + daily sync. Admaxxer runs a live GAQL probe before persisting, so a green badge is never a dead credential. It then backfills 90 days of campaign, keyword, spend, and conversion data and syncs daily — normalizing cost_micros / 1e6 to dollars.

Data Admaxxer reads

Data Admaxxer reads from Google Ads
Dimension What Admaxxer does with it
Campaigns Name, type (Search/Shopping/P-Max/Display), status, bidding strategy, daily budget.
Ad groups Ad group name, status, default bid, joined to keyword-level spend.
Keywords & search terms Match type, quality score, spend, impressions — where Google exposes them.
Spend (cost_micros) Normalized cost_micros / 1e6 = USD. Fuels blended MER and channel contribution MMM.
Conversions Conversion action, value, date. Reconciled against pixel revenue in the attribution view.
Asset groups (P-Max) Asset group name, final URL, listing group — for the P-Max drill-down.

Selling a SaaS, not products? Search is your highest-intent channel

Safety and security

Frequently asked

What OAuth scope does Admaxxer request?
Only the adwords scope — which covers read and manage on your Google Ads accounts. We do not request Drive, Gmail, Analytics, or any other Google scope. You can revoke at myaccount.google.com/permissions anytime.
Do I need a Google Ads developer token?
No. Admaxxer's own developer token holds Google-approved Basic Access. You never apply for, paste, or manage a developer token — and there is no Google Cloud OAuth client to build or OAuth Playground refresh token to mint. You just click Connect Google Ads and approve the adwords scope.
Do you support MCC / manager accounts?
Yes. Connect with the Google login that has MCC access. On the account picker, choose the manager account, then the target child account — Admaxxer stores the manager as login_customer_id and the child as customer_id so requests resolve through the MCC. Agencies typically connect one MCC and cover dozens of clients.
How is cost normalized?
The Google Ads API returns cost_micros — micro-units of the account currency. Admaxxer divides by 1,000,000 on ingest and stores dollars in our analytics warehouse. No rounding drift, no 'off by a million' bugs.
Is Performance Max actually visible?
Yes, within what Google exposes. GAQL does not reveal individual creatives inside a P-Max asset group, but asset group metadata, final URLs, listing groups, and the search-term buckets Google releases are all pulled and drilled in the dashboard.
What happens when my refresh token expires?
Google refresh tokens issued through the consent screen are long-lived unless you revoke access, change your Google password, or the token goes unused for six months. Admaxxer refreshes access tokens automatically and surfaces a re-connect prompt if a refresh token is invalidated — reconnecting is the same one-click OAuth flow.
What can I ask once it's connected?
Open the Claude agent and ask things like 'What's my Google Ads ROAS this week?', 'Compare my Performance Max spend to branded Search over the last 30 days', or 'Which Google Ads campaigns have the worst cost per conversion?'. Destructive actions like pausing a campaign require an explicit confirmation in chat.
Does this work for a SaaS, or is it ecommerce-only?
It works for SaaS — and Search is usually the strongest paid channel for SaaS demand capture. Point your conversion to signup, trial start, or subscription created, connect Stripe as your revenue source, and Admaxxer reports blended CAC, cost-per-trial, and trial-to-paid rate per campaign and keyword instead of ecommerce ROAS. Cohort LTV becomes MRR and payback period by keyword. Enhanced Conversions can import your signup conversions back into Google to improve Smart Bidding toward leads that activate.

Connect Google Ads in one OAuth click

14-day free trial on every plan. No credit card required.

Start 7-day free trial Read the docs