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

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

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

  • 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

  • Months on PMax (cold-starts under-perform)
  • Search-cannibalisation by PMax (brand-search leakage)
  • Brand-exclusion list configured

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

  • 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

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

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)

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.

MVP Shape

New advisor tool: get_aimax_readiness

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

  • 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

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

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)

  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

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.

FCR Dashboard documentation · generated from docs/ · keep counts verified, not guessed.

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?