Skip to content

Audit and fix campaign names against the naming convention, in a sheet

Reads an account's campaign, ad set and ad names with check_campaign_names (on every ad platform; Meta, Google Ads and TikTok with their spend over a period), lays them out in a sheet with each name's verdict against the convention (follows, old writing to rewrite, to fix) and what breaks it, lets the person type the new names, then renames them with change_campaigns (action rename) in one preview and one confirmation, and writes each row's outcome back.

Recipe

Intent Every campaign, ad set and ad name of an account checked against the workspace's naming convention in a sheet; the person types the right names, and Claude renames them on the platform after one preview and one confirmation.

Steps
8
Tools
0
Rules
5
Failure modes
5
skills/naming-audit-in-a-sheet.md

When to use it

Use it when

  • Someone asks for a naming audit, to check campaign names against the convention, to find names that break it, or to fix names in bulk.
  • Before a reporting or a dashboard that groups campaigns by the parts of their names.

Do not use it when

  • No convention saved and none given: ask for the convention first (save_launcher_client_settings, or pass it in the call to check before saving).
  • Renaming one or two objects: preview the rename with change_campaigns in the conversation, no sheet needed.
  • Naming a new campaign: the media plan or the launch writes its names from the convention.
  • Hosts without a sheet Claude can write (no Claude Sheets, no spreadsheet connector): show the same rows as a table in the conversation and take the edits there.

What it needs first

No single source is required: this one reads across whatever you have connected.

Preconditions

  • The account is among the chosen accounts, confirmed via list_accounts.

Evidence every conclusion must carry

  • Every row carries its platform, account, ID and verdict as check_campaign_names returned them, and the time they were read.
  • The preview reads each new name against the convention again at preview time; the sheet's Check column is not the reference.
Inputs
InputRequiredWhat it is
workspacerequiredThe workspace whose accounts are audited.
accountsrequiredOne or more ad accounts of that workspace, on any ad platform.
levelsCampaigns, ad sets, ads; one tab each.Default: all three.
windowMeta, Google Ads and TikTok: the period whose delivering objects are read, with their spend.Default: last 30 complete days.

Procedure

In order. Every tool named is one the gateway ships, and links to its reference.

Steps

  1. Resolve the workspace and its accounts with list_accounts, and read the convention it applies to each account with get_launcher_client_settings. With none saved, ask the person for it, and pass it as convention to check against it without saving.
  2. Read the names with check_campaign_names, one account at a time, every level asked for (since and until on Meta, Google Ads and TikTok). Keep each row as returned, its id and its details included: the rename needs them.
  3. Write the sheet, one tab per level that has rows (Campaigns, Ad sets or the platform's word, Ads), then an About tab. On each level tab, the key: A1 "Template" and B1:C1 merged with that level's template as the tool returns it; A2 "To fix" and B2 "{n} names · {spend to fix} spent" (only "{n} names" where no spend is read, "None" at 0); A3 "To rewrite" and B3 the same; row 4 empty; A1 to A3 in gray 600 text. Freeze rows 1 to 5, hide the gridlines.
  4. Under the key, the table from row 5 (setCellTable, one header row filled gray 100), in the tool's order (fix, rewrite, follows, by spend): Check (88 px, a dropdown on the data rows only: Fix red, Rewrite yellow, Follows gray, Renamed green, Refused red), Name (260 px), New name (260 px, the only editable column: prefilled with rewritten on Rewrite rows, empty elsewhere), Note (256 px, wrapped, gray 600: each problem on its own line, or "Does not follow the template." when a problem only repeats the name and the template), Spend (88 px, the account's currency, only when spend was read; blank, never 0, where it is null), Status (80 px), Campaign and Ad set on lower levels (240 px, gray 600), Account and Platform when the sheet holds several, then ID, Account ID and Details (the row's details as compact JSON), the IDs written as text with a leading ' so no digit is lost, in a column group collapsed out of sight.One conditional format on the New name data rows: fill gray 100 where the cell is blank and Check reads Fix, so each name still owed shows as a gray well. At most about 1,000 cells per update: write the rows in parts from the top.
  5. On the About tab (no table, gridlines hidden, A 144 px, B 400 px wrapped): Workspace, each account with its platform and ID, Spend (the period, or "Not read on {platform}"), Read (date and time), an empty row, each level's template, the separator, the enforcement (warn: flagged and can still be applied; block: refused until it follows) and the source (saved for the workspace, or passed in this conversation and not saved). Say there when only 400 of the names are shown.
  6. When the person says the names are ready, read each level tab again, New name with the hidden ID (drop the leading ' it reads back with) and Details, and keep the rows whose New name is filled and differs from Name. If a Name cell no longer holds the name that was read, ask whether it was meant as a new name.
  7. Call change_campaigns with changes, one entry per account and level, action rename, ids, names (the current names), new_names and rename_details (each row's Details), and no confirm token. Show the one preview: each name before and after, its verdict against the convention and the notes, then apply only after the person confirms, with the confirm token and the reason in their words.
  8. Write the outcome back: on a renamed row Check reads Renamed, Name takes the new name, New name is cleared and Note reads "Was {old name}"; on a refused row Check reads Refused, New name keeps what was typed and Note holds the platform's own words in plain text color. Rows are not re-sorted. Relabel the key in place (A2 "Renamed", A3 "Still to fix" with what is left) and add the time and counts of the rename to About.

Decision rules

The observable condition, what it lets you conclude, and what takes the conclusion back.

  • When The preview marks a typed name as fixConclude Write its problem into that row's Note and ask the person to correct it; under enforcement block the preview is refused until every name follows.
  • When A row's verdict is rewriteConclude Its New name is prefilled with the convention's current writing: it is renamed like any other filled row once the person confirms the preview, so say so when the sheet is written.
  • When A level the platform cannot rename (Google, Microsoft Advertising and X ads, Apple ads) or that has no names (Amazon product ads)Conclude Leave that tab out and say why in one line: the tool says it in its warnings.
  • When More than 100 names or 12 changes are to be renamedConclude Split them into batches of one workspace and preview them one after the other.
  • When The preview token expired or the sheet changed after the previewConclude Read the sheet again and preview again; never confirm a preview the person did not see.

Where the agent stops

The sheet renames nothing. Only the second change_campaigns call, with the token of a preview the person confirmed, does.

How it goes wrong quietly

The cases where the analysis is wrong and still looks right. Read them before trusting a number.

  • Reading the sheet as live data: its cells are what was read at the time written in its header, never a link to the platform. Read the platform again before any preview.
  • Renaming from the sheet without showing the preview in the conversation.
  • Inventing a name for a fix row: propose one in the conversation from the convention's template and the row's facts only if the person asks, and let them type it.
  • Dropping the hidden Details: Microsoft Advertising and Amazon renames are refused without them.
  • Writing a row back as renamed when the result says it was refused.

What the answer contains

What Naming audit in a sheet returns
SectionWhat it holds
SheetOne tab per level with the key, every name with its verdict, the editable New name column, and an About tab; after the rename, each row's outcome.
PreviewOne message with every name before and after and its verdict against the convention.
ResultRenamed and refused counts, each refused name with the platform's words, and the reason recorded in the client journal.

Manage your ads from your AI assistant

Start for free

Free with 1 ad account, no card. Pro is free for 7 days.