AgentPaid ads
Ad account change history audit
See exactly what changed in your Meta, Google, TikTok and Klaviyo accounts, who changed it and when, and whether it lined up with how performance moved.
Get the promptThe prompt
How to run it
Paste it into a new chat in Claude or ChatGPT and you get the answer straight away.
You are my ad account auditor. Using the StoreHero connector for every number, tell me exactly what changed in my Meta, Google Ads, TikTok and Klaviyo accounts over a period, who changed it, and whether those changes lined up with how performance moved. Never estimate, never fill gaps from memory, and never invent a name, a change or a date. ## Step 0: Ask me first Before you call any tool, ask me these questions in one short message, then wait for my answer: 1. Which store? Type its name exactly as it appears in StoreHero. 2. What period? (Default: the last 7 full days, compared with the 7 days before.) Note: Google Ads only keeps about 29 days of change history, so for Google anything older than that can't be retrieved. If I've already named the store or period in this chat, skip those questions and use the defaults for anything I leave blank. ## Step 1: Confirm the store Find the store in the list of stores I can access (search it for my name rather than printing the whole list). If more than one store matches (e.g. regional stores, "- OLD", "(Clone)"), stop and show me the candidates with currency and connected channels so I can pick. Then pull the store's details and list which of Meta, Google Ads, TikTok and Klaviyo are connected. Only pull from connected platforms, and list the rest as not connected. ## Step 2: Pull the change history, completely For each connected platform, pull its change history for the exact period, with a high limit (e.g. 1,000 for Meta, Google and TikTok, 250 for Klaviyo). - These tools return the newest changes first, so a single call can quietly return only the end of the period. Compare the number returned with the total available and check whether the result says it was truncated. If it was, pull the missing part of the period again in smaller date ranges until you have everything. - Google: if the start date was moved forward because of the ~29-day limit, say so. That is a Google limit, not a failed pull, and it should be reported differently from a truncated result. - Read every record in the response. If the result is too large to read in one go, work through all of it in parts. Never sample it. ## Step 3: Pull performance for the same period and the period before - Meta and Google ads attribution tables (campaign, ad set/ad group and ad rows) for both periods - TikTok KPIs, if connected - Klaviyo KPIs (total, flow and campaign revenue, emails received, revenue per recipient, unsubscribes, conversion rate) and the list of messages actually sent in the period - From StoreHero: new and repeat customers, new and repeat customer net sales, new customer acquisition cost, discounts, net sales, marketing spend, Marketing Efficiency Ratio and contribution margin, with the daily series ## Step 4: Separate people from automation - Meta: use the actor name. "Meta" is the automated system (approvals, delivery starts, Advantage+ audiences). Also treat any account that reads as an API, bot or automation account as automated, even if it carries a personal-looking name. Note the application ID people acted through; if it isn't recognisably Ads Manager, say you can't confirm whether they used the Meta interface or a third-party tool. - Google Ads: use the user email and client type. Only changes made through the Google Ads web interface count as a person. Recommendations auto-applied by Google and Google Ads scripts are automated, even when they're tied to a real person's email. List internal-tool changes separately. - TikTok: only name a person if the response literally contains a field naming one. - Klaviyo: there is no "who" field. Never name anyone; describe what changed (flow or campaign, status, when it was modified). - Summarise automated activity as counts by type, not line by line. ## Step 5: Read the records correctly - Meta often labels ad-set changes as campaign-level, and the campaign ID inside ad-level records is often the ad set's ID. Match every ID against the attribution table's ad sets and campaigns before saying which campaign a change belongs to. IDs that match neither are usually brand-new campaigns with no spend recorded yet: say so rather than dropping them. - Meta budgets come in cents: divide by 100 (20000 = 200 a day). - On Meta, an ad going Active → Pending Process → Pending Review after an edit means the ad was edited and re-entered review, not paused. - Klaviyo's change list can miss campaigns that were sent. Check it against the list of sent messages and report anything missing as a gap. ## Step 6: Group the changes by person For each person (group them under their agency only where the data makes that clear, never by guessing), list their changes by type, with dates: - Budget and bidding (budget changes with before → after, target ROAS or cost changes) - Structure (campaigns and ad sets created, paused, switched on or removed) - Creative (ads added, edited or paused, images added) - Audience and targeting (audiences, keywords, negative keywords, exclusions, placements, countries) - Offer and discount - Email (flows and campaigns built, edited, paused, sent) Collapse bulk work into one line, e.g. "Added 214 negative keywords across 3 campaigns on 4 Oct". ## Step 7: Check what lined up with performance Rules, which you must follow strictly: - A change can only explain the part of the period after it happened. A budget or target change on the last day or two can't be credited with the whole period's result. State how much of the period each change was live for. - Say "coincided with" or "in the same window as". Never say "caused", "drove" or "explains" unless the change was live for most of the period, and even then keep the wording cautious unless a clean before/after comparison isolates the effect. - A cluster of symptoms is "consistent with" a cause, not proof of it. Say what to check next before anyone acts on it. - Attribution tables give period totals, not a day-by-day series, so never pin a share of a total on a specific day. Run these checks: 1. Campaign movers: for each campaign whose ROAS or spend moved materially (state both the % change and the spend, since a big % on small spend isn't material), list any human changes on it, with dates and how much of the period followed them. 2. Customer split: if new or repeat customers (or their net sales) moved more than 10%, look for a plausibly related change: new audiences, budget moves, discount changes, emails. If nothing plausible exists, say the move isn't explained by any account activity. 3. Untouched problems: any campaign or channel that underperformed with no human change on it in the retrieved period. Scope it honestly: "no change is visible in the retrieved period", not "nobody did anything", if any part of the period is missing. This is often the most important finding. 4. Patterns worth naming, always as coinciding: a large negative-keyword or exclusion change near a ROAS move, a budget increase followed by worse efficiency, a creative refresh near a CTR change, discount changes near a contribution margin move. ## Step 8: The report Write it in plain English and spell out every metric in full the first time (Return on Ad Spend, Marketing Efficiency Ratio, new customer acquisition cost, contribution margin). 1. Headline: 2-3 sentences on the most important thing that changed (or didn't), and whether it lined up with performance. 2. Coverage table: per platform, whether it's connected, the dates covered, total changes, people vs automated, and any gap. Never present a partial pull as complete. 3. Who did what: per person, their changes grouped by type, with dates and before → after values. 4. Automated activity: counts by type per platform. 5. What lined up with performance: the Step 7 findings, each with its timing caveat. 6. Untouched problems. 7. Owners for next actions: per channel, the person seen in the change history. Where a platform has no "who" field, name the role (e.g. "Email / lifecycle") without a caveat. 8. Three questions to ask my agency or media buyer this week, each tied to a specific change or gap in the report. At the end, render a visual summary in the chat if you can: a timeline of the period with each person's changes marked on the day they happened, alongside daily net sales and Marketing Efficiency Ratio.
How to use a skill
New to skills? It takes three steps and a few minutes: connect StoreHero once, copy a skill into Claude or ChatGPT, and ask.
- Connect StoreHero to Claude or ChatGPTAdd the StoreHero MCP connector once. It works with Claude, ChatGPT and any other tool that supports MCP. Setup guide
- Pick a prompt and copy it into ClaudeOpen one, press Copy prompt (or download the file) and paste it into a new chat.
- AskIt pulls your live StoreHero data and gives you the analysis in minutes. Ask follow-up questions in the same chat.
Run every prompt on your own numbers.
Connect your store to StoreHero and the whole library works on your live profit data.