Claude prompts for PPC: build a reusable library
How to build a library of Claude prompts for PPC: what goes in the project, what goes in the prompt, and where the system breaks.
In this article
A few weeks ago I took stock of the prompts I’d saved for PPC work. Thirty-odd, scattered across phone notes, a stray document and three old conversations. I used six. The rest were near-identical variants I wrote on some random Tuesday, never found again, and rewrote from scratch a month later.
That isn’t using Claude for PPC. It’s improvising each time with an expensive tool. The difference doesn’t sit in how well any single prompt is worded, but in whether there’s a system underneath: where the account context lives, and how you check that September’s output looks like August’s.
In 30 seconds:
- A one-off prompt solves a task once. A library solves the same task the same way three months from now.
- Stable account context belongs in the project instructions. The job of the day belongs in the prompt.
- Claude can’t see your account. Data you don’t paste doesn’t exist, and if you push anyway it’ll fill the gap with something plausible.
- Anthropic recommends including 3 to 5 examples, and placing long data above your instructions.
- Version every prompt with a number, what changed, and what it isn’t for.
What’s the difference between having prompts and having a library?
Repeatability. A one-off prompt is a lucky conversation: it works, you close the tab, and the knowledge leaves with it. A library is a set of jobs written once, tested against real data, and saved under a name you can find six months later without remembering anything. That’s the whole difference.
It sounds like bureaucracy until you’re running five clients. That’s when the real cost shows up: the expensive part isn’t writing the prompt, it’s rebuilding the context every single time. What their campaigns are called, what ROAS they accept, what nobody touches.
My process has four steps and the order matters:
- Split stable from variable. Anything still true in six months goes to the project. Everything else goes to the prompt.
- Write the prompt as a specification, not a request: role, data, rules, output format.
- Run it twice on different data. If the two outputs don’t share a shape, it’s underspecified.
- Save it with a name, a version and a note on what it gets wrong. Without that note you won’t remember why you changed it.
Is it worth it if you run one account? Not much. This pays off when you repeat the same task across different contexts, which is a consultant’s life and not an in-house marketer’s with one account and eight years of context in their head. The wider view is in my guide to Claude for marketing consultants.
What goes in the project instructions and what goes in the prompt?
Context that doesn’t change goes up top, in the project. The job that changes goes at the bottom, in the prompt. That’s the entire rule, and almost every consistency problem I’ve run into comes from having it backwards.
According to Anthropic’s help centre, projects allow you to create self-contained workspaces with their own chat histories and knowledge bases, and you can define instructions for each one. Translated: one project per client, and the account briefing lives in there instead of in your head.
| Element | Where it lives | Why there |
|---|---|---|
| Campaign structure and naming convention | Project instructions | Changes twice a year, not every week |
| ROAS, CPA and margin targets | Project instructions | Without them it can’t tell a good number from a bad one |
| Constraints (brand, untouchable campaigns) | Project instructions | Avoids proposals you were going to bin anyway |
| The period’s export and today’s question | The prompt | It’s the only genuinely variable part |
The usual failure is the opposite: pasting that context at the start of every conversation, slightly different each time. In March you write “target ROAS 4”, in April “we want ROAS above 4”, and in May you forget. All three answer differently. Here’s a real block, trimmed:
FIXED ACCOUNT CONTEXT
Online climbing gear shop, UK.
Google Ads: 6 Search campaigns, 1 PMax, 1 standard Shopping.
Naming: [UK] Type | Theme | Audience
What "good" looks like here:
- Target ROAS 4.0 on Shopping and PMax.
- Average gross margin 38%: a ROAS of 2.6 loses money.
- The brand campaign is never touched without asking.
Working rules:
- You have no live data for this account. If a figure
isn't in what I paste, treat it as unknown.
- Never estimate a metric. If it's missing, ask me for it.
- Answer in UK English, no preamble.
Those last lines aren’t decoration. They define what the model does when information is missing, which is half the value of the block.
What account context does Claude actually need?
Four blocks: structure, naming convention, a definition of “good”, and raw period data. You write the first three once. The fourth is an export.
Naming conventions get treated as obvious and they aren’t. If your campaigns are called [UK] Search | Ropes | Generic, give it the pattern. From there it groups by type, theme or audience without you explaining it again.
The definition of “good” is the one most people skip and the one that does the most damage. A ROAS of 2.8 is excellent on 70% margin and ruinous on 30%. If you don’t hand over the margin, Claude will tell you 2.8 “is solid” because it sounds decent. It isn’t lying: it’s filling in a criterion nobody gave it.
Raw data comes from the platform. Google Ads lets you download any statistics table, and the available formats include Excel CSV, TSV, PDF, XLSX, XML, and Google Sheets. I take the CSV and paste the text.
Where you paste it changes the result. Anthropic’s prompting guide asks you to place your long documents and inputs near the top of your prompt, above your query, instructions, and examples. I did it backwards for months. If you’d rather have Claude read the account than paste CSVs at it, I covered that route in Claude MCP for consultants: different plumbing, same principle.
How do you write a prompt that returns the same thing every month?
By specifying the output before the task. A consistent prompt has four fixed blocks, always in the same order: data, role, rules, format. The last three never change.
That same guide is blunt about the role: setting one in the system prompt focuses Claude’s behaviour and tone for your use case, and even a single sentence makes a difference. It also recommends structuring prompts with XML tags, because they help parse complex prompts unambiguously when you’re mixing instructions, context and variable inputs. It doesn’t need to be valid XML: wrap each type of content and always use the same tag names.
Here’s my monthly diagnostic prompt in full:
<data>
[per-campaign performance CSV: last 30 days vs the previous
30, with cost, conversions, value, CPA and ROAS]
</data>
<role>
You are the paid media analyst on this account.
</role>
<rules>
1. Use only the figures in <data>. Don't fill gaps.
2. Every claim cites the row that supports it.
3. If a campaign has fewer than 30 conversions, mark it
"insufficient signal" and propose no changes.
4. If something can't be answered from this data, write
"I don't know" and move on.
</rules>
<format>
Table: campaign | what changed | size | source row.
Then at most 5 hypotheses, ordered by spend affected.
</format>
Why each piece is there. Rule 2 makes the output auditable: if every claim points at a row, checking it takes seconds. Rule 3 exists because without it the model proposes changes on campaigns with four conversions. Rule 4 is explicit permission not to know. And the format block is what makes October look like September.
One cheap lever is missing: examples. Anthropic recommends including 3 to 5 examples for best results, wrapped in tags so the model can tell them apart from instructions. For copywriting this isn’t optional. If you want RSAs in your voice, paste three of your own ads that perform before asking for a fourth. The detail is in AI for writing Google and Meta ad copy.
How do you version and reuse prompts across clients?
One file per prompt, a short header, and a record of what changed. A synced folder is enough.
# prompt: monthly-search-diagnostic
# version: 3
# v3: added the 30-conversion threshold, because v2 proposed
# changes on campaigns with 4 conversions
# v2: output now requires a source row per claim
# do not use for: PMax (campaign-level data isn't enough)
The line that’s saved me most is the last one. A prompt that knows what it isn’t for is worth more than one that promises everything.
Reuse across clients works for a simple reason: the prompt carries no client name inside it. If it does, it isn’t reusable, it’s a note. Everything specific lives in the project, so starting a new account means creating one, writing the briefing, and pasting the same prompt as always.
Then you check it still works after you’ve touched it. Anthropic argues that building with an LLM starts with defining success criteria and designing evaluations, and calls that cycle central to prompt engineering. For a consultant that doesn’t mean building a framework: keep two test exports and run them again whenever you change a prompt.
The ones I use most are already explained one by one: search term analysis, meta descriptions at scale, competitor research and CRO hypotheses. Each one is an entry. This post is the shelf.
Where does all this break down?
The moment you ask for a figure you never gave it. Claude has no access to your account and doesn’t know yesterday’s spend. When data is missing it doesn’t leave the gap empty: it writes something plausible, to two decimal places, in a confident tone. It’s the most expensive failure because it doesn’t look like one.
Anthropic’s hallucination documentation gives three defences I use daily. Letting the model say “I don’t know”, described as a simple technique that can drastically reduce false information. Verifying with citations. And external knowledge restriction: telling it to use only the documents provided. The same page warns about something worth reading twice: while these techniques significantly reduce hallucinations, they don’t eliminate them entirely.
That’s why I keep this block at the end of nearly every analysis prompt:
<verification>
Review every figure you wrote and name the row in <data>
it comes from. If you can't find the row, delete the figure
and write [no data]. Don't estimate, don't complete series.
</verification>
Above all of that sits one rule I don’t negotiate: no figure out of a model goes into a client report unless I’ve seen it in the platform first. Claude sorts, groups, prioritises and writes well. Google Ads is still the source of truth. When the workflow gets more autonomous the risk goes up, and I wrote about that in Claude agents for digital marketing.
There’s a second break point, less discussed. A library without maintenance ages: Google changes a campaign type, you change your criteria, and the prompt keeps asking for a metric that no longer means the same thing.
Frequently asked questions
How many prompts do I need to start?
Three or four covering monthly tasks. Performance diagnostics, search term review, ad copy and the client report are enough to begin with. Adding twenty at once guarantees you’ll use none of them: the cost of finding the right one eats the saving you were after.
One project per client, or one per task?
Per client, in most cases. What changes between clients is context: structure, targets, margin and constraints, which is exactly what lives in the project instructions. The prompts are the same everywhere, so splitting by task would just duplicate the account briefing.
Can I ask it for industry benchmarks?
You can, but you shouldn’t use them. The model isn’t querying your account or a benchmark database: it’ll return a reconstruction from training, with no date and no checkable source. For market figures, go to the original report. For your own, go to the platform.
Are long project instructions worth writing?
It depends how much work you repeat there. For a monthly retainer, yes: a well-written page pays for itself by the second or third conversation. For a one-off two-week job, paste the context in the prompt and move on. I count how many times I’ll write the same thing.
How do I know a prompt is failing?
Because the shape of the output changes across runs on similar data. If one month gives you a table and the next gives you five paragraphs, the format block is underspecified. If it returns generic recommendations, the definition of “good” is missing. If unfamiliar figures appear, check the verification rules.
The library is the asset, not the prompt
The perfect prompt doesn’t exist, and chasing it is a comfortable trap: you can always spend another afternoon polishing wording instead of working. What does exist is a handful of carefully written jobs, saved where you’ll find them, sitting on a project that already knows how the account works.
What I notice in my own work isn’t that each task comes out better. It’s that it comes out equally good the fifth time as the first, without the toll of rebuilding context.
If you want to look at which part of your PPC operation is worth systemising this way, book 30 minutes of consulting and we’ll go through it with your account open.
Could your ad campaigns
perform better?
30 minutes to review your situation and tell you exactly what I would change. No pitch, no sales proposal.