Inside the PMax Diagnostics Engine
Every metric in your audit is derived from a documented formula and a specific BigQuery table. This page explains the exact calculation logic, thresholds, and data sources — so you know precisely what each number means before acting on it.
Data Sources
read-only OAuth · no campaign changes everAll data is read via Google Ads API. Derived intelligence tables are pre-computed in our pipeline before your audit runs.
Google Ads API — Campaign Performance
google_ads_campaign_performance
Currency settings, account-level spend, campaign metadata
Google Ads API — PMax Channel Impressions
google_ads_pmax_channel_impressions
Impression share breakdown by channel type (Search, Shopping, Display, Video)
Google Ads API — PMax Placement Performance
google_ads_pmax_placement_performance
Placement-level impression data with network segmentation for junk placement detection (Mobile Apps, YouTube Channels, Websites)
Google Ads API — Shopping Performance
google_ads_shopping_performance
Product-level spend, clicks, units sold, and gross profit for zombie and margin eater detection
Google Ads API — Budget Recommendations
google_ads_budget_recommendations
End-of-month spend projections, recommended budget amounts, and estimated weekly cost changes per campaign
Google Ads API — Budget Details
google_ads_budget_details
Campaign budget names, amounts, delivery methods, and shared budget configurations
Google Ads API — Audience Performance
google_ads_audience_performance
First-party audience list performance including remarketing segments, customer lists, and conversion data for exclusion recommendations
Google Ads API — Age Demographics
google_ads_age_demographics
Impression, click, conversion, and cost breakdowns by age range for PMax campaigns
Google Ads API — Gender Demographics
google_ads_gender_demographics
Impression, click, conversion, and cost breakdowns by gender for PMax campaigns
Derived Intelligence — Waste Management
waste_management_intelligence_daily
Pre-calculated Black Box Tax, waste categories, leakage rate, and recovery potential
Derived Intelligence — Asset Group
pmax_asset_group_intelligence_daily
Asset group spend, conversions, ad strength, concentration status, and creative fatigue signals
Derived Intelligence — Signal Health
signal_health_intelligence_daily
Cross-platform attribution drift between Google Ads and GA4 conversions
Derived Intelligence — Campaign Maturity
campaign_maturity_daily
90-day learning stage classification, marginal vs average ROAS, and maturity penalty inputs for ACI
Derived Intelligence — Temporal
temporal_intelligence_daily
Hour-of-day bid multipliers, peak spend windows, and worst conversion hours
Derived Intelligence — Geographic
geographic_intelligence_daily
Market classification, location score, CPA by geography, and recommended actions
Algorithm Control Index (ACI)
How much structural control you have over PMax
A composite score from 0–100 calculated from two penalty components: a waste penalty (based on your leakage rate) and a maturity penalty (based on how much of your 90-day cumulative spend sits in unstable campaign stages). Lower penalties = higher ACI. A score below 50 means the algorithm is operating without structural constraints.
ACI = 100 − waste_penalty − maturity_penalty Waste penalty tiers: Leakage < 10% → 0 pts Leakage 10–20% → 10 pts Leakage 20–30% → 25 pts Leakage > 30% → 40 pts Maturity penalty tiers: Unstable spend < 20% → 0 pts Unstable spend 20–40% → 10 pts Unstable spend > 40% → 20 pts
Campaign Maturity & Learning Stages
The 90-day algorithm learning lifecycle
PMax campaigns move through distinct learning stages tracked over a 90-day cumulative window. The distribution of your spend across these stages directly feeds the ACI maturity penalty. Campaigns in EXPLORATION or DEGRADATION stages are considered unstable — the algorithm hasn't converged on an efficient strategy yet.
Maturity penalty = f(unstable_spend / total_tracked_spend) Stages tracked: CALIBRATION, EXPLORATION, SCALING, DEGRADATION Unstable stages: EXPLORATION + DEGRADATION Note: 90-day window means maturity figures will exceed your 30-day spend total.
Exploration Efficiency Ratio (EER)
Is the algorithm's learning tax worth paying?
PMax always allocates a portion of budget to exploration — testing audiences and inventory beyond its highest-confidence asset group. The EER measures whether that cost is justified. It divides the CPA of your top-spending asset group (exploitation) by the blended CPA of all remaining groups (exploration). Guardrails are applied: the metric is only calculated when campaigns have sufficient volume to be statistically meaningful.
EER = exploit_CPA ÷ explore_CPA Where: exploit_CPA = spend_rank_1_spend ÷ spend_rank_1_conversions explore_CPA = all_other_spend ÷ all_other_conversions Guardrails (metric shown as NOISE if not met): • Campaign total spend < 100 → NOISE_LOW_CAMPAIGN_VOLUME • Exploration < 25 spend or < 5% of total → NOISE_LOW_EXPLORATION_SHARE • Exploitation conversions < 3 → NOISE_LOW_BASELINE_CONVERSIONS • Exploration conversions < 3 → NOISE_LOW_EXPLORATION_CONVERSIONS
Black Box Tax & Waste Waterfall
Total confirmed zero-return spend, classified by category
The Black Box Tax is the sum of all spend that produced zero conversions in the reporting window, sourced from the waste_management_intelligence_daily table. It is broken down by waste_category into the waterfall — each category represents a distinct structural failure type. Both Exploration and Creative waste are recoverable through different fix paths.
Black Box Tax = SUM(wasted_spend) from waste_management_intelligence_daily Waste Leakage Rate = Black Box Tax ÷ total_spend × 100 Waste categories (from waste_category field): EXPLORATION — algorithm learning spend with no return CREATIVE — low-performing asset groups funded despite zero conversions
Signal Health & Attribution Drift
When Google Ads and GA4 disagree on conversions
Sourced from signal_health_intelligence_daily. Compares Ads-reported conversions against GA4-reported conversions at the campaign level over the last 30 days. When the gap exceeds 20%, the algorithm is bidding on phantom signals — inflating CPCs account-wide and suppressing Quality Scores. The signal_status field is pre-calculated in the pipeline.
Drift % = |ads_conversions_30d − ga4_conversions_30d|
÷ MAX(ads_conversions_30d, ga4_conversions_30d) × 100
Status classification (from signal_status field):
HEALTHY → drift < 15%
WARNING_DRIFT → drift 15–40%
CRITICAL_BLIND → drift > 40%
LOW_VOLUME → insufficient conversion volume for meaningful driftConversion Quality Breakdown
How PMax actually measures your conversions
Sourced from google_ads_campaign_performance, filtering for PERFORMANCE_MAX channel type. PMax reports multiple conversion types simultaneously: click-attributed (user clicked then converted), view-through (user saw ad, didn't click, converted later), cross-device (interaction on one device, conversion on another), and modeled (Google's statistical estimates). This breakdown reveals what percentage of your reported conversions are based on hard click data vs. softer attribution signals.
Per campaign (PERFORMANCE_MAX only): click_conversions = SUM(conversions) view_through = SUM(view_through_conversions) cross_device = SUM(cross_device_conversions) all_conversions = SUM(all_conversions) modeled = all_conversions − click_conversions Percentages: view_through_pct = view_through ÷ all_conversions × 100 cross_device_pct = cross_device ÷ all_conversions × 100 click_attributed_pct = click_conversions ÷ all_conversions × 100 Key threshold: view_through_pct > 30% = algorithm optimizing on impressions, not clicks
Feed Health & Product Structure
Product feed quality scoring from Shopping performance data
Sourced from google_ads_shopping_performance. Analyzes the structural health of your product feed by checking for missing attributes (category, brand, condition), measuring conversion coverage (what percentage of active products have converted), and counting zero-conversion products with meaningful traffic. Products with missing attributes receive lower placement quality from Google's Shopping algorithm, degrading PMax performance across the entire account — not just for the individual products.
Feed health metrics: total_products = COUNT(DISTINCT product_item_id) WHERE clicks > 0 missing_category = COUNT WHERE product_category_level1 IS NULL missing_brand = COUNT WHERE product_brand IS NULL converting_products = COUNT WHERE conversions > 0 zero_conv_products = COUNT WHERE conversions = 0 AND clicks >= 20 conversion_coverage_pct = converting_products ÷ total_products × 100 Key threshold: zero_conv_products > 30% of total = structural feed problem missing_category > 0 = immediate Merchant Center fix needed
Zombie Product Detection
Products training PMax on non-converting audiences
Sourced from google_ads_shopping_performance (Google Ads API). A product is flagged as a zombie when it meets all three conditions simultaneously: zero units sold in the 30-day window, at least 20 clicks (ensuring spend is intentional, not accidental), and spend exceeding a currency-scaled guardrail. The guardrail adapts dynamically — it takes the greater of the fixed threshold or 1% of total shopping spend for that account.
Zombie conditions (ALL must be true): 1. units_sold = 0 (or NULL) in 30-day window 2. clicks ≥ 20 3. wasted_cost > MAX(currency_threshold, total_shopping_spend × 0.01) Currency thresholds: USD / EUR / GBP / CAD / AUD / CHF KWD / AED / SAR / SGD / NZD → $50 All other currencies (INR etc.) → ₹2,500
Marginal vs Average ROAS
Where scaling stops being efficient
Sourced from campaign_maturity_daily. Average ROAS tells you what happened historically. Marginal ROAS tells you what the next incremental dollar of spend will return. When marginal ROAS falls below average ROAS, you have hit a diminishing returns threshold — scaling budget at this point destroys efficiency. The breakeven ROAS threshold is set at 1.5x.
Marginal ROAS = change in revenue ÷ change in spend
(calculated in campaign_maturity_daily pipeline)
Status classification:
Marginal ROAS < 1.5 → CRITICAL: below breakeven
Marginal ROAS < Average ROAS → WARNING: diminishing returns active
Marginal ROAS ≥ Average ROAS → HEALTHY: scaling efficientlyRecovery Potential
Conservative projection built into the pipeline
The recovery figure is pre-calculated in the waste_management_intelligence_daily table as recovery_potential — it is not computed on the client side. The pipeline applies category-level recoverability rates against confirmed waste spend. The 70% baseline described in the audit methodology is a conservative floor, not a flat multiplier — actual recovery varies by waste category.
Recovery = SUM(recovery_potential) from waste_management_intelligence_daily
(pre-calculated per waste category in the pipeline)
Capture rate rationale:
• Some exploration spend is genuinely necessary
• Budget remapping is never perfectly efficient
• Market conditions introduce variance
• Real-world accounts recover 55–85% of identified waste
• 70% baseline is the conservative floor used in methodology descriptionsNetwork Segmentation
Where your ads appear across Google's networks
Sourced from google_ads_pmax_placement_performance via Google's new network segmentation reporting. Each placement row now includes an ad_network_type field that classifies whether the impression was served on DISPLAY, YOUTUBE_WATCH, CONTENT, or SEARCH networks. This breaks the "black box" of PMax placement reporting by revealing which network is responsible for each placement type.
Query groups by: ad_network_type × placement_type Output per combination: total_impressions = SUM(impressions) unique_placements = COUNT(DISTINCT placement) Key interpretation: DISPLAY + Mobile App = highest junk risk YOUTUBE_WATCH + YouTube Channel = brand spend without conversion signal CONTENT + Website = mixed quality, requires per-site review
Budget Projections & Pacing
End-of-month spend forecasting from Google's budget API
Sourced from google_ads_budget_recommendations via Google's budget reporting endpoint. Each campaign budget includes the current daily amount, Google's recommended amount, and the estimated weekly cost change if the recommendation were applied. The audit divides the weekly figure by 7 to display daily variance — aligning the unit with the daily budget column for direct comparison.
Daily variance = estimated_change_weekly_cost ÷ 7 Status classification: recommended > current → INCREASE RECOMMENDED recommended < current → DECREASE RECOMMENDED recommended = current → OPTIMAL Data joins: google_ads_budget_recommendations (costs & recommendations) × google_ads_budget_details (budget names & metadata) Joined on campaign_budget_id Deduplicated via ROW_NUMBER() OVER(PARTITION BY campaign_budget_id ORDER BY date DESC)
First-Party Audience Exclusions
Identifying customer lists that waste PMax budget
Sourced from google_ads_audience_performance, filtering for criterion_type = 'USER_LIST'. The query identifies remarketing segments and customer lists that are consuming budget (SUM(cost) > 50) while generating zero conversions (SUM(conversions) < 1). These audiences should be excluded from PMax campaigns so the algorithm focuses on new customer acquisition.
Exclusion candidates where: criterion_type = 'USER_LIST' AND SUM(conversions) < 1 AND SUM(cost) > 50 Output: audience_name = COALESCE(user_list_name, display_name, 'Unknown') wasted_spend = SUM(cost) action = 'Recommend Exclusion' Ordered by: wasted_spend DESC Limit: Top 5 highest-waste audiences
Audience Demographics Analysis
Age and gender performance from Google's new demographic reporting
Sourced from google_ads_age_demographics and google_ads_gender_demographics via Google's upgraded audience reporting for PMax. Each demographic segment (age range or gender) reports impressions, clicks, conversions, and cost. CPA is calculated per segment to identify which demographics are converting efficiently and which are consuming budget disproportionately.
Per demographic segment: CPA = SUM(cost) ÷ NULLIF(SUM(conversions), 0) Age ranges: 18–24, 25–34, 35–44, 45–54, 55–64, 65+, Unknown Gender values: Male, Female, Unknown Key interpretation: High impressions + low conversions + high CPA = algorithm over-indexing on expensive segment "Unknown" segment typically has highest CPA = unclassifiable traffic from low-quality inventory
Proprietary notice: The methodology, scoring models, waste classification logic, ACI formula, EER calculation, and recovery projections are proprietary to ClickCatalyst Digital and provided for informational purposes only. Results are subject to standard market volatility. Recovery projections are estimates, not guarantees. Contact us within 14 days if any metric appears inaccurate.
Ready to see these metrics applied to your account?
Connect via read-only Google OAuth. No campaign changes, ever.
Run My Free PMax AuditNot sure what the numbers in your report mean? Read the audit interpretation guide →