Skip to content

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).

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”).

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.

  • 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
  • Months on PMax (cold-starts under-perform)
  • Search-cannibalisation by PMax (brand-search leakage)
  • Brand-exclusion list configured
  • Audience signals (≥3)
  • Asset library populated (images, headlines, descriptions, sitelinks)
  • Branded keywords ring-fenced or excluded from PMax
  • Final-URL coverage
  • Monthly conversions ≥30 (Smart Bidding floor)
  • Multiple conversion events feeding bidding
  • Seasonality cushion (account isn’t a single-event-per-year shape)
  • 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):

CheckSourceConfidence
Monthly conversion volume (≥30)ads-statsHigh
GSC ↔ Ads click reconciliation (tracking sanity)gsc-stats vs ads-statsHigh
GA4 ↔ Ads session reconciliation (linker check)ga4 vs ads-statsHigh
Conversion-tracking dedup smell (sudden conversion spikes, suspicious ratios)ads-stats historyMedium
Quality Score distribution + low-QS keyword countads-quality (gated to SEA spend ≥€250/mo retail)High
PMax vs Search spend split (already in ads-stats by campaign type)ads-statsHigh
Final-URL HTTP probe (200 / 404 / redirects)new live HEAD probeHigh
GA4 tag + conversion linker on sitenew 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:

  1. Unblock the MCC OAuth (separate project; would also unlock Keyword Planner).
  2. Optimiser-confirmed manual checklist — Optimiser confirms these flags per account in a UI / sheet, we ingest into BQ. Lower automation, ships now.

Input:

  • subscriberId (single-account drill-down) OR
  • am (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-stats per subscriber
  • Live HEAD probe on the final URL (cached daily)
  • Live HTML scrape for GA4 + conversion linker (cached daily)
  • Returns the readiness card

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.

PhaseScopeEstimateBlocked by
Phase 1 (auto-only)Per-account + portfolio readiness using existing BQ + live site probe; manualChecks return as “needs Optimiser confirmation” placeholders1-2 weeksNothing
Phase 1.5 (dashboard panel)Account-view card + deep-links to Ads settings1 week after Phase 1Phase 1
Phase 2 (Ads API)manualChecks become automatedChecks via live Google Ads APIdepends on MCC OAuth unblockMCC 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 BQ1-2 weeksDecision on whether to ship this or wait for OAuth
Phase 3 (cadence)Weekly /schedule run that posts AMBER/RED list to Optimisers + Slack/email2-3 days after Phase 1None
  1. 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?

  2. 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
  3. 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)
  4. Deadline cadence — do you want:

    • (a) Just daysToDeadline field 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

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:

  1. Building the readiness scoring logic against existing BQ data (single account mode)
  2. Adding the live site probe (HEAD + HTML scrape) for GA4 / conversion linker / final URL
  3. Wiring get_aimax_readiness into the advisor with single-account + portfolio modes
  4. Smoke-testing on 5 known accounts representing different conditions (good, broken tracking, low conversion volume, no PMax history, etc.)

Ready when you are.

Ask the docsRAG over this site
Ask anything about the FCR Dashboard platform — architecture, BigQuery, the worker routes, billing rules, the LRC stack, scoring… Answers are grounded in this documentation, with source links.
How does the deal-brief refresh work? Which routes are Worker vs n8n? How is account health scored?