Nothing changes in your account without a receipt .
Change History Alert sweeps your Google Ads account once a day, pulls the change_event log via the API, and posts a Slack summary with who did what, when, and what was there before (email optional). No manual pull, no Monday postmortem.
A receipt of every hand that touched your account.
Each morning's sweep reviews every change Google Ads logged since the previous run — authorized and unauthorized both — and alerts you to the ones that fall outside your authorized users and domains.
Sample · one account · one morning's sweepThree small rails, one morning alert.
Change History Alert isn't clever. It's a scheduled read of Google's own change log, a bit of attribution work, and a Slack alert. That's the point — boring, reliable, auditable.
Reads Google's change_event log daily.
At 05:00 UTC, Change History Alert queries Google Ads API v24.1 for every change_event logged in your account since the last sweep. One pass, your whole account.
Cadence: daily · 05:00 UTCWho did what, and what was there before.
Each change is annotated with the user identifier (team member, agency, or Google automation), the exact timestamp, and the before/after values — all pulled straight from Google's API. No inference, no guessing.
Source: change_event · Google Ads API v24.1One summary, every morning.
Unauthorized changes (unattributed, automated, or by users outside your authorized list) are posted to your Slack channel — and email if you've added recipients. Every change is logged to your account diary, and the run record is retained in tool_execution_logs for audit.
Channel: Slack · email optional · dailyChange History Alert routed three auto-applies back for review in one morning. Two got reverted before they finished the week.
The honest answers to the usual onboarding questions.
Is this actually 24/7?
No — and we won't pretend otherwise. Change History Alert runs once a day at 05:00 UTC. You get a summary every morning that covers the previous day's changes. If you need real-time interception, pair it with Auto-Apply Guard (which blocks the most common source of overnight changes — Google's auto-apply subscriptions).
Does it read from Google Ads or from a scraped log?
Direct from Google Ads API v24.1, via the change_event GAQL query. Same source Google uses in its own UI. No scraping, no synthetic data.
Where do the alerts go?
Unauthorized changes are posted to your Slack channel each morning. Email is optional — add one or more recipients in the tool settings and the same summary is emailed too. Every change is also written to your account diary, so there's a permanent audit trail regardless of channel.
Can I filter out certain change types?
The report groups changes by category (bids, budgets, status, ad content, targeting) so you can skim the sections you don't want to read. Threshold-based filtering isn't a configurable feature — the tool reports everything and lets you triage.
What if the sweep fails?
The run record sits in tool_execution_logs. If the cron misses a morning, the next successful run covers the gap — we query Google since the last successful sweep's timestamp, not since 24h ago. You don't lose changes to a failed run.
Run the audit.
Keep the findings.
Connect your account and let Lyra run its 18 tools for 14 days. If the projected waste recovery isn't worth at least 10× the $49, don't pay. You keep every insight either way.
Read-only connect · write access opt-in per tool · SOC 2 in progress · GDPR + CCPA compliant