Skip to main content

Ad account monitors

Most of what goes wrong with a live ad account goes wrong quietly. A competitor raises their bids and your cost per click climbs through the afternoon. A budget change lands wrong and a campaign spends its month in a week, or stops spending altogether and nobody notices for days. A site change breaks the conversion tag and the platform keeps reporting numbers that are no longer true — which is worse than reporting nothing, because the bidding keeps optimizing against them. None of these announce themselves. You find them when you next open the account, which is usually after they have cost something. So Erdo watches for them without being asked. Connect a Google Ads or Meta Ads account and the CPC spike alert and budget pacing alert start running against it, alongside the traffic quality monitor that watches who the money is buying. Conversion tracking health needs one more thing connected — see below. All four are read-only: they read, and they raise an item in your attention feed. None of them changes a bid, a budget, a keyword or a campaign’s status. On Google Ads, a fifth monitor adds your logo and business name to your ads once Google allows it, and every change it makes goes through an approval card first.

CPC spike alert

Runs every four hours between 08:00 and 21:00 in your timezone, and answers two questions. Are your ads still showing at all? Before it reads any cost, it counts how many times your ads were shown in each hour of today, and compares that against the hours your account normally runs. Three or more hours in a row during the day with nothing shown, in hours that normally do show your ads, means serving has stopped, and Erdo raises it as urgent. The comparison against your own normal hours is what keeps this quiet. If your campaigns are scheduled to start at midday, your mornings are empty every day and that is not a fault — so Erdo establishes the hours you actually serve in before it calls an empty hour a problem, and a campaign too new to have that history is left alone rather than guessed at. Those normal hours are taken from the days before your ads stopped, never from the days since. That is what lets Erdo still recognise an outage that has been running for a while: an account that has been dark for a week or more is reported as stopped, whether it went quiet an hour ago or before Erdo was watching it. This is worth catching separately because of how it looks from the outside. When Google or Meta stops an account — a card that failed, a billing hold, a policy suspension — your campaigns still read as enabled, your budgets still read as they did, and nothing in the data Erdo can reach says the account was stopped. The only visible sign is that your ads stopped being shown. So the alert names the last hour your ads ran and tells you to check billing and account status in the ad platform’s own interface, which is the only place the reason appears. Has your cost per click jumped? It compares the last few hours’ cost per click against the same hours yesterday, per campaign, and flags an increase of more than about a fifth. When it fires it names the campaigns affected, the size of the move, and what is driving it — which keywords or audiences, and whether the shift looks specific to you or like the whole auction got more expensive. It reads this only over hours your ads actually ran: a cost per click averaged over hours with no ads shown is a number about nothing. Four-hourly rather than hourly is deliberate. Cost per click moves over hours, not minutes, and a check that runs twenty-four times a day to watch it costs real money for the same answer. Whether your ads are showing is also checked every hour, by the serving check below.

Hourly serving check

For Google Ads campaigns that Erdo manages for you, a second check runs every hour. It uses no AI model. It reads three things for each campaign: Google’s status for the campaign, the impressions it recorded in each recent hour, and whether its ads are approved. It raises an urgent item in your attention feed when a campaign that has been running stops, in any of these ways:
  • Its ads were disapproved or sent back for review. If none of a campaign’s ad groups has an ad Google will show, the campaign has stopped even though it still reads as enabled. This is raised on the first hourly run that sees it.
  • Google marks the campaign not eligible to serve. The item quotes Google’s reason.
  • It has shown no ads for three hours or more, in hours that normally show them. This catches stops Google gives no reason for, such as a billing hold. Quiet hours, like the middle of the night, do not count.
If the only reason is that the campaign spent its daily budget early, the item is raised as needing attention rather than as urgent. The item names the last hour the campaign served and suggests the fix for the cause. For example, an ad group whose ads use two different websites needs a new ad group on one website. When the campaign serves again, the next run closes the item on its own. The same hourly run also checks where each enabled ad sends its clicks. It raises one item per ad group when a destination:
  • does not load, because the page answers with an error, does not answer at all, or is an Erdo page that is private or deleted. This is urgent: every click on that ad is paid for and lost.
  • is an Erdo page that belongs to another organization. The page works, but the leads it captures are recorded in that organization, so you never see them.
  • redirects to a different website than the one the ad names.
When every destination in the ad group works again, the next run closes the item. The CPC spike alert reports a stopped campaign under the same item, so a stop shows up once in your feed, not twice. Each run is billed as one credit.

Budget pacing alert

Runs once each morning. It reads your campaigns’ spend against their daily budgets and against where the month should be by now, and flags a campaign spending under half or over about a fifth above its expected pace. It also reads the last seven days one day at a time. A day that spent nothing, following days that spent normally, is reported as spend that stopped rather than as a pace, and it is named before any monthly figure. This matters because a month-to-date total is the sum of the days that did spend: it keeps looking healthy right through a day when nothing happened at all. If every one of your campaigns is at zero on the same day, the CPC spike alert has the hour it started and raises it; budget pacing points you there rather than raising a second alert about the same thing. The under-pacing half is the one people forget to want. A paused campaign, an exhausted budget, or a disapproval that took your ads out of the auction all show up here as spend that should have happened and did not.

Conversion tracking health

Runs once each morning. It compares the conversions the ad platforms report against what your analytics actually recorded, checks that the events you expect are still firing, and flags an event volume that has dropped by more than about a fifth versus the same period last week. Because it reconciles two sides — what the ad platform reports and what your analytics recorded — it needs both connected: an ad account (Google Ads or Meta Ads) and Google Analytics. With only an ad account connected, there is no analytics side to check it against, so this monitor does not appear until analytics is connected too; the other three do not need it. Connected is not the same as wired up, and the monitor checks which one it is looking at. Before it reports conversions missing, it confirms your analytics property is receiving anything at all from the pages your ads point at. If it never has, the two were never joined and there is nothing broken to fix — you will see that noted quietly rather than raised as an alert. Pages Erdo builds for you are a common reason: they report to Erdo’s own page analytics, so your separate Google Analytics property may legitimately never see them. If your property was receiving events from those pages and has stopped, that is the opposite situation, and Erdo treats it as the real failure it is and tells you when the last event arrived. The two look identical inside a single week of data, which is why Erdo looks back far enough to tell them apart before saying anything. Broken conversion tracking is expensive in a way that is easy to under-rate: automated bidding learns from the conversions it is told about, so a tag that silently stops firing does not just lose you reporting — it steers your bidding toward the wrong clicks for as long as it goes unnoticed.

Logo and business name

Google shows your logo and business name at the top of a search ad only after the advertiser has completed advertiser verification in Google Ads, under Admin, then Policy, then Account. Until then it refuses them, and your ads show a globe icon and the web address instead. Verification is done by a person and can take days, and Google does not tell Erdo when it finishes. So every day Erdo checks your live Google Ads campaigns, and for any that is missing its logo or name it tries adding them again. While it waits, it keeps an item in your attention feed saying what for. Each try is an approval card naming the logo and name it will add, taken from the ones agreed at launch. If Google still refuses, nothing changes and the item says what is left to do. Trying again adds nothing new to your account: Google reuses the logo and name it already holds. Once they are added, the item clears and the monitor has nothing more to do until a new campaign goes live without them. It also tells you when Google disapproves a logo or business name, so you can choose a replacement. It never changes any other part of your ads.

What they read, and whose campaigns they read

Each monitor works out which campaigns are yours before it reads a single number. Ad accounts are sometimes shared between businesses, and every campaign in one is visible to whoever can read it — so a monitor that simply totalled the account would tell you about somebody else’s spend. Each of these resolves your campaigns from your own records and from the traffic landing on your own pages, reads only those, and says how many campaigns in the account were outside your scope without naming them. If a monitor cannot finish working out which campaigns are yours, it says so rather than reporting that everything looks normal. A clean bill of health drawn from half an inventory is the one answer that would be worse than no answer.

What a quiet day costs you

Each monitor’s first act is to check whether your campaigns spent anything in the last week. If they did not — the account is connected for reporting, the campaigns are between launches, nothing is enabled — it reports that there was nothing to watch and stops there, without running the rest of its checks. The logo and business name monitor does the same with two reads: which of your campaigns are live, and whether your logo and name are already on them. Monitoring an account that is not spending, or one that is already set up, should be close to free, and it is.

Turning them on

Nothing to turn on. Connect an ad account and the CPC spike alert, budget pacing alert and traffic quality monitor appear in your automations within a few hours, and the hourly serving check joins them for each set of Google Ads campaigns Erdo manages for you; connect Google Analytics as well and conversion tracking health joins them. Connect Google Ads and the logo and business name monitor joins them too. Organizations with no ad account connected do not get any of them. Page health monitoring watches the pages your ads point at and runs whether or not you have an ad account connected. Like any automation you can open one, change its schedule, edit its instructions, or disable it. If you edit the instructions, Erdo treats that copy as yours and stops updating it, so your changes are never overwritten by a later platform improvement — and if you disable one, it stays disabled.