Prepared for Kirkland Rooter · 6 August 2026

Google Ads account audit

Four Google Ads accounts, $6,521 of lifetime spend and 64 recorded conversions. This is what that money did, where it went, and what is structurally wrong with the accounts today.

The short version

Every figure on this page is read directly from the Google Ads API. Nothing here is estimated.

$6,521
Total spend across four accounts since Jan 2024
74%
Of traceable July 2026 search spend went to searches for other companies
$26.63
Average cost per click in July 2026
0
Negative keywords in the entire account
$2,516
Spent over ten months that recorded zero conversions
$47–$73
Cost per lead on the one channel that worked — currently switched off

The core finding. The only account that was producing leads efficiently — a fully verified Local Services account delivering leads at $47–$73 each — has been paused since January 2026. During the same period, $2,557 was spent across fourteen days on hand-built Search campaigns that produced leads at roughly $256 each. The good channel was turned off and the expensive one was turned on.

The four accounts

One plumbing business is spread across four Google Ads accounts. Two of them were running Local Services campaigns for overlapping parts of the same Eastside service area, which means they were competing against each other for the same customers.

AccountIDSpendClicks Avg. CPCConv.State
LSA GC Rooter
Legacy Smart campaigns + a Local Services campaign filed under general contractor
377-138-5133$3,358.30 1,790$1.88 38 Broken Local Services has never passed a background check
LSA Main Rooter
The account that spent the money in July 2026
581-417-4776$2,738.78 303$9.04 18 Paused after a $2,557 fourteen-day run
LSA Plumber Rooter
Fully verified plumber Local Services account
791-982-5019$424.15 118$3.59 8 Dormant paused since Jan 2026 — this is the healthy one
Closed account
Verification cancelled and failed
403-649-3148$0.00 0 0 Closed but still holds an enabled campaign
Total$6,521.23 2,211$2.95 64

Day by day, every dollar

Each column is one calendar day, from the first day an account ever billed to the last. Bar height is what was spent that day, coloured by the campaign type that spent most of it. The dots are conversions recorded that day, on their own scale up the right. Days with no spend are drawn as flat gaps rather than skipped, because collapsing them would let a few days of heavy spending pass for months of steady work.

Each chart is scaled to its own busiest day, and says so underneath. Putting all three on one axis was tried and thrown out: the July 2026 burst is so much larger than anything the other accounts ever did that their whole histories flattened into a line. Read the ceilings, not the heights, when comparing one account to another.

LSA Main Rooter — 581-417-4776

04 Oct 2025 to 17 Jul 2026 · $2,738.80 across 27 billed days · 18 conversions · 260 days in that window with no spend at all. Scroll sideways; it opens on the busiest week. Hover any column for that day's detail.

Local ServicesSearchSmart Conversions (right axis)
Oct 2025Nov 2025Dec 2025Jan 2026Feb 2026Mar 2026Apr 2026May 2026Jun 2026Jul 2026
Bar height — daily spend, this account's biggest day was $577.63 on 09 Jul 2026Dot height — conversions, best day 3

LSA GC Rooter — 377-138-5133

14 Feb 2024 to 16 Jun 2025 · $3,358.28 across 146 billed days · 38 conversions · 343 days in that window with no spend at all. Scroll sideways; it opens on the busiest week. Hover any column for that day's detail.

Smart Conversions (right axis)
Mar 2024Apr 2024May 2024Jun 2024Jul 2024Aug 2024Sep 2024Oct 2024Nov 2024Dec 2024Jan 2025Feb 2025Mar 2025Apr 2025May 2025Jun 2025
Bar height — daily spend, this account's biggest day was $59.33 on 27 Jul 2024Dot height — conversions, best day 7

LSA Plumber Rooter — 791-982-5019

14 Jan 2024 to 02 Jan 2026 · $424.15 across 7 billed days · 8 conversions · 713 days in that window with no spend at all. Scroll sideways; it opens on the busiest week. Hover any column for that day's detail.

Local Services Conversions (right axis)
Feb 2024Mar 2024Apr 2024May 2024Jun 2024Jul 2024Aug 2024Sep 2024Oct 2024Nov 2024Dec 2024Jan 2025Feb 2025Mar 2025Apr 2025May 2025Jun 2025Jul 2025Aug 2025Sep 2025Oct 2025Nov 2025Dec 2025Jan 2026
Bar height — daily spend, this account's biggest day was $110.90 on 14 Jan 2024Dot height — conversions, best day 2

Every billed day in that window, in full — there are only 7:

DaySpendClicks Conv.Cost per conv.
Sun 14 Jan 2024$110.9052$55.45
Mon 15 Jan 2024$49.4811$49.48
Tue 16 Jan 2024$28.0061$28.00
Sun 02 Nov 2025$58.8011$58.80
Mon 03 Nov 2025$33.2251$33.22
Sat 13 Dec 2025$70.9511$70.95
Fri 02 Jan 2026$72.8011$72.80
Total $424.15 20 8 $53.02

July 2026: $2,557 in fourteen days

Account 581-417-4776 (LSA Main Rooter) billed on thirteen separate days between 4 July and 17 July 2026. Every action in the record below is logged against the account’s own login, kirklandrooter@gmail.com.

The spending did not start with the campaign built on 13 July. A Search campaign named Shamim_Rooter was already running, and it had spent $1,399.03 — 55% of the entire month — before 13 July arrived. Its worst day, 9 July, cost $577.63 for eighteen clicks. That is $32 a click, on a $50 daily budget.

Late that same evening the campaign was paused — and then switched back on two days later. It resumed spending immediately. The pattern is not someone unaware of the spend; it is someone who saw it, stopped it, and restarted it without changing anything about why it was expensive.

On 13 July a second Search campaign, call only, was built from scratch in one sitting: campaign, ad group, budget, 24 campaign assets and 15 keywords. Thirty-two more keywords went in the next day from the Google Ads mobile app. That campaign spent $734.40 for nine clicks in three days — $81.60 every time somebody clicked.

Each of those details is a problem in its own right:

On attribution. The audit trail names the account login kirklandrooter@gmail.com for every campaign build and keyword change in July. The Logic Inbound manager link was created on 15 July, two days after the campaign was built. The log therefore does not show a third party making these changes, and this report does not claim one did.

Where the July money actually went

July Search spend was $2,418.32. Google attributes $1,399.47 of that to specific search queries; the remainder falls below Google’s reporting thresholds and cannot be traced to a query. Of the traceable portion:

Searches for other named businesses $1,039.53 · 74.3%
Plumbing supply houses $167.81 · 12.0%
Genuinely relevant searches $104.07 · 7.4%
Septic & drain field (different trade) $56.61 · 4.0%
Your own brand name $31.44 · 2.2%

Put plainly: for every dollar that reached a search Google could identify, about seven cents went to a search that was genuinely about hiring a plumber in your area. The rest paid for people looking up a competitor, a parts counter, or a trade you do not perform.

The most expensive individual searches

Search query typed by the userCost ClicksWhat it is
drain pro$135.601 Another drain company. One click.
aurora plumbing phone number$101.08 2Someone looking up a competitor’s phone number
southside plumbing$98.48 1Competitor brand
abv plumbing$95.971 Competitor brand
roto rooter$86.772 Competitor brand
toms plumbing sequim$74.11 1Sequim — roughly two hours away
bob oates plumbing$66.12 1Competitor brand
ferguson plumbing seattle$38.57 1A supply warehouse, not a customer
nickerson plumbing ada ok$24.86 3Ada, Oklahoma
washington state septic inspection requirements $10.811Someone reading regulations

Four separate searches for ferguson — a plumbing supply distributor — cost $149 between them. Your own brand name, kirkland rooter sewer & drain cleaning, drew $31.44 across the whole month.

Why it happened: the account was built without brakes

The July result was not bad luck. It follows directly from four configuration choices, each of which is visible in the account today.

1. Every keyword was broad match, and there were no negatives

133
Keywords in the account
133
Of them set to broad match
0
Phrase or exact match keywords
0
Negative keywords applied

Broad match lets Google show your ad for anything it considers related. A keyword like plumbing repair is then free to match aurora plumbing phone number. Broad match is a legitimate tool, but it is only safe with an active negative keyword list and daily search-term review. This account had neither.

Two negative keyword lists do exist in the account — one with 427 terms, and one named Junk Cars - Test Aug 2022 with 1,369 terms, left over from an entirely unrelated business. Neither list is attached to a single campaign. They have been sitting there doing nothing.

2. Daily budgets far larger than the account could absorb

CampaignDaily budgetType Status
Local Services$300.00Local ServicesPaused
Search-1$300.00SearchPaused
call only$200.00SearchPaused
Shamim_Rooter$50.00SearchPaused
Plumbing Services$22.90SmartPaused
Residential Plumbing Services$21.70SmartPaused
Total daily exposure$894.60 per day, if everything were switched on

This is still live risk. These campaigns are paused, not deleted. The budgets remain attached. Un-pausing everything exposes $894.60 per day — over $26,000 a month — against an account whose best month ever produced 10 conversions.

3. A campaign with no location targeting at all

The campaign named Search-1 carries a $300 per day budget and has no geographic targeting whatsoever. Its only targeting criteria are device type and language. If it were enabled it would serve nationwide. It is paused today, which is the only thing preventing that.

4. Automated bidding pointed at conversion data that did not exist

The Search campaigns use MAXIMIZE_CONVERSIONS bidding. That strategy works by learning from a history of recorded conversions. These campaigns were brand new, in an account whose conversion tracking had been unreliable for well over a year. Google was told to bid aggressively toward a signal it could not read, which is a large part of how a plumbing click reached $26.63 and a single click for drain pro reached $135.60.

In fairness, three settings were correct. The Search Partners network is off, the Display network is off, and location targeting is set to presence rather than presence or interest. Those three defaults are commonly left wrong and would have made the damage considerably worse.

The account that quietly spent $2,516 for nothing

Separately from July, account 377-138-5133 (LSA GC Rooter) has its own problem. In March 2024 it recorded 36 conversions on $330 of spend — 36 of the 38 conversions this account has ever recorded, in a single month. After that it recorded one more, in November 2024, and nothing else. Ten separate months of spending returned nothing at all.

Monthly spend Month with zero conversions Conversions (right axis)
Feb
2024
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
Jan
2025
Feb
Mar
Apr
May
Jun
Bar height — monthly spend, scale to $574.71 Dot height — conversions, scale to 36

Hover any month for its spend, clicks, conversions and cost per conversion. 10 of the 13 months with spend are hatched: $2,515.66 bought nothing that the account recorded. Four months in the middle — December 2024 through March 2025 — have no bar because the account spent nothing at all.

Month by month, 377-138-5133

The same figures behind the chart above, as reported by the account itself. One conversion in February 2024, thirty-six in March 2024, one in November 2024, and nothing else in seventeen months.

MonthSpendClicks Conversions
Feb 2024$219.28751
Mar 2024$329.9519536
Apr 2024$0.2620
May 2024$226.03660
Jun 2024$574.715860
Jul 2024$411.902150
Aug 2024$121.91700
Sep 2024$2.6410
Oct 2024$79.81210
Nov 2024$293.412231
Dec 2024$0.0000
Jan 2025$0.0000
Feb 2025$0.0000
Mar 2025$0.0000
Apr 2025$326.231330
May 2025$380.75790
Jun 2025$391.421240
Total$3,358.30 1,790 38

March 2024 is the single month that carried this account's entire conversion record. Thirty-six of its thirty-eight lifetime conversions landed in that one month, on $329.95 of spend. Every month after it is either zero or one. A single month of results followed by fourteen months of nothing is not a performance curve — it is the shape of something breaking and never being looked at again.

$2,515.66 across ten months recorded not one conversion. Either conversion tracking broke immediately after March 2024 and nobody noticed for fourteen months, or the spend genuinely produced nothing. Both possibilities point at the same thing: no one was reading the account.

The same account runs a Local Services campaign that is switched on, and has been unable to serve a single lead since it was created. Its background check status has read NO_SUBMISSION since 16 September 2022. Google Local Services will not deliver leads to an unverified business. It is also filed under the general contractor category rather than plumber — the wrong trade for this business.

How can an unapproved account spend money?

It is a fair question, and the answer matters: it did not. The unverified Local Services campaign has spent $0.00 and served zero impressions in its entire existence. Every dollar this account spent went somewhere else.

CampaignTypeStatusLifetime spend ImpressionsClicks
KIRKLAND ROOTERSmartPaused $5,018.41379,1834,867
LocalServicesCampaign (system generated)Local Services Enabled$0.0000
Free EstimateSmartRemoved $0.0000
Plumbing ServicesSmartRemoved $0.0000
kirklnad RooterSmartRemoved $0.0000
Ben - Kirkland RooterSearchRemoved $0.0000

Campaign-level figures span 1 January 2022 to 6 August 2026. The account roll-up earlier on this page starts in January 2024, which is why the totals differ.

Local Services and ordinary Google Ads are two different products that happen to live in the same account. Verification — background check, licence, insurance — gates Local Services only. It has never gated Search, Smart or Display campaigns, which is why one campaign in this account could run for years and rack up 379,183 impressions while the Local Services campaign sitting beside it stayed frozen at zero.

Two separate mechanisms kept the Local Services campaign at $0.00:

So why does this matter, if it costs nothing? Because it is worse than a leak — it is a channel that looks live and is not. Anyone opening this account sees an enabled Local Services campaign and reasonably concludes the business has Local Services coverage in that account. It has had none since September 2022. For nearly four years the top of the plumbing results has been available to competitors, in an account set up to compete for it, and nobody was told otherwise. The cost does not appear on an invoice; it appears in the jobs that went to whoever did show up there.

The same pattern explains the closed account, 403-649-3148 (closed account), which also holds an enabled Local Services campaign with a $12 per day budget attached. Its background check was cancelled and its insurance and licence checks both failed, so it never served either.

Disapproved ads

Five of the eight ads in 377-138-5133 (LSA GC Rooter) are disapproved. A disapproved ad does not run at all, but it stays in the account looking like part of a live campaign, so an account can appear busy while serving almost nothing.

AdCampaignAd statusPolicy reason
381582235187Plumbing ServicesEnabled Prohibited Destination not working
Limited Trademarks in ad text
552948904550kirklnad RooterEnabled Prohibited Destination not working
676329123791Ben - Kirkland RooterEnabled Prohibited Stale disapproval
676906879641Ben - Kirkland RooterPaused Prohibited Stale disapproval
677000157593Ben - Kirkland RooterRemoved Prohibited Symbols

What each reason actually means

Destination not working

Google’s crawler could not load the landing page the ad points to. It is triggered by a dead URL, a page that has been moved or renamed, a server that times out or blocks Google’s crawler, an expired certificate, or a redirect chain that never resolves. This is the most common cause of a silently dead ad account: the website gets rebuilt, page URLs change, and nobody goes back to update the ads. The ads keep sitting in the account, disapproved, spending nothing and generating nothing.

Trademarks in ad text

The ad copy contains a term someone else has registered as a trademark. In this trade that usually means a competitor’s brand name has been written into the headline or description. Google restricts rather than bans these, but the ad’s reach is limited wherever the trademark holder has filed a complaint.

Symbols

The ad used punctuation or characters in a way Google does not permit — repeated exclamation marks, unnecessary capitals, decorative characters, or symbols standing in for words. It is entirely avoidable and signals ad copy written without reference to the editorial rules.

Stale disapproval

This one is the clearest evidence of neglect. Google applies it to an ad that was disapproved and then left alone. It means the disapproval notice went out, no one acted on it, and enough time passed that Google reclassified the ad as abandoned. Two ads in this account carry it.

How to stop this happening

  1. Check the policy column weekly. Google emails disapproval notices, but they arrive in whichever inbox owns the account, and they are easy to lose. A weekly look at the ads table takes two minutes.
  2. Re-check every ad URL whenever the website changes. A site rebuild is the single most common cause of destination not working. Any URL change should trigger a pass over every ad, sitelink and callout in the account.
  3. Never put another company’s brand name in ad copy. You may generally bid on competitor terms as keywords; you may not write their trademark into the text of the ad.
  4. Write to the editorial rules. One exclamation mark at most, no all-caps words, no decorative symbols, no phone numbers in headlines.
  5. Fix or remove disapproved ads immediately. A disapproval left unattended becomes a stale disapproval, and a pattern of stale disapprovals raises the risk of account-level suspension.
  6. Keep at least two active ads per ad group. If one is disapproved, the group keeps running instead of going silent.

Who currently controls these accounts

Two outside manager accounts still hold active administrative access to 581-417-4776 (LSA Main Rooter) — the account that holds the live budgets. A linked manager account can change budgets, un-pause campaigns and spend money without any further approval.

Manager accountIDLinkedRecommendation
Logic Inbound Manager Account548-341-8212 15 July 2026 Remove No current engagement requires it
Kirkland Rooter MCC366-598-7644 24 July 2026 Remove Duplicate manager layer above the same accounts
Toolforge355-219-11416 August 2026 Keep Current management

There is also a redundant layer of individual user access. Administrator rights granted in 2019 and 2022 are still live on three of the four accounts, held by people who are not presently managing them.

Recommended access changes.

  1. Remove the Logic Inbound Manager Account link from 581-417-4776 (LSA Main Rooter).
  2. Remove the Kirkland Rooter MCC link. Having a second manager account sitting above the same accounts creates two sets of hands on the same budgets and no clear owner.
  3. Audit the individual admin users on all four accounts and reduce anyone not actively working the account to read-only, or remove them.
  4. Leave Toolforge as the single manager account so there is one accountable owner.

Everything that is currently misconfigured

The complete list, by account, as the accounts stand today.

LSA Main Rooter — 581-417-4776 (LSA Main Rooter)

LSA GC Rooter — 377-138-5133 (LSA GC Rooter)

LSA Plumber Rooter — 791-982-5019 (LSA Plumber Rooter)

Closed account — 403-649-3148 (closed account)

What to do, in order

  1. Strip the budgets off the paused campaigns in 581-417-4776 (LSA Main Rooter), or delete the campaigns outright. This removes $894.60 per day of accidental exposure and costs nothing.
  2. Remove the two third-party manager links. One accountable owner.
  3. Turn LSA Plumber Rooter back on. It is verified, it worked, and it was producing leads at $47–$73. This is the fastest route back to lead flow.
  4. Fix conversion tracking before spending another dollar on Search. Automated bidding without reliable conversion data is what produced the $26.63 click.
  5. Decide what happens to the general contractor Local Services campaign. Either complete the background check and move it to the plumber category, or switch it off. Right now it is neither.
  6. Consolidate. Four accounts for one plumbing business splits the data, splits the budget and hides problems. Two Local Services accounts targeting the same Eastside postcodes compete with each other.
  7. Rebuild Search properly when you return to it: phrase and exact match to start, a real negative keyword list applied from day one, a weekly search-term review, and daily budgets sized to the account rather than to ambition.
  8. Clear the disapproved ads and put the weekly policy check in place.

How this was produced

Every number on this page was read directly from the Google Ads API on 6 August 2026, covering 1 January 2024 to 6 August 2026. No figure is estimated, modelled or taken from a screenshot.

Action checklist

Everything above, reduced to a working list. Tick items as they are completed — your progress is stored in this browser only.

ActionAccountPriority EffortOwner
Remove the Logic Inbound Manager Account link 581-417-4776 High2 minToolforge
Remove the Kirkland Rooter MCC link so there is one accountable manager 581-417-4776 High2 minToolforge
Zero out or delete the budgets on all paused campaigns — removes $894.60/day of accidental exposure 581-417-4776 High10 minToolforge
Delete Search-1 outright, or add location targeting and cut the budget — it has none and carries $300/day 581-417-4776 High5 minToolforge
Re-enable the verified Local Services campaign — the fastest route back to lead flow at $47–$73 per lead 791-982-5019 High5 minToolforge
Rebuild and validate conversion tracking before any Search spend resumes 581-417-4776 High1–2 hrs Toolforge
Complete the Local Services background check — outstanding since Sept 2022 377-138-5133 HighClient action Kirkland Rooter
Move that account to the plumber category, or switch the campaign off — it is currently filed as general contractor 377-138-5133 High15 minToolforge
Fix the landing page URLs behind the two destination not working disapprovals 377-138-5133 Medium30 min Kirkland Rooter / web
Rewrite or delete the five disapproved ads, including the two stale ones 377-138-5133 Medium45 minToolforge
Build a real negative keyword list and attach it — nothing runs on broad match until this exists All active Medium1 hrToolforge
Delete the orphaned Junk Cars - Test Aug 2022 and test negative lists 581-417-4776 Low5 minToolforge
Audit every admin user across all four accounts; reduce anyone not actively working the account to read-only or remove them All four Medium30 min Toolforge + Kirkland Rooter
Decide which Local Services account is canonical and stop the two accounts bidding against each other on the same postcodes 377-138-5133 / 791-982-5019 MediumDecision Kirkland Rooter
Switch off the campaign still enabled inside the closed account 403-649-3148 Low2 minToolforge
Rename the duplicate and misspelt campaigns (kirklnad Rooter, two campaigns both called Plumbing Services) 377-138-5133 Low10 minToolforge
Ongoing: weekly ad policy check and weekly search-term review once anything is running again All active Medium15 min/week Toolforge

If only three things get done: remove the two outside manager links, strip the $894.60/day of budget off the paused campaigns, and turn the verified Local Services account back on. Those three take under twenty minutes and address the live financial risk plus the fastest path back to leads.

Every keyword in the account

All 133 keywords across the three Search campaigns, with what each one cost in July 2026. 133 are broad match, 0 are phrase match, 0 are exact match, and 0 are negatives.

Sorted by July spend within each campaign. A keyword showing $0.00 still contributed impressions and still shaped what Google matched; it simply did not take a billed click that month.

Search-1 — 21 keywords, $101.50 in July

2 of 21 keywords took a billed click. 5 clicks total.

KeywordMatchStatusJuly costClicksImpr.Conv.
sewer cleaningBroadEnabled$67.4341940
drain plumberBroadEnabled$34.071330
clogged drain serviceBroadEnabled$0.00000
drain clearing serviceBroadEnabled$0.00000
drain plumbers near meBroadEnabled$0.00000
drain repair near meBroadEnabled$0.00000
drain rooter serviceBroadEnabled$0.00000
drain serviceBroadEnabled$0.000320
drain service near meBroadEnabled$0.00000
emergency drain cleaningBroadEnabled$0.00000
emergency drain cleaning near meBroadEnabled$0.00000
emergency drain serviceBroadEnabled$0.00020
emergency sewer serviceBroadEnabled$0.00000
plumber drain cleaningBroadEnabled$0.00000
plumbing services near meBroadEnabled$0.000180
rooter serviceBroadEnabled$0.000250
rooters plumbingBroadEnabled$0.00000
sewer cleaning servicesBroadEnabled$0.00000
sewer jetting near meBroadEnabled$0.00000
water heater installationBroadEnabled$0.00000
water heater repairBroadEnabled$0.00000

Shamim_Rooter — 65 keywords, $1,398.43 in July

14 of 65 keywords took a billed click. 41 clicks total.

KeywordMatchStatusJuly costClicksImpr.Conv.
plumbing repairBroadEnabled$440.023741
plumber near meBroadEnabled$291.7151220
clogged drain service near meBroadEnabled$166.6471391
drain rooterBroadEnabled$116.9221001
sewer and drain serviceBroadEnabled$116.6562030
plumbing servicesBroadEnabled$75.8253841
sewer cleaningBroadEnabled$67.4341940
sewer and drain cleaningBroadEnabled$26.091771
drain repair servicesBroadEnabled$24.353770
drain clean out serviceBroadEnabled$22.381290
kirkland plumberBroadEnabled$17.491520
sewer and drain service near meBroadEnabled$15.431940
sewer camera inspectionBroadEnabled$10.811860
rooter rooter near meBroadEnabled$6.691200
24 hour plumberBroadEnabled$0.00000
bellevue plumberBroadEnabled$0.00070
bothell plumberBroadEnabled$0.000150
clogged drainBroadEnabled$0.00000
clogged drain plumber near meBroadEnabled$0.00000
commercial plumberBroadEnabled$0.00010
drain cleaningBroadEnabled$0.00010
drain cleaning companiesBroadEnabled$0.000120
drain cleaning companies near meBroadEnabled$0.000650
drain cleaning near meBroadEnabled$0.00000
drain cleaning plumbers near meBroadEnabled$0.00090
drain cleaning service near meBroadEnabled$0.00000
drain cleanout near meBroadEnabled$0.00000
drain clog plumberBroadEnabled$0.000310
drain clog service near meBroadEnabled$0.00010
drain jetting servicesBroadEnabled$0.00030
drain rooter near meBroadEnabled$0.00000
drain rooter service near meBroadEnabled$0.000730
drain snaking near meBroadEnabled$0.00000
drain unclogging near meBroadEnabled$0.000120
emergency drain service near meBroadEnabled$0.00010
emergency plumberBroadEnabled$0.000540
everett plumberBroadEnabled$0.000230
hydro jettingBroadEnabled$0.00000
hydro jetting near meBroadEnabled$0.00000
hydro jetting sewer lineBroadEnabled$0.00040
local drain cleaningBroadEnabled$0.00040
local drain cleaning companiesBroadEnabled$0.000270
lynnwood plumberBroadEnabled$0.00000
redmond plumberBroadEnabled$0.000360
residential plumberBroadEnabled$0.00030
rooter drain cleaningBroadEnabled$0.000110
rooter plumbing near meBroadEnabled$0.000320
rooter service near meBroadEnabled$0.000290
roto rooter near meBroadEnabled$0.00080
roto rooter services near meBroadEnabled$0.00010
same day plumberBroadEnabled$0.00000
sewage cleaningBroadEnabled$0.000100
sewage cleaning companiesBroadEnabled$0.00020
sewer and drainBroadEnabled$0.0001080
sewer and drain cleaning company near meBroadEnabled$0.00000
sewer cleaning company near meBroadEnabled$0.00000
sewer drain cleaning near meBroadEnabled$0.00000
sewer line cleaningBroadEnabled$0.000120
sewer line cleaning near meBroadEnabled$0.00020
sewer line repairBroadEnabled$0.00000
sewer repairBroadEnabled$0.00000
sewer rooterBroadEnabled$0.000120
sewer rooter near meBroadEnabled$0.000440
water line repairBroadEnabled$0.00000
woodinville plumberBroadEnabled$0.000220

call only — 47 keywords, $734.40 in July

3 of 47 keywords took a billed click. 9 clicks total.

KeywordMatchStatusJuly costClicksImpr.Conv.
plumbing repairBroadEnabled$440.023741
plumber near meBroadEnabled$291.7151220
plumbing repairs near meBroadEnabled$2.671960
24 hour plumberBroadEnabled$0.00000
best drain cleaning service near meBroadEnabled$0.00000
best rooter service near meBroadEnabled$0.00010
clogged drainBroadEnabled$0.00000
commercial plumberBroadEnabled$0.00010
commercial plumbingBroadEnabled$0.00000
drain cleaningBroadEnabled$0.00010
drain cleaning near meBroadEnabled$0.00000
drain cleaning servicesBroadEnabled$0.00090
drain clog plumber near meBroadEnabled$0.00010
drain clog serviceBroadEnabled$0.00010
drain hydro jettingBroadEnabled$0.00000
drain repairBroadEnabled$0.00000
drain snaking serviceBroadEnabled$0.00000
drain unclog serviceBroadEnabled$0.00010
emergency plumber near meBroadEnabled$0.00040
emergency plumbingBroadEnabled$0.00030
emergency plumbing servicesBroadEnabled$0.00060
emergency rooter serviceBroadEnabled$0.00000
emergency roto rooter near meBroadEnabled$0.00000
hydro jettingBroadEnabled$0.00000
hydro jetting drain cleaningBroadEnabled$0.00000
hydro jetting services near meBroadEnabled$0.00000
jetting plumbingBroadEnabled$0.00000
main drain cleaning near meBroadEnabled$0.00000
plumber drain cleaner near meBroadEnabled$0.00000
plumber rooter near meBroadEnabled$0.00000
residential plumberBroadEnabled$0.00030
residential plumbingBroadEnabled$0.000110
rooter company near meBroadEnabled$0.00000
rooter near meBroadEnabled$0.00010
rooter rooter plumbing near meBroadEnabled$0.00000
roto rooter drain cleanerBroadEnabled$0.00010
roto rooter drain serviceBroadEnabled$0.00010
sewage plumbers near meBroadEnabled$0.00000
sewer and drain cleaning near meBroadEnabled$0.00000
sewer drain cleaningBroadEnabled$0.00000
sewer drain service near meBroadEnabled$0.000100
sewer hydro jettingBroadEnabled$0.00000
sewer line repairBroadEnabled$0.00000
sewer line repair near meBroadEnabled$0.00000
sewer plumbers near meBroadEnabled$0.00000
sewer repairBroadEnabled$0.00000
water line repairBroadEnabled$0.00000

Every campaign status change, July 2026

The change log records 13 campaign-level changes in the window, of which 10 are on/off flips. Each row below is the actual before and after value recorded by Google, not an interpretation.

WhenCampaignChangeWhoVia
2026-07-09 21:58LocalServicesCampaign:SystemGenerated:0005d5PausedEnabledkirklandrooter@gmail.comWeb_Client
2026-07-09 22:11LocalServicesCampaign:SystemGenerated:0005d5Updatekirklandrooter@gmail.comWeb_Client
2026-07-09 22:21Shamim_RooterEnabledPausedkirklandrooter@gmail.comWeb_Client
2026-07-11 08:52Shamim_RooterPausedEnabledkirklandrooter@gmail.comWeb_Client
2026-07-12 22:29LocalServicesCampaign:SystemGenerated:0005d5EnabledPausedkirklandrooter@gmail.comWeb_Client
2026-07-13 15:03campaign_budgetkirklandrooter@gmail.comWeb_Client
2026-07-13 15:04call onlyCreated as Enabledkirklandrooter@gmail.comWeb_Client
2026-07-16 17:46LocalServicesCampaign:SystemGenerated:0005d5PausedEnabledkirklandrooter@gmail.comWeb_Client
2026-07-17 08:56call onlyEnabledPausedkirklandrooter@gmail.comWeb_Client
2026-07-17 09:02LocalServicesCampaign:SystemGenerated:0005d5EnabledPausedkirklandrooter@gmail.comWeb_Client
2026-07-17 11:08Shamim_RooterEnabledPausedkirklandrooter@gmail.comWeb_Client
2026-07-17 11:19LocalServicesCampaign:SystemGenerated:0005d5PausedEnabledkirklandrooter@gmail.comWeb_Client
2026-07-24 10:18LocalServicesCampaign:SystemGenerated:0005d5EnabledPauseddouglas@toolforge.aiWeb_Client

Why this pattern costs money

Every one of these campaigns uses automated bidding, which means Google is running a model that learns from recent performance. Pausing a campaign stops that model. Re-enabling it starts a fresh learning period, during which Google deliberately bids experimentally to gather data — and every one of those experimental clicks is charged at full price.

A learning period typically needs one to two weeks of stable running to settle. These campaigns were flipped on and off repeatedly inside a single fortnight, so they spent essentially their entire lives in the most expensive state a campaign can be in, and never reached the settled phase where the bidding actually gets cheaper.

The instinct behind it is understandable: spend looks high, so you pause. Then nothing is happening, so you un-pause. The result is that you pay the learning tax over and over and never collect the benefit it was buying.

The Local Services service categories

Alongside the status flips, 47 campaign criteria were removed and 31 created. On a Local Services campaign these are the job types you tell Google you perform — drain unclogging, water heater installation, leak detection and so on. They decide which jobs you are shown for.

The account currently lists 9 service categories:

  • Leak detection find_leak
  • Faucet installation install_faucet
  • Water heater installation install_water_heater
  • Plumbing Other plumbing_other
  • Pipe repair repair_pipe
  • Sewer repair repair_sewer
  • Toilet repair repair_toilet
  • Water heater repair repair_water_heater
  • Drain unclogging unclog_drain

Stripping 47 categories and rebuilding 21 is a substantial change to what the business is advertised as doing. Narrowing the list narrows the jobs you are eligible for; widening it into work you do not really want produces leads you have to decline — and in Local Services you are charged per lead, so declined leads still cost money unless each one is disputed individually.

Broad match and negative keywords, explained

What a match type actually does

A keyword is not a list of words you buy. It is an instruction to Google about how loosely it may interpret you. There are three settings, and the difference between them is the difference between a $7 click and a $135 one.

Match typeWhat it tells GoogleExample: your keyword is drain cleaning
ExactShow only for this search, or a very close variant of it.Matches drain cleaning and drain cleaner service. Nothing else.
PhraseShow for searches that contain this idea, in order, with words around it.Matches emergency drain cleaning kirkland. Does not match roto rooter.
BroadShow for anything you judge related. Use my keyword as a hint, not a rule.Matches roto rooter, ferguson plumbing seattle, septic near me — all of which this account actually paid for.

Every one of the 133 keywords in this account is set to broad match. There is not a single phrase or exact keyword anywhere. The account has been running on the loosest setting Google offers, on all of it, all of the time.

Broad match is not the mistake by itself

Broad match is a legitimate, sometimes excellent tool. Google genuinely can find profitable searches nobody would have thought to write down. But it is explicitly designed to be run with a brake, and the brake has two parts:

  1. A negative keyword list — the searches you refuse to pay for, no matter how related Google thinks they are.
  2. A search-terms review — reading, at least weekly, the actual queries that triggered your ads, and adding the bad ones to that negative list.

This account has 0 negative keywords. Not a small list. Not an out-of-date list. None. And the search-terms report shows no sign of having been acted on: the same wasteful queries kept being paid for across all fourteen days.

What a negative list would have caught here

Four negatives, taking about two minutes to add, would have blocked the majority of the identified waste:

Negative keywordBlocksWould have saved
fergusonSearches for the plumbing supply chain — people going to a parts counter$149
septicA different trade this business does not perform$57
roto rooterThe single most searched competitor brand in the trade$104
supplyWholesalers and distributors generally$14

Savings are the July billed spend on search terms containing each word, taken from the search-terms report. They overlap slightly where a query contains more than one, so they do not sum exactly.

A proper negative list for a plumbing account runs to a few hundred terms and covers competitor names, supply houses, adjacent trades, job hunters (jobs, salary, apprentice), DIY intent (how to, diy, youtube), and price shoppers looking for parts rather than labour. It is a one-hour job, done once, and then maintained for a few minutes each week.

The irony. This account already contains two negative keyword lists — one with 427 terms and one with 1,369 — but neither is attached to a single campaign, so neither has ever blocked anything. The tooling was there. It was never connected.

Daily budgets, and why these were dangerous

A daily budget is not a spending cap

This is the part almost everyone gets wrong. A daily budget is the figure Google aims to average across a month. Google is explicitly permitted to spend up to twice your daily budget on any single day, and balance it back later. A $300 daily budget authorises up to $600 in one day.

It is also not a bid, and it does not make your clicks cheaper. What it does is tell Google how much rope it has. With broad match and automated bidding, Google will use the rope.

What was configured

CampaignDaily Implied monthlyPossible single day
Local Services$300.00$9,125$600
Search-1$300.00$9,125$600
call only$200.00$6,083$400
Shamim_Rooter$50.00$1,521$100
Plumbing Services$22.90$697$45.80
Residential Plumbing Services$21.70$660$43.40
Total$894.60$27,209 $1,789

The proportion is the problem

Before July 2026, this account's largest month on record was $98.06. The budgets sitting on it authorise $27,209 a month — about 277 times its previous best month.

A daily budget is the only hard safety net a new campaign has. Bidding, match types and targeting are all Google exercising judgement. The budget is the single number that says "whatever you decide, stop here." Set it far above what the business can absorb and the net is gone, so a configuration error that should have cost $50 to discover cost $2,557.

What it should have been

For a local trade launching a new Search campaign: start at a daily figure you would be relaxed about losing entirely — typically $20–$50 for a business this size — run two weeks, read the search-terms report, and only raise it once the cost per genuine lead is known. You scale what is proven. You do not scale what has never run.

This is still live. Pausing a campaign does not remove its budget. Every figure above is still attached and still armed. Three manager accounts and two individual admins currently have the ability to un-pause, and the exposure resumes at $894.60 a day immediately — same broad match keywords, same empty negative list.

Location targeting, and the campaign that has none

Campaigns are not local by default

Left alone, a Google Ads campaign will show to anyone the account's currency and language allow. You make it local by adding location criteria — cities, postcodes, or a radius. A plumber should be targeting exactly the areas they will actually drive to.

There is a second setting, location options, which decides whether "in this area" means people physically present, or also people elsewhere showing interest in it. The interest option is Google's default and a very common cause of out-of-area spend.

What each campaign has

CampaignLocation criteria Location optionDaily budget
Shamim_Rooter16 city targetsPresence only$50
call only9 city targetsPresence only$200
Local Services10 targetsPresence only$300
Search-1None — device and language only Presence only$300

What that means

Search-1 carries a $300 per day budget, 21 broad match keywords, and no geographic restriction of any kind. Enabled, it would be eligible to serve nationwide — a Kirkland plumber bidding against every plumbing search in the United States, on broad match, with no negative keywords, on automated bidding. It is paused, and being paused is the only thing between that configuration and a very large invoice.

Credit where due, and a precise distinction. All three campaigns use presence rather than presence or interest. That is the correct setting and it is frequently wrong in accounts like this. It also means the out-of-area searches this account paid for — a plumber in Sequim, one in Ada, Oklahoma — came from people physically in the Eastside searching for those businesses by name. That is a keyword and negative-list failure, not a geography failure. It matters to be exact about which, because the fixes are different.

Automated bidding, and why it misfired

What Maximize Conversions is instructed to do

Automated bidding hands Google the decision on what every individual click is worth, set in real time per auction. MAXIMIZE_CONVERSIONS — the strategy on all three Search campaigns — is the most aggressive option. Its instruction is literally: spend the entire daily budget and get as many conversions as possible for it.

Note the first half. It is not trying to spend efficiently. It is trying to spend the budget.

Why it needs history

The strategy predicts which auctions will convert and bids up hard on those. That prediction is built from the account's own recorded conversions. Google's guidance is that it needs meaningful recent volume — commonly cited as around 30 conversions in 30 days — before it performs.

Starve it and it does not switch off or fall back to something safer. It keeps its instruction to spend the budget, with no idea which clicks are worth anything. So it bids aggressively, effectively blind.

What that produced

MeasureValue
Average cost per click, July 2026$26.63
Average cost per click, this account lifetime$9.04
Average cost per click, LSA GC Rooter lifetime$1.88
Most expensive single click$135.60
Cost per conversion, July 2026about $256

A $26.63 average click in residential plumbing is high but arguable. A $135.60 single click is not a market rate. That is an automated system with a large budget, no conversion history to learn from and no negatives to stop it, deciding a competitor brand search looked promising.

Five failures multiplying

  1. Broad match opened the account to anything Google judged related.
  2. No negative keywords meant nothing was ever ruled out.
  3. Maximize Conversions was told to spend the whole budget regardless.
  4. Unreliable conversion tracking meant it could not tell good from bad.
  5. A $300 daily budget meant there was a lot to spend.

Fix any one and the damage shrinks materially. All five were wrong at once, which is how fourteen days cost $2,557.

The sequencing rule. Automated bidding is a multiplier on what it is given. Pointed at a well-tracked account with clean targeting it beats manual bidding comfortably. Pointed at broken tracking and no negatives it spends faster and worse than a person would. Conversion tracking is fixed first. Nothing in this account should restart before that.

Conversion tracking, and how it fails silently

What a conversion actually is

A conversion is the thing you want — a phone call, a form submission, a booked job. Google cannot see any of it by itself. Conversion tracking is the plumbing that tells it: a code snippet on the website, a call-tracking number, or an automatic signal from a Smart campaign.

Without it, Google Ads still reports clicks and impressions perfectly happily. That is the trap — the account keeps producing confident numbers about traffic while nobody knows whether any of it became work.

The shape of the failure

PeriodSpend ClicksConversions
Feb 2024$219.28751
Mar 2024$329.9519536
Apr 2024 – Jun 2025, 10 billed months$2,515.66 1,3150

March 2024 recorded 36 conversions. Then it stops dead. Ten further billed months delivered 1,315 clicks and recorded not one conversion between them.

Only two explanations, both serious

  1. Tracking broke in April 2024. The website was rebuilt, a tag removed, or a tracking number lapsed — conversions kept happening but stopped being recorded. The money may have bought real work and there is no measurement of it for fourteen months.
  2. The spend genuinely produced nothing. $2,515.66 bought 1,315 clicks and no business.

The evidence leans to the first. This account carries nine conversion actions, and five of its ads are disapproved for destination not working — Google could not load the landing pages. A website that broke Google's crawler is exactly the event that also breaks a conversion tag.

Why it matters beyond the money

Automated bidding runs on conversion data. An account whose tracking has been dead for fourteen months cannot bid well, cannot tell which keywords deserve budget, and cannot report honestly on what advertising is worth. Every optimisation decision in that period was made on incomplete information.

The check that would have caught it. Money out and zero conversions back should raise an alarm within days, not fourteen months. It is the single easiest health check on an ad account, and nobody performed it.

Local Services verification, explained properly

Two products sharing one account

Google Local Services Ads and ordinary Google Ads are separate products in the same account shell. Local Services are the results at the very top of a local search carrying the Google Guaranteed badge, priced per lead. Search, Smart and Display sit below them, priced per click.

Verification — background check, licence, insurance — is a requirement of Local Services only. It has never gated Search or Smart campaigns. That is the whole explanation: the money in that account was never spent on the unverified campaign.

The three checks

CheckWhat Google confirmsWho must act
Background checkOwner, and in many categories field staff, screened by Google's third-party providerThe business owner — an agency cannot complete this for them
LicenceTrade licence current and matching the business Business supplies documents
InsuranceGeneral liability meets Google's minimum Business or insurer supplies the certificate

Where each account stands

AccountBackgroundLicence InsuranceCan it serve?
LSA Plumber Rooter 791-982-5019Passed PassedPassedYes — but paused
LSA Main Rooter 581-417-4776Passed PassedPassed after one failureYes — but paused
LSA GC Rooter 377-138-5133No submissionNo since Sept 2022
Closed 403-649-3148CancelledFailed FailedNo

The status that matters

NO_SUBMISSION does not mean rejected, expired or under review. It means nobody ever started it. The record was created on 16 September 2022 and has sat untouched since. For nearly four years that account has been configured to compete for the top of the plumbing results while ineligible to appear there — and nothing in the interface shouts about it, because the campaign displays as enabled.

The wrong category compounds it

That campaign is filed under general contractor, not plumber. Local Services matches on category. Even with verification finished tomorrow, a general contractor listing competes for general contracting searches against builders and remodellers — not the drain and sewer work this business does. The verified sister account is correctly filed as plumber.

The cost is real but invisible. No invoice shows it. It appears as four years of Local Services jobs in Kirkland going to whoever did appear there. Local Services sits above the paid ads and above the map pack — the most valuable position on the page for an emergency trade — and this business has been absent from it while believing otherwise.

Account access, and why it is a financial control

Two separate systems, routinely confused

There are two independent ways to reach a Google Ads account, and removing one does nothing about the other.

  1. User access — an individual email granted a role (admin, standard, read-only), shown under Access and security.
  2. Manager account links — an entire manager account (an MCC) linked above yours, shown on a different screen entirely.

Agencies normally hold a manager link rather than a user login. So removing a person's email address does not remove their agency's access, and vice versa. Both must be checked.

What a manager link permits

Everything. A linked manager can change budgets, create and un-pause campaigns, alter targeting, add users and spend money — with no further approval and no notification to you first. It is not oversight. It is a second set of hands with equal authority.

Who holds access to the money-spending account

HolderTypeSince Can spend?
Logic Inbound Manager Account 548-341-8212 Manager link15 Jul 2026Yes
Kirkland Rooter MCC 366-598-7644Manager link 24 Jul 2026Yes
Toolforge 355-219-1141 (Toolforge)Manager link 6 Aug 2026Yes — current management
The account owner loginUser — admin17 Jul 2020 Yes — owner

On the other three accounts an individual admin granted in 2019 and 2022 remains active while not currently working on them.

Why two manager accounts is worse than one

It is not merely redundant. With two managers above one account there is no single owner of a change. When a budget moves the log names the login, not the organisation, and each party can reasonably assume the other is watching. Accountability requires exactly one manager account. Anyone else who needs visibility gets read-only user access — they see everything and change nothing.

A note on fairness. The change log attributes every July campaign build and keyword change to the account's own login, and the Logic Inbound link was created two days after that build. Nothing in the record shows that agency causing the July spend, and this report does not claim it did. The recommendation to remove both outside links rests on a simpler principle: nobody should keep live spending authority over an account they are not currently engaged to manage.

How the search spend was classified

Keyword versus search term

A keyword is what you told Google you want. A search term is what a real person actually typed. On exact match those are nearly the same. On broad match they can be wildly different — and that gap is exactly where money is lost.

The search-terms report is the screen that shows the gap. It is the most important report in a Search account, and the change log shows no sign of it having been acted on during July: no negative keyword was ever created.

What was measured, and what could not be

July Search spend was $2,418.32. Google attributes $1,399.47 of that to specific identifiable queries, across 48 billed terms out of 1,417 seen. The remainder falls below Google's privacy reporting thresholds — queries typed by too few people to be disclosed — and cannot be traced by anyone, including us. Every percentage here is of the traceable $1,399.47, and the page says so wherever the figure appears.

How each category was decided

CategorySpendRule
Other named businesses$1,039.53Query contains an identifiable company name — Roto-Rooter, Bob Oates, Aurora Plumbing, ABV, Southside, Cahill, CPI, Top Line, Wallner and others
Plumbing supply houses$167.81Query names a parts distributor — Ferguson, Pacific Plumbing Supply, Rheem. These people want a trade counter, not a plumber
Genuinely relevant$104.07Generic plumbing or drain intent, no competing brand, no other trade
Septic and drain field$56.61Septic systems — a separate trade from drain cleaning and sewer repair
Own brand$31.44Query contains "kirkland rooter"

Classification uses fixed published name lists rather than judgement, so the figures can be re-derived independently from the same search-terms export.

Is bidding on competitors always wrong?

No, and it is worth being fair here. Targeting competitor brand terms is a recognised tactic. Done properly it uses exact match, a separate campaign, a small controlled budget, ad copy giving a reason to switch, and close measurement of whether those clicks ever convert.

None of that applies. This was not a competitor strategy — it was broad match with no negative list, so Google chose to put three quarters of the traceable budget into competitor searches and nobody decided that or noticed. The tell is in the outcome: $1,039.53 on competitor names produced 4 conversions, while the business's own brand name drew $31.44 across the entire month.

Why four accounts is a problem in itself

What fragmentation actually costs

One plumbing business across four Google Ads accounts is not just untidy. It causes concrete harm.

  1. Split learning. Automated bidding learns per campaign inside one account. Four accounts means four thin pools of conversion data instead of one useful one, and none accumulates enough history to bid well.
  2. Self-competition. Two accounts ran Local Services campaigns over overlapping Eastside geography — one by city, one by postcode. Same auction, same customer, same business funding both sides.
  3. Problems hide. Two of the four had no account name at all until this audit. An unnamed account with a background check outstanding since 2022 is very easy never to open.
  4. No single view of spend. Nobody can answer "what did we spend on Google last year" without opening four places and adding up.

How they came to exist

AccountEarliest recordCategory Apparent purpose
581-417-4776 LSA Main RooterJul 2020 PlumberMain account — Search, Smart and Local Services
377-138-5133 LSA GC RooterJul 2019 user, Sept 2022 LSAGeneral contractorLegacy Smart campaigns plus a Local Services campaign never verified
791-982-5019 LSA Plumber RooterSept 2022 PlumberA second, fully verified Local Services account
403-649-3148Sept 2022 Closed; verification failed

Three of the four date from around September 2022, which suggests an attempt to solve a verification problem by opening new accounts rather than fixing the original. That is a common and understandable move, and it leaves precisely this mess — the failed attempts stay behind, still enabled, still holding budgets.

What consolidation looks like

One manager account at the top. One live advertising account beneath it, correctly categorised as a plumber, carrying both Local Services and any Search activity. The others closed properly rather than merely paused — a closed account cannot spend, a paused one can.

The first decision is which Local Services account becomes canonical. The verified plumber account is the obvious candidate: verified, correctly categorised, and the cleanest cost per lead in the portfolio.

How ad disapproval works, end to end

Every ad is reviewed

Google reviews every ad against its policies, usually within a working day. An ad emerges as approved (runs normally), approved with limitations (runs, but restricted), or disapproved (does not run at all).

The critical part is what a disapproval does not do. It does not pause the campaign, the ad group, or remove the ad. The campaign carries on looking active with its budget attached while that ad serves nothing. An account can appear fully operational while most of its ads are dead.

The state of these ads

AccountAds ApprovedDisapprovedUnknown
LSA GC Rooter 377-138-51338 152
LSA Main Rooter 581-417-47766 600

Note the contrast. The account worked on in July has all six ads approved. The account nobody opens has five of eight disapproved, two long enough to have gone stale.

Prohibited versus limited

The severity marker matters. Prohibited means the ad cannot run at all until fixed. Limited means it runs with restricted reach — certain countries, or certain searches. Four of the five here are prohibited.

Why ignoring them escalates

An individual disapproval is routine and nobody is judged for it. What Google tracks is the pattern. Repeatedly leaving disapproved ads untouched accumulates policy history, and a sustained pattern is grounds for account-level suspension — which stops everything at once, including whatever was working. STALE_DISAPPROVAL on two ads here is Google explicitly recording that a disapproval was ignored.

The two-minute check. The ads table has a status column. If it does not say Approved, something is not running. Looking once a week is the entire discipline, and it would have caught all five of these within days.