Meta ads activity log through Claude: who changed what
Your ad account has kept a record of every change all along. The connector can read it — and the defaults decide how much of it you see.
Meta's ads connector can read your ad account's change history — the record behind the Ads Manager history page — and answer “who changed what, and when.” It reports the actor, the event type, and, where the entry carries them, the old and new value. Two things shape the answer before you see it: the window it asks for by default is wider than the one Meta's API returns on its own, and its category filter takes one value from a list that mixes object levels with kinds of change.
A budget you did not set. An ad set delivering that you are fairly sure you paused on Friday. The account has a freelancer on it, an agency seat nobody revoked, and now an assistant with write access, and the honest answer to who did that is that you do not know.
Meta has kept the answer the whole time. Every ad account carries a change log, and it is one of the few things here that is a record rather than an estimate.
What the tool actually reads
Fetches activity log entries for an ad account, showing changes made to campaigns, ad sets, ads, and other ad objects. This mirrors the Ads Manager campaign history page, including Meta system-generated changes.
ads_account_get_activity_logs, tool description, read from the live schema on 1 September 2026
Read the last clause. This is not a record of what people did to your account; it is a record of what happened to it, and Meta's own automation is one of the parties in it.
The parameters are a start time, an end time, a category filter, an object filter, a user filter and a result cap. Point the object filter at a campaign and you also get its ad sets and ads, deliberately, to match the history page — unhelpful when you want to know whether the campaign object itself was touched.
Meta's Marketing API reference for the activity node states that it returns one week's data by default (Ad Account, Activities, read 1 September 2026). The connector's tool declares a start time defaulting to three months ago, and pairs it with a result cap that also has a default. An unqualified “what changed?” therefore returns the recent slice of a window you did not choose, and nothing in the reply announces that a cap was reached.
The Claude Ads Operator course covers the read-first routine this belongs to, and the prompts that keep the write tools out of it.
The filter mixes two different questions
The category filter accepts eleven values: account, ad, ad set, audience, bid, budget, campaign, date, status, targeting and ad keywords. Meta's reference groups its event types under the same eleven headings, so the connector passes the platform's taxonomy through rather than inventing one.
That taxonomy has a seam. Four values name a level of the object hierarchy; the other seven name a
kind of change. You may pass one, so “budget changes on my ad sets” is not a question the
filter can express. And the categories overlap: in the mapping the tool publishes,
ad_review_approved and ad_review_declined appear under the account category
and again under the ad category. The eleven groups are not a partition of the log, so per-category
counts do not sum to a total — which matters the moment anyone builds a monthly tally out of
them.
| What you want to ask | What the tool lets you express | So the answer is |
|---|---|---|
| “What changed last week?” | Start time, end time and a result cap, all with defaults | The recent part of a three-month window unless you name the dates |
| “Which budgets moved on my ad sets?” | One category value, from a list mixing levels and change types | Two questions, asked separately, reconciled by you |
| “Everything that touched this campaign” | An object filter that includes descendants by design | The campaign plus its ad sets and ads, with no switch for that |
| “Was that a person or something automated?” | A user filter, and response guidance built around the actor | A name, which is not the same as what made the call |
Left and centre columns from the live tool schema for ads_account_get_activity_logs,
read 1 September 2026; category headings cross-checked against Meta's activity reference the same day.
The log sits outside the query system
Everywhere else on this connector you work against a catalogue of fields that says what exists and whether you can filter or sort on it. The change log is not in it. Asked about actor, actor name, application, event type, event time, object, translated event type and extra data, the catalogue returned every one as unknown, while ordinary entity fields asked in the same breath came back with full metadata and their operators. The tool's parameters are the whole interface.
The second gap matters more. Meta's reference documents an application ID and an application name on the activity node, next to the actor ID and actor name. The connector's response guidelines — the instructions telling the model what to put in front of you — ask for the actor, the event type and the details. The application is not in that list. I have not checked what the raw payload returns, because that means querying an account rather than reading a schema, so take it as stated: the guidance is built around who, and what made the call is a question you have to ask on purpose. For a boundary rather than a record, the account-level agent rules are the instrument.
How to use it without misreading it
-
Name the window every time START HERE
Pass a start and an end date instead of accepting the defaults, tight enough that the cap is unlikely to bite. The trade: a narrow window can miss the change that started the problem, so you widen it and ask again.
-
Ask by object first, by category second
Start from the campaign that looks wrong and take its whole subtree, since that is what you get anyway. Then ask the account separately for one category to catch what happened outside it. The trade: two overlapping calls, reconciled by hand.
-
Treat it as evidence, not as a control
A change log tells you what already happened. If the worry is an assistant with write access, this is the wrong instrument for stopping it and the right one for reviewing it. The trade: the real control lives at the business portfolio level and someone with full control has to configure it.
- Reading an empty answer as “nothing changed”. A default window and a default cap were both applied. No entries in a reply is not no changes in the account.
- Attributing a system-generated entry to a person. Meta's own changes are in there by design.
- Adding up category counts. At least one pair of event types is filed under two categories, so the buckets double-count.
- Asking only about the object you already suspect. The fastest way to confirm a hunch, and the fastest way to miss everything the hunch was wrong about.
Try this tonight Take your highest-spending campaign, ask for its change history over a window you name yourself, and read it for two things: a status change you cannot place, and a budget change whose before and after values you did not choose. Most accounts turn up nothing, and that is the useful outcome — write down the date you read to, because a log read to a known date makes next month's version a diff rather than an excavation. If something does turn up, the actor name is where you start and the list of things that should never have been delegated is where you go next.
Does the log show that a change came from Claude rather than from me?
The response guidance is built around the actor and does not mention the application fields Meta's reference documents on the activity node. Ask for the application explicitly if you need it, and confirm against the Ads Manager history page before relying on the answer.
How far back does the change history go?
The tool's start time defaults to three months ago; Meta's reference says the node returns one week by default. Neither is a statement about retention. If you need a specific range, pass the dates.
Can I see the change history for one person only?
Yes. There is a user filter, and it takes an ID rather than a name — better for confirming what a known actor did than for discovering who an unknown one is.
Does it tell me what a value was before it changed?
Where the entry carries the extra data, yes: the tool is told to show what a setting was changed from and to. That is conditional on the entry, not guaranteed. See the setup guide for what the connection exposes.
Read the account before you change it
The course maps every tool on the connector to read, draft, status or financial, and gives you the weekly routine that checks the record first.
See what's inside — $67 founding pricePre-sale: the modules are still being recorded and founding members get the checkout link first. No charge today. Public price $97.