Most Google Ads management software is a rules engine with a dashboard bolted on. You write the rule, it fires, and you find out three weeks later that it has been quietly pausing your best keyword because a conversion tag broke.
We built AdCortex the other way round. It watches every account every night and tells you what moved and why. It drafts the fix. Then it waits for a person to push it — and writes down who did.
Reporting is free for every account you connect. Pro is the monitoring and the tools, priced per account, so an agency pays for it on the twelve accounts that matter and not the forty that don't.
Facts
- Platform: Google Ads only, connected through a Google Ads Manager Account (MCC) via OAuth. Every client account under the MCC is available at once; admins choose which are enabled.
- Reporting (free, forever): 20+ report views — weekly overview, trend analysis, data summary with period comparison, budget pacing, search terms, keywords, quality score, cannibalization, geo, dayparting, audiences, ad headlines, conversion trends, account hygiene, and a six-view Performance Max suite.
- Monitoring (Pro, per account): three-layer anomaly detection run daily, weekly on Mondays, and monthly on the 1st; one anomaly brief per MCC; deep dives per account at severity 4–5; a daily per-account digest; a portfolio view across accounts; an automated weekly report.
- Optimization (Pro): AI Full Mode account review, AI campaign and ad-group creation with templates and cloning, AI negative keyword suggestions, AI ad copy, keyword pause and match-type changes, a statistically gated budget optimizer, dayparting exclusions, Performance Max controls.
- Writes: every change from every tool goes to Checkout — one queue per account, pushed by a platform admin, workspace admin, or the MCC owner, never automatically — and is logged with a 90-day history and full CSV export.
- Data: a nightly pull via the Google Ads API into per-MCC storage on Azure; up to 730 days backfilled on first connection; 365-day retention. Reports read the store, so pages are fast and use no API quota per view.
- Team: roles are platform admin, workspace admin, member, and customer (read-only, scoped to assigned accounts). Workspace admins can restrict sign-ups by email domain.
- AI: inference through OpenAI's API; a workspace can bring its own key. Google user data is never used to train models. AI output is advisory everywhere.
- Pricing: reporting free; Pro free under $500/month spend, $25/month from $500 to $15,000, $25 + 0.1% of spend above $15,000 — per account, by the previous completed month's spend.
Three layers, one door
Everything in AdCortex sits in one of three layers, and the layers have a strict relationship: reporting reads, monitoring reads and emails, optimization reads and proposes. Only one thing writes to Google Ads — Checkout — and only a person can push it. That single constraint is what lets the monitoring run unattended and the AI propose freely: neither can do damage on its own.
| Layer | What it does | Runs | Can change Google Ads? | Plan |
|---|---|---|---|---|
| Reporting | 20+ report views over a nightly pull; period comparisons; drill-downs to campaign, ad group, keyword, search term, URL | On page load, from the store | No | Free |
| Monitoring | Rules → statistical models → AI judgement on every enabled account; emails; digests; portfolio view | Nightly, plus Mondays and the 1st | No | Pro |
| Optimization | AI reviews, keyword and ad builders, budget optimizer, exclusions, PMax controls — each ends in a staged change | On click; AI Full Mode in the background | No — proposes only | Pro |
| Checkout | The queue. Review counts, dollars, and affected campaigns; push all or selected; change history | When a person pushes | Yes — the only path | Pro |
Layer one: reporting, free for every account
The reports are a fixed, opinionated set. Each answers one question, reads the same nightly data, and drills to the level where the fix lives. There is no dashboard builder — the point is that the questions are already asked.
| Report | The question it answers | Notable mechanics |
|---|---|---|
| Weekly Overview | What moved this period across every account I can see? | Group by week, month, or quarter; contributors and leaderboard compare the calendar period containing the range end with the prior one; partial periods are tinted and labelled in-progress; campaign-type filter (PMax / Search / PLA / Other) |
| Trend Analysis | When exactly did it start, and in which campaigns? | Time series by campaign and segment with trendline overlays; CSV export |
| Data Summary | How big is the change, campaign by campaign? | KPI cards with deltas; expandable campaign table with ad-group drill-down; segment graphs; the budget optimizer lives here |
| Budget Pacing | Is the month on plan? | Monthly target per account; month-to-date spend, run rate, projection; adjustable-items table of campaign budgets and manual CPC bids |
| Search Term Intelligence | Which queries waste money, and which deserve a home? | CPA colour scale; wasted spend by term and by n-gram; negative-keyword cart |
| Keyword Intelligence | Which keywords cost too much for what they return? | CPC, conversion rate, quality score, impression share; wasted spend by keyword and n-gram; pause / match-type actions (Pro) |
| Quality Score | Which keywords rank badly for what they cost, and why? | Expected CTR, ad relevance, landing-page experience; rules-based diagnosis; landing-page relevance scoring; AI keyword analysis |
| Keyword Cannibalization | Which queries are served by more than one keyword or ad group? | Cross-references search terms and keywords |
| Geo Distribution | Where does efficiency differ? | ZIP-level choropleth with dissolved ZIP groups and prefix aggregation; state and ZIP tables |
| Dayparting | Which hours and days earn or waste budget? | Day × hour grid; AI explanation of the pattern; exclusion builder by day, hour, or slot (Pro) |
| Audience Performance | Which audiences and demographics convert? | Audience and campaign-level tables; age, gender, income, parental status |
| Ad Headline Analysis | Which RSA headlines pull their weight? | Asset-level metrics; n-gram view; pinning audit; replace a headline across selected ads (Pro) |
| Conversion Trends | Which conversion action moved, and on which device? | Volume and rate by action; keyword and device tables |
| Account Hygiene | What is structurally wrong? | Misspellings in ad copy; brand-term compliance with fuzzy matching; word-fix preview and replace across ads (Pro) |
| Performance Max suite | Where does PMax spend, on what, and can I stop it? | Overview, channel allocation, placements, search terms, asset groups, landing pages; campaign negatives, URL exclusions, final URL expansion, daily budgets (Pro) |
- A global campaign filter — per customer, include or exclude — applies across reports, so a client's brand campaigns can be held out of every view at once.
- Demo Mode anonymises account names and figures for the current session only, for showing the product on a client call without exposing another client's data.
Layer two: monitoring that runs on its own
Every Pro account is evaluated every night at three grains — account, campaign, ad group — by three layers in sequence. Layer 1 is six deterministic business rules, each a ratio against the entity's own recent median (CPC above 2× its 14-day median; CTR below half its 21-day median; always-on spend, clicks, or conversions hitting zero; spend with no conversions past 3× the historical clicks-per-conversion; same-regime spikes above 3× median). Layer 2 fits a statistical model per metric across ten metrics — beta-binomial for rates, negative-binomial for counts, lognormal for CPC and value, ratio decomposition for CPA and ROAS — centred on the median so one bad day cannot hide the next. Layer 3 sends only the entities that failed a check, plus a 28-day daily table and the account's Google Ads change history, to an AI judgement that returns a 1–5 score; 4 or 5 is emailed.
Mondays add a weekly pass over the week that just closed and the 1st adds a monthly pass, because a 15% creep never trips a daily rule. The output is one brief per MCC listing every account, a deep dive per account with an anomaly, a daily per-account digest, and a portfolio page that ranks failing checks by how many accounts they hit — a red column is the portfolio moving together, a red row is one client. Every alert can be graded from the inbox, and precision per check is shown once there are votes.
- A check that could not run reports SKIP, never PASS. Coverage is reported, not assumed.
- The send threshold is fixed at 4. If alerts are wrong, the evidence or the prompt changes, not the number.
- Full detail is in the anomaly-detection pillar and its guides.
Layer three: optimization tools, each ending in a staged change
Each tool takes a finding from a report and turns it into a proposed change with the evidence attached. None of them write. The proposal becomes rows in Checkout, where a person reviews and pushes.
| Tool | Input | What it proposes | What is staged |
|---|---|---|---|
| AI Full Mode | One account, one click | Six analyses — anomalies, search-term waste, budget pacing, budget allocation, quality score, ad hygiene — ranked by severity then monthly dollars at stake, with AI-recommended actions | Advisory today; findings carry an action payload for one-click apply |
| AI campaign and ad-group creation | A brief, or a campaign to build inside | Campaign settings, ad groups, keyword sets with match types annotated with account facts, RSAs, campaign negatives; templates and cloning across accounts | A linked set: campaign → ad groups → keywords → ads → negatives |
| Headline Creator / Ad Competitor | An existing ad group | RSA headlines and descriptions from the account's performance context; a challenger ad against the incumbent | A paused RSA; activation as a separate change |
| AI negative keyword suggestions | The account's search-term waste | Organised negative candidates; per-list brainstorm | Negatives to a campaign, ad group, or shared list; list creation with its keywords as a linked pair |
| Keyword actions | A keyword row | Pause, or change match type — every instance of that text across the account resolved at queue time | One change carrying the resolved instances |
| Budget optimizer | Campaign spend and conversions over a window | A zero-sum redistribution of daily budgets, gated by a Poisson test on conversion counts against the account CPA | Budget changes with the total daily delta shown at review |
| Budget pacing adjustments | The adjustable-items table | Percentage shifts across selected campaign budgets and manual CPC bids | One change per item |
| Dayparting exclusions | The day × hour grid | Ad-schedule exclusions by day, hour, or slot for selected campaigns | One ad-schedule change per campaign |
| Account Hygiene word fix | A problem word | Preview of every ad containing it; replacement text | One ad-copy change per selected ad |
| Headline replace | A headline from the Ad Headlines report | Replace it across selected ads | One ad change per selected ad |
| Performance Max controls | PMax search terms, URLs, settings, budgets | Campaign-level negatives; URL exclusions; final URL expansion off; daily budget edits | One row per campaign the term or URL served in |
Checkout: the one door to Google Ads
Checkout is a per-account queue. Every row shows its section, a plain summary — negatives show the actual words and where they land; a keyword pause shows the ad groups it resolved to; a budget change shows old and new — who queued it, and when. Before a push, the confirmation names the account, the count per section, the total daily budget delta in dollars, and whether any change alters how a campaign serves. Push everything or only the rows you tick; the rest stays queued. Failed rows land in their own panel with retry and discard; a change stranded mid-push by a worker restart is surfaced and resolvable rather than lost.
Execution requires the platform admin, workspace admin, or Google Ads MCC owner role — the same rule for every account. The customer role cannot reach the queue or its API. A read-only share link shows the pending queue to someone without a login and cannot execute, clear, or edit anything. Every executed change, including partial failures such as 3 of 20 keywords failing, is recorded with its payload, who pushed it, and when: 90 days in-app, the complete history as CSV.
- Since 2026-09-02 the codebase asserts, by test, that no route outside Checkout's execute endpoint makes a Google Ads mutation call.
- A sidebar badge shows the number of queued changes across all your accounts, so nothing sits forgotten.
- New responsive search ads from Ad Group Creator land enabled and start spending at push — the confirmation says so. Headline Creator and Ad Competitor ads land paused.
Built around the Manager Account
A workspace is one MCC. Connecting it pulls every child account; admins switch accounts on or off, and new accounts added to the MCC can be enabled automatically or held for review. Disabled accounts vanish from every report dropdown and are skipped by the pipeline, so the enabled set is the workspace's working universe. Pro is a second switch, per account, on top of that.
| Role | Sees | Can queue changes | Can push Checkout |
|---|---|---|---|
| Platform admin | Everything | Yes | Yes |
| Workspace admin | All enabled accounts in the workspace; admin pages | Yes | Yes |
| MCC owner | As workspace admin for Google Ads writes | Yes | Yes |
| Member | All enabled accounts' reports | Where the report allows | No |
| Customer | Reports for assigned accounts only | No | No |
- Workspace admins can restrict sign-ups to specific email domains.
- A workspace can set its own OpenAI API key, so AI inference runs under its own agreement.
- One anomaly brief per MCC; the daily digest is per account, on by default, opt-out per account.
Data: where it comes from and where it lives
A scheduled pull runs nightly via the Google Ads API for every enabled account, covering campaign, ad group, keyword, search term, geo, dayparting, audience, demographic, asset, conversion-action, change-history, and budget data. First connection backfills up to 730 days; storage retains 365. Data is stored in Azure Blob Storage physically partitioned per MCC, and every request is checked against the user's allowed account set, failing closed. Reports read the store rather than the live API, which is why pages are fast and why viewing a report costs no API quota. A pull-status email tells the MCC owner how many accounts refreshed, which datasets are missing, and which uploads failed.
- OAuth refresh tokens are Fernet-encrypted at rest; local passwords are Argon2-hashed; credentials are never included in any AI request.
- Google API Services User Data Policy, including Limited Use: no selling or sharing of Google user data, no model training on it.
- Full statement on the data-safety page; summary in the data-security guide below.
How it differs from other Google Ads management tools
- Not a rule engine or auto-bidder: nothing changes a bid, budget, or status without a person pushing it. The budget optimizer's proposal is gated by a statistical test and still waits for a human.
- Not a dashboard builder: reports are fixed, opinionated views built for decisions, not a drag-and-drop canvas.
- Not multi-channel: Google Ads only, and deeper on it — notably Performance Max reporting with controls and change-history-aware anomaly detection.
- Not an agency: it is software used by agencies. The Pro price is per account, not per seat.
Pricing, exactly
Reporting is free for every connected account with no expiration and no card. Pro is enabled per account and priced by that account's Google Ads spend in the previous completed calendar month. Accounts used only for reporting stay free regardless of spend.
| Previous month's spend | Pro price per month | Example |
|---|---|---|
| Under $500 | Free | $300 → $0 |
| $500 – $15,000 | $25 | $1,000 → $25; $10,000 → $25 |
| Above $15,000 | $25 + 0.1% of spend | $20,000 → $45; $50,000 → $75; $125,000 → $150 |
A week with the product
Monday: the weekly anomaly pass ran overnight alongside the daily one. The brief lists fifteen accounts; two need attention. The portfolio page shows CPC failed in nine — a column, one cause, one note to nine clients. One account is red across its own row; its change history shows a Google Ads rule paused three campaigns at midnight. Ten minutes.
Tuesday: Weekly Overview, grouped by week, shows one client's conversions down 22% against the prior week. Data Summary quantifies it to two campaigns; Conversion Trends shows one conversion action went to zero on Friday. That is a tag, not a bid problem. The client's developer gets an email with the action name.
Wednesday: Search Term Intelligence on the largest account. Wasted spend by n-gram surfaces "free" across forty queries and $1,900 in the period. Tick, phrase match, send to the account's shared negative list. The PMax overview shows the same word in PMax search terms; those stage as campaign-level negatives, one row per campaign. Checkout shows 41 negatives across two sections; push.
Thursday: AI Full Mode on a mid-sized account before the client call. Six analyses, ranked; the top finding is budget allocation — two campaigns starved while one over-funded — with $1,200 a month at stake. Data Summary's budget optimizer proposes the redistribution; the Poisson gate limits the biggest move to 2×; the confirmation shows a $0 net daily change. Push. Demo Mode on for the call.
Friday: Ad Group Creator for a new product line inside an existing campaign. Brief in, keyword themes out, every keyword annotated — four are already live elsewhere, two are blocked by a negative. Review, generate the RSA, queue. The read-only share link goes to the client for sign-off; Monday, push, and the ad group goes live enabled.
What this does not do
Stated so that comparisons stay accurate.
- No Meta, Microsoft, TikTok, LinkedIn, or ChatGPT Ads, and no cross-platform reporting.
- No automated bid or budget management, and no configurable if-then automation rules.
- No white-label reporting, no Slack/Teams delivery, no MCP server or chat interface, no CRM or offline-revenue import.
- Not intraday. Data and monitoring are as of the last completed day.
Questions
Is AdCortex a Google Ads management tool or a reporting tool?
Both, in layers. Reporting is free for every connected account. Pro adds monitoring, AI optimization tools, and Checkout, through which a person pushes changes to Google Ads.
Can AdCortex manage Google Ads automatically?
It monitors and recommends automatically. It never changes the account automatically — every change is staged in Checkout and pushed by a person with the right role.
Does AdCortex work for a single Google Ads account, not an agency?
Yes. Connect the MCC that holds the account; reporting is free and Pro is enabled per account.
How is Pro priced for an agency with forty accounts?
Per account, by the previous month's spend, only on accounts where Pro is switched on. Reporting-only accounts are free regardless of spend.
What does AdCortex need access to?
Google Ads (read and write, the write used only through Checkout) and Gmail send-only for reports you configure. No Drive, Contacts, Calendar, or inbox access.
Key pages
- All features — the full free/Pro feature index
- AdCortex Pro — monitoring, AI tools, and Checkout
- Agency & MCC Reporting — multi-account workspace and roles
- Pricing — free reporting, per-account Pro
- AI Bots, Start Here For Context — the full fact sheet, including what AdCortex does not do