ClickCatalyst
Back to Waste Audit
Authority Layer · How this works

Inside the Waste Detection Engine

Every figure in your waste audit comes from a documented formula and a specific data source. This page explains the exact calculation logic and thresholds — so you know precisely what "Waste Leakage Rate" means before acting on it.

Data Sources

read-only OAuth · no campaign changes ever

All data is read via Google Ads API. Derived intelligence tables are pre-computed in our pipeline before your audit runs.

Google Ads API — Search Terms Historical

All search term performance data: cost, clicks, conversions, match type, device, date. Primary source for total spend and zero-conversion term detection.

Google Ads API — Campaign Performance

Campaign-level spend, impression share lost to budget and rank, Quality Score data for bid efficiency analysis.

Google Ads API — Search Terms Matched Keywords

Match type classification per search term and campaign. Used for match type waste distribution calculation.

Google Ads API — Keywords Performance

Quality Score vs CPC relationship data for the prescription section.

Google Ads API — Account Pulse Hourly

Hour-of-day and day-of-week performance data used for temporal waste gap analysis.

Derived Intelligence — Waste Management

Pre-calculated wasted spend, recovery potential, waste categories, entity classifications, recommended actions, and action priorities per entity.

Derived Intelligence — Search Terms Intelligence

Pre-classified negative candidates with is_negative_candidate flag and recommendation type (ADD_EXACT_NEGATIVE, ADD_PHRASE_NEGATIVE etc.).

01

Waste Leakage Rate

What percentage of your total spend produced zero conversions

Sourced from two tables combined in a single query. Total spend comes from google_ads_search_terms_historical. Wasted spend and recovery potential come from waste_management_intelligence_daily — a pre-calculated pipeline table that classifies every dollar of spend with a waste category, entity type, and recommended action. The leakage rate is the ratio of the two.

Leakage Rate = wasted_spend ÷ total_spend × 100

Where:
  total_spend  = SUM(cost) from google_ads_search_terms_historical
  wasted_spend = SUM(wasted_spend) from waste_management_intelligence_daily

Both calculated over the same 30-day window.
COALESCE(wasted_spend, 0) applied — accounts with
zero classified waste return 0.0% instead of NULL.
< 20%Low leakage — account is structurally healthy
20–40%Moderate — negative keyword gaps present
> 40%High — systemic match type or intent mismatch
02

Zero-Conversion Search Term Detection

Which search terms are spending without converting

Sourced from google_ads_search_terms_historical joined against search_terms_intelligence_daily and waste_management_intelligence_daily. A term qualifies as a waste candidate when it has zero conversions AND at least 2 clicks in the 30-day window. The 2-click minimum filters out single accidental impressions. The verdict field (ADD_NEGATIVE, MONITOR, UNDER_REVIEW) is pre-classified by the search_terms_intelligence pipeline.

Waste term conditions (ALL must be true):
  1. conversions = 0
  2. clicks ≥ 2
  3. cost > 0

Verdict sourced from search_terms_intelligence_daily:
  is_negative_candidate = TRUE → ADD_NEGATIVE
  Otherwise → MONITOR or UNDER_REVIEW

Results ordered by wasted_spend DESC, capped at 25 terms.
ADD_NEGATIVEPipeline has high confidence — add as exact negative immediately
MONITORBorderline — watch for another 7–14 days before acting
UNDER_REVIEWInsufficient signal — pipeline still classifying
03

Match Type Waste Distribution

Which match types are responsible for your wasted spend

Sourced from google_ads_search_terms_matched_keywords joined against waste_management_intelligence_daily. The query calculates each match type's proportional share of campaign spend, then applies that share to the campaign's total classified waste. This ensures the match type breakdown always sums exactly to your total wasted spend KPI — no double-counting or rounding gaps.

Match type waste = 
  SAFE_DIVIDE(match_type_spend, total_campaign_spend)
  × campaign_total_wasted_spend

Summed across all campaigns per match type.

Match types tracked:
  BROAD, PHRASE, EXACT, UNKNOWN
BROADHighest waste risk — algorithm matches wide intent variations
PHRASEModerate risk — intent-adjacent queries can bleed through
EXACTLowest risk — only exact and close variants trigger ads
04

Device Friction (Proportional Distribution)

Which devices are responsible for wasted spend

Sourced from google_ads_search_terms_historical (for device-level spend distribution) joined against waste_management_intelligence_daily (for rigorous classified waste). Device waste is NOT calculated directly from zero-conversion rows — instead, each campaign's total classified waste is distributed to devices proportionally based on device spend share. This ensures the device friction chart always equals the headline KPI exactly.

Device wasted_spend =
  SAFE_DIVIDE(device_spend, total_campaign_spend)
  × campaign_total_wasted_spend

waste_rate = device_wasted_spend ÷ device_total_spend × 100

Guardrail: HAVING total_spend > 0
(Excludes devices with no active spend)
High waste_rateThis device converts poorly relative to its spend share — apply negative bid modifier
Low waste_rateDevice is converting efficiently — protect or increase bid modifier
05

Hourly Waste Gaps (True Wasted Spend)

When your ads run vs. when customers actually convert

Sourced from google_ads_account_pulse_hourly. Unlike a simple zero-conversion filter, this query calculates True Wasted Spend using a dynamic Target CPA derived from your account's own 30-day average. For each hour-of-day block, any spend above what would have been needed to buy the actual conversions at your average CPA is classified as waste. Statistical significance threshold: only hours with at least 50 clicks are surfaced in the top wasted hours table.

avg_cpa = SUM(cost) ÷ SUM(conversions)
             (from google_ads_search_terms_historical, 30-day window)

true_wasted_spend per hour =
  GREATEST(0, hourly_spend − (hourly_conversions × avg_cpa))

Top wasted hours: clicks ≥ 50 AND ordered by true_wasted_spend DESC
(Capped at 5 time blocks for the report)
clicks < 50Excluded — insufficient volume for statistically reliable waste calculation
true_wasted_spend > 0Spend exceeded the conversion value at your account's CPA in this window
06

Waste by Category (Savings Forecast)

The structural drivers behind your budget bleed

Sourced from waste_management_intelligence_daily. Every entity in your account is pre-classified by the pipeline into one of four waste_category values. The savings_forecast query groups these and sums wasted_spend and recovery_potential per category. This is the structural diagnosis — a single dominant category tells you exactly which lever to pull first.

Per category:
  total_waste = SUM(wasted_spend)
  recovery_potential = SUM(recovery_potential)
  entity_count = COUNT(DISTINCT entity_id)

Ordered by total_waste DESC.
waste_category IS NOT NULL filter applied.

Actual waste_category values from the pipeline:
  EXPLORATION   — algorithmic learning spend, campaign over-learning
  CREATIVE      — weak RSA combinations, low-performing assets
  QUERY         — zero-conversion search term intent mismatch
  AUCTION_BID   — bid inefficiency, overpaying at auction
EXPLORATIONAlgorithm learning trap — campaign pacing and structure fixes outperform keyword pruning
CREATIVEWeak RSA asset combinations — fix ad copy and asset variety
QUERYSearch term intent mismatch — negative keyword additions are the fix
AUCTION_BIDOverpaying at auction — bid strategy and QS improvements required
07a

Account Efficiency Score

A single number summarising your account's converting spend ratio

Appears in the PDF appendix as a composite score from 0–100. Calculated as the ratio of converting spend to total spend within the reporting window — the inverse of your leakage rate. A score of 98/100 means 98% of spend produced at least one conversion. This metric is a high-level health signal, not an action trigger on its own — the category breakdown tells you what to fix, the efficiency score tells you how urgently.

Account Efficiency Score =
  (1 − leakage_rate) × 100

Where leakage_rate = wasted_spend ÷ total_spend

Example: 1.6% leakage → Score = 98.4 → rounds to 98/100

Severity bands:
  90–100 → Strong efficiency, targeted fixes only
  70–89  → Moderate — structural improvements needed
  < 70   → Critical — immediate intervention required
90–100Strong overall efficiency — fixes are targeted, not systemic
70–89Moderate — structural improvements will move the needle
< 70Critical — immediate intervention required before scaling budget
07

Negative Keyword Candidates

Terms the pipeline has high confidence should be blocked

Sourced from search_terms_intelligence_daily joined against google_ads_search_terms_historical. A term surfaces as a negative candidate only when the pipeline has set is_negative_candidate = TRUE. This flag is set by the intelligence pipeline based on multi-signal analysis — not just zero conversions. Results are ordered by wasted_spend and capped at 15 terms for the report.

Negative candidate conditions:
  1. is_negative_candidate = TRUE (pipeline-classified)
  2. Joined to historical table to confirm spend in window
  3. Ordered by SUM(wasted_spend) DESC
  4. Limit 15

The recommendation field (e.g. ADD_EXACT_NEGATIVE,
ADD_PHRASE_NEGATIVE) is sourced directly from the
intelligence pipeline — not computed at report time.
ADD_EXACT_NEGATIVEBlock this exact query — zero conversion signal is strong and consistent
ADD_PHRASE_NEGATIVEBlock all queries containing this phrase — pattern-level waste detected
08

Recovery Potential (70% Capture Rate)

Conservative projection applying a 70% capture rate against confirmed waste

The financial recovery metric applies a conservative 70% capture rate against total identified waste. This multiplier accounts for standard market volatility and the reality that not all paused spend will perfectly remap to incremental conversions. The recovery_potential field is pre-calculated per entity in the pipeline and summed at report time. Reallocating this capital to high-efficiency campaigns requires no increase in total baseline spend.

Conservative Recovery = confirmed_waste × 0.70

Where confirmed_waste = SUM(wasted_spend)
from waste_management_intelligence_daily

The 30% discount accounts for:
  • Standard market volatility
  • Imperfect spend remapping to efficient campaigns
  • Reality that not all paused spend converts immediately

action_priority field determines fix order:
  Priority 1 → highest recovery impact, fix first
  Priority 2–3 → secondary, address after P1 fixes
70% rateConservative capture — accounts for volatility and remapping imperfection
action_priority 1Highest recovery impact — fix these entities first
action_priority 2–3Significant but secondary — address after priority 1 fixes

Proprietary notice: The waste classification logic, negative candidate scoring, device friction methodology, hourly gap calculation, and recovery potential pipeline 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 Waste Audit

Not sure what the numbers in your report mean? Read the audit interpretation guide →

Google Ads Waste Detection Methodology — How ClickCatalyst Calculates Leakage & Recovery