AI Max Readiness Tool — Scope
Status: Draft, awaiting answers to 4 open questions (see end). Last updated: 2026-05-02 Trigger: All FCR ads → AI Max by September 2026 (~4 months from draft date).
Context
Section titled “Context”Google is migrating Ads accounts to AI Max-style automated bidding by September 2026. AI Max performs poorly on accounts with conversion-tracking gaps, weak signal volume, missing audience signals, or no PMax history. Optimisers need a way to identify which of their accounts will break post-migration while there is still time to fix them — and a portfolio-wide view so the Ads team can plan the migration as a campaign, not a fire drill.
This is not a job for the existing prospect_intel channel — that’s market intel for new business. Optimisers work with existing ad clients and need different categorical questions answered (“show me all my accounts with PMax > 60% spend that have no brand exclusion list”).
Five-Pillar Readiness Checklist
Section titled “Five-Pillar Readiness Checklist”A RED account has a critical issue that will tank performance after the September flip. AMBER is fixable in 4 months. GREEN is migration-ready today.
1. Conversion tracking
Section titled “1. Conversion tracking”- Enhanced Conversions enabled
- GCLID capture rate
- Attribution model = data-driven
- No double-firing (cf. accesstowershop.ie thank-you bug 2026-04-27)
- Cross-domain tracking working
2. PMax history
Section titled “2. PMax history”- Months on PMax (cold-starts under-perform)
- Search-cannibalisation by PMax (brand-search leakage)
- Brand-exclusion list configured
3. Account structure
Section titled “3. Account structure”- Audience signals (≥3)
- Asset library populated (images, headlines, descriptions, sitelinks)
- Branded keywords ring-fenced or excluded from PMax
- Final-URL coverage
4. Signal strength
Section titled “4. Signal strength”- Monthly conversions ≥30 (Smart Bidding floor)
- Multiple conversion events feeding bidding
- Seasonality cushion (account isn’t a single-event-per-year shape)
5. Tech health
Section titled “5. Tech health”- Site has GA4 tag
- Conversion linker present on the site
- Final URLs returning 200 (not 404 / soft-redirect chains)
- Acceptable PageSpeed (slow LP = bad AI Max attribution)
What we can compute today (no new data dependency)
Section titled “What we can compute today (no new data dependency)”Using existing worker handlers (copysheet-ads-stats, ads-quality, ga4-stats, gsc-stats, dashboard-sitepro):
| Check | Source | Confidence |
|---|---|---|
| Monthly conversion volume (≥30) | ads-stats | High |
| GSC ↔ Ads click reconciliation (tracking sanity) | gsc-stats vs ads-stats | High |
| GA4 ↔ Ads session reconciliation (linker check) | ga4 vs ads-stats | High |
| Conversion-tracking dedup smell (sudden conversion spikes, suspicious ratios) | ads-stats history | Medium |
| Quality Score distribution + low-QS keyword count | ads-quality (gated to SEA spend ≥€250/mo retail) | High |
| PMax vs Search spend split (already in ads-stats by campaign type) | ads-stats | High |
| Final-URL HTTP probe (200 / 404 / redirects) | new live HEAD probe | High |
| GA4 tag + conversion linker on site | new HTML scrape (extends crawl_website) | High |
What’s gated on Google Ads API access (Phase 2)
Section titled “What’s gated on Google Ads API access (Phase 2)”These all need live Google Ads API. Per project_keyword_planner.md the worker’s only Ads API integration is currently blocked on MCC OAuth. Same blocker affects this tool.
- Enhanced Conversions on/off per account
- Attribution model per conversion event
- Brand-exclusion list present/missing
- Audience signals configured count
- Conversion-event setup (which events feeding bidding)
Two paths around the blocker:
- Unblock the MCC OAuth (separate project; would also unlock Keyword Planner).
- Optimiser-confirmed manual checklist — Optimiser confirms these flags per account in a UI / sheet, we ingest into BQ. Lower automation, ships now.
MVP Shape
Section titled “MVP Shape”New advisor tool: get_aimax_readiness
Section titled “New advisor tool: get_aimax_readiness”Input:
subscriberId(single-account drill-down) ORam(portfolio cut for one Account Manager)summary=true(flag — counts only, no per-account detail)
Output (single-account):
{ "subscriberId": "...", "businessName": "...", "am": "...", "monthlyAdSpend": 1500, "daysToDeadline": 122, "readinessScore": 65, "status": "AMBER", "automatedChecks": { "conversion_tracking": [ { "check": "GCLID capture rate", "value": "67%", "expected": ">95%", "severity": "high" }, { "check": "GA4-Ads session delta", "value": "31%", "severity": "warning" } ], "pmax_history": [...], "structure": [...], "signal_strength": [...], "tech_health": [...] }, "manualChecks": [ { "check": "Enhanced Conversions enabled", "settingsLink": "https://ads.google.com/...", "lastConfirmed": null }, { "check": "Attribution model = data-driven", "settingsLink": "...", "lastConfirmed": null } ], "topFixes": [ "Enable Enhanced Conversions", "Switch to data-driven attribution", "Add brand exclusion list" ]}Output (portfolio mode):
{ "asOf": "...", "totalAccounts": 240, "byStatus": { "GREEN": 47, "AMBER": 89, "RED": 104 }, "byAM": [...], "topGaps": [ { "issue": "No Enhanced Conversions", "count": 154 }, { "issue": "Last-click attribution", "count": 121 }, { "issue": "<30 monthly conversions", "count": 76 } ], "criticalAccounts": [...]}New worker handler: dashboard-aimax-readiness
Section titled “New worker handler: dashboard-aimax-readiness”- BQ-first: pulls last 90 days of
ads-stats+ga4-stats+gsc-statsper subscriber - Live HEAD probe on the final URL (cached daily)
- Live HTML scrape for GA4 + conversion linker (cached daily)
- Returns the readiness card
Dashboard panel (Phase 1.5)
Section titled “Dashboard panel (Phase 1.5)”Account view gets a card showing the readiness card + one-click links to the Ads settings pages that need attention. Smaller follow-up after the advisor tool is shipped and exercised.
Phased Plan
Section titled “Phased Plan”| Phase | Scope | Estimate | Blocked by |
|---|---|---|---|
| Phase 1 (auto-only) | Per-account + portfolio readiness using existing BQ + live site probe; manualChecks return as “needs Optimiser confirmation” placeholders | 1-2 weeks | Nothing |
| Phase 1.5 (dashboard panel) | Account-view card + deep-links to Ads settings | 1 week after Phase 1 | Phase 1 |
| Phase 2 (Ads API) | manualChecks become automatedChecks via live Google Ads API | depends on MCC OAuth unblock | MCC OAuth |
| Phase 2.5 (manual ingestion fallback) | If MCC OAuth stays blocked, build a UI / sheet for Optimisers to confirm the gated checks; ingest answers into BQ | 1-2 weeks | Decision on whether to ship this or wait for OAuth |
| Phase 3 (cadence) | Weekly /schedule run that posts AMBER/RED list to Optimisers + Slack/email | 2-3 days after Phase 1 | None |
Open Questions (need answers from Cathal)
Section titled “Open Questions (need answers from Cathal)”-
MCC OAuth — is anyone working the unblock? If yes, when is it expected to land? If no, do we want to track it as a separate scoping doc?
-
Optimiser-confirmed manual checks — if MCC OAuth stays blocked, where do Optimisers log their answers?
- (a) Lightweight Google Sheet they fill in (we ingest via n8n)
- (b) Small UI on the dashboard (one panel per account, checkbox per check)
- (c) Roam command (e.g.
/aimax-confirm 38007492 enhanced_conversions=yes) - (d) Defer Phase 2.5 entirely; wait for OAuth
-
Scope of accounts — readiness check runs on:
- (a) Every active SEA account (~240 if my numbers are right)
- (b) Optimiser-managed plans only (Plus / Pro / managed-fee tiers — narrower)
- (c) Spend threshold (e.g. accounts with retail spend ≥€250/mo, matching ads-quality’s existing gate)
-
Deadline cadence — do you want:
- (a) Just
daysToDeadlinefield on the response (no proactive comms) - (b) Weekly /schedule run that posts AMBER/RED list to Optimiser team (Slack? email? Roam channel?)
- (c) Escalation tiers: T-90 days, T-60, T-30, T-7 with different audience per tier
- (a) Just
Recommendation if you want me to start before answers come back
Section titled “Recommendation if you want me to start before answers come back”Phase 1 (auto-only readiness via existing BQ + live site probe) ships in 1-2 weeks and is not blocked on any of the four questions. It’s directly useful for Optimisers immediately (“here’s what we can verify automatically; the rest you check in Ads UI”). Decisions 1-4 only become urgent when Phase 2 / 2.5 / 3 start.
If you green-light Phase 1, I’d start by:
- Building the readiness scoring logic against existing BQ data (single account mode)
- Adding the live site probe (HEAD + HTML scrape) for GA4 / conversion linker / final URL
- Wiring
get_aimax_readinessinto the advisor with single-account + portfolio modes - Smoke-testing on 5 known accounts representing different conditions (good, broken tracking, low conversion volume, no PMax history, etc.)
Ready when you are.