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.
- 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.

