Agency playbook
Turn “what did you change this month?” into a one-page answer.
Smart Bidding, Performance Max, and your own AI tools move budgets and bids between client calls. This is the client-ready ledger of every change — what moved, from what to what, who or what did it, and when — built from the ad platform’s own record, not your memory at month-end.
For freelancers and small agencies running client accounts on Google Ads and Meta.
The client ad-change ledger — copy this
This is the artifact, not a description of one. Drop it into your next client recap. Every row is one real change with the four things a client actually asks about: what moved, the before and after, who did it, and why it mattered to their spend. The example rows below are filled in so you can see the shape.
| Date | What changed | Old → New | Who / what | Why it matters | Show client? |
|---|---|---|---|---|---|
| Jun 3 | Search campaign daily budget | $120 → $90/day | Smart Bidding (automated) | Pulled back after CPA rose 18% week-over-week | Yes — budget down |
| Jun 7 | 6 negative keywords added | — → 6 exact negatives | AI operator (you approved) | Cut ~$410/mo of zero-conversion search spend | Yes — the win |
| Jun 11 | Target ROAS | 350% → 420% | You (manual) | Protecting margin on thin-margin SKUs | Optional |
| Jun 18 | Prospecting ad set paused | Active → Paused | Automated rule | Creative fatigue — CTR fell to 0.6% | Yes — explain |
- Decision rule: surface anything that moved spend, changed a target, or paused delivery. Cosmetic edits — renames, label tweaks — stay off the client copy.
- The "Who / what" column is the one that saves the account: it separates what you did from what the platform’s automation did on its own.
- Edge case worth checking first: a change you did not make and did not approve. That row is usually a smart-bidding action or an account-side edit — find it before the client does.
You’re rebuilding this from memory, and the platform isn’t helping.
At month-end you open the client’s account, try to reconstruct what you — and the platform’s automation — did since the last report, screenshot a few graphs, and send a recap that’s mostly performance numbers and almost nothing about what actually changed.
Meanwhile Smart Bidding and Performance Max have been moving budget on their own all month. When the client asks why mid-month spend looked different, “the algorithm did it” is not an answer that keeps the retainer.
- Manual client reporting typically runs 5–10 hours per client per month — most of a work-week at a 15-client book.
- Industry data puts annual PPC-agency churn near 49%, and “clients feeling uninformed about campaign activity” is rated a very-high-impact churn driver for agencies under 25 people.
- Walled-garden automation (Advantage+, Performance Max) can shift spend in ways that are, in the platforms’ own users’ words, “hard to explain to clients mid-month.”
Where the ledger comes from
Read the platform’s own log
Google Ads keeps a change_event record of every budget, bid, status, and keyword change — the user, the old value, the new value, and the timestamp. Meta exposes the equivalent through its ad-account activity feed. SpendSignoff reads that record; it does not reconstruct from memory.
Translate each change to client language
Every raw entry becomes one plain-English row: what moved, from what to what, whether you, the platform’s automation, or the AI operator made it, and why it matters to the client’s spend. The technical diff becomes a sentence a non-marketer reads.
Hand over one branded page
Export a dated, itemized ledger under your own brand — the answer to “what changed and when” before the client thinks to ask. It sits next to your performance report, not inside it.
Recap email vs. change ledger
Why this works
Google Ads keeps the record — but only the last ~30 days are queryable.
The Google Ads API change_event resource must be filtered to a date range within the past 30 days and capped at 10,000 rows per query. That is exactly why a change ledger has to be captured on a schedule — wait past the window and the machine-readable history is gone.
Google Ads API — Change Event docsCommunication, not performance, is the lever that loses small-agency clients.
Industry reporting puts annual PPC-agency churn near 49%, with “communication breakdown — clients feeling uninformed about campaign activity” rated a very-high-impact churn driver for sub-25-employee agencies. An itemized “here is exactly what changed” record attacks that driver directly.
digitalapplied — agency client reporting 2026The MCP ad tools that make the changes can’t produce this ledger.
Pure MCP “ad pipes” execute changes through the platform APIs but keep no system-of-record to export from — so they have nowhere to generate a client-presentable change history. The record has to come from a layer that reads and retains the platform’s own log.
How SpendSignoff is builtQuestions
Where does the change data actually come from?
The ad platform itself. Google Ads exposes a change_event log (who changed what, old and new value, timestamp) through its API; Meta exposes an ad-account activity feed. The ledger reads those records — it doesn’t guess or reconstruct from performance data.
Can I see changes older than 30 days?
Google’s machine-readable change log only returns about the last 30 days per query, so anything older has to have been captured while it was still in the window. That 30-day limit is the main reason to record changes on a schedule rather than scrambling at month-end.
Does this show what Smart Bidding or Performance Max did on its own?
Yes — that’s the point of the “Who / what” column. Automated changes are attributed to the platform’s automation, separated from changes you or the AI operator made, so you can explain mid-month spend swings instead of blaming “the algorithm.”
Is this the same as a performance report?
No. A performance report shows results — spend, conversions, ROAS. The change ledger shows what changed and who changed it. They answer different client questions; the strongest monthly update pairs both.
Do I have to give SpendSignoff permission to spend?
No. Generating the change ledger is read-only — it reads the platform’s change log and never needs write access. Approving and pushing changes is a separate, human-gated step you opt into; the report stands on its own.
Keep reading
See the change ledger built from a real account.
Bring a Google Ads or Meta account to a 15-minute demo and watch the itemized, attributed ledger generate from its own change log — read-only, no spend access.