Save 30% on your first month. Redeem

10 ChatGPT Prompts for Google Ads — and How Each One Fails

Prompt library Tomas Kolafa Updated September 1, 2026 14 min read
TL;DR

Prompts are a commodity. You can find a hundred Google Ads prompts in an afternoon, and most of them work in the sense that something plausible comes back. What almost nobody publishes is the second half: the specific way each prompt gets things wrong on a live account, and what that costs. These are the ten I use, each with its failure attached.

Prompts
10, across five jobs
Each one
With the way it fails
Last reviewed
August 10, 2026

One pattern runs through nearly all of them, so it is worth naming before the list rather than after.

The one bias to expect

Ask it whether an underperforming ad is the fault of the asset or the landing page, and it will say the asset. Ask it for the single highest-value change to a landing page, and it will say the headline. Two different prompts, two different jobs, same answer shape — because in both cases it picked the thing it could see and directly rewrite.

It fixes whatever it can rewrite. When a prompt forces a single call, the answer tells you what the model could reach, not what is actually wrong. The real cause is usually sitting in the part you did not paste in.

That is not a reason to skip these prompts. It is a reason to treat every one of them as a draft to argue with rather than a decision to act on. The same rule applies to the numbers: nothing here replaces the account data, and if you want a picture of what clicks actually cost across live accounts, that is a separate benchmark page with the raw counts behind it.

Job 1 — Keyword expansion

1.1 Seed keywords into a structured list

The first pass. It turns five or ten seeds into something with match types, funnel stages and ad groups attached.

1.1 · Seed keywords → structured list
You are helping build a Google Ads Search campaign for a [VERTICAL] business serving [GEO].
 
Seed keywords: [PASTE 5-10 SEEDS]
 
Expand these into a keyword list. For each keyword, return a row with:
- keyword
- match type you'd recommend (exact / phrase / broad) and one clause on why
- funnel stage (research / comparison / ready-to-buy)
- the ad group it belongs in
 
Rules:
- Group by search intent, not by string similarity. "emergency [service]" and
  "24 hour [service]" go together; "[service] cost" goes somewhere else.
- Do not invent branded terms for competitors I have not named.
- Do not include volume or CPC estimates. You do not have that data and I will
  pull it from Keyword Planner.
- Flag any keyword where the intent is ambiguous between two verticals.
 
Return as a markdown table, sorted by ad group.

Where it fails. Anything generated here has to be verified before it goes anywhere near a live campaign. An unverified keyword structure does not produce a bad document — it produces paid clicks from searches the business cannot serve. The output looks finished, which is exactly the problem: a table with match types and ad groups already assigned reads like a decision rather than a first draft.

What to do. Treat the list as a set of candidates and check every row against what the business actually sells. The volume rule in the prompt matters too — the cost per click figures belong to Keyword Planner, not to a chat window.

1.2 Sort an existing list by intent

For a list you have inherited rather than one you are building.

1.2 · Intent split on a live list
Here is an existing keyword list from a live Google Ads account:
 
[PASTE LIST]
 
The account is a [VERTICAL] business. Its money-making action is [BOOKED CALL /
FORM FILL / PURCHASE].
 
Sort every keyword into exactly one bucket:
1. Buys — someone searching this is ready to transact
2. Researches — real interest, wrong stage
3. Wrong person — a competitor, a job seeker, a student, a DIYer, a supplier
4. Can't tell from the string alone
 
For bucket 4, say what additional signal would resolve it.
Do not move anything into bucket 1 to be helpful. Bucket 1 should be small.

Where it fails. It over-fills the first bucket. Research-stage terms come back labelled ready-to-transact, and if you act on that you buy them at transaction prices. The instruction telling it to keep bucket one small is in the prompt because the pull towards a flattering answer is real — and writing the rule down reduces the problem without removing it.

What to do. Read bucket one first and assume it is too long. The terms that survive that read are the ones worth bidding hard on.

1.3 The words customers use that marketers do not

1.3 · Vertical vocabulary pull
I run ads for [VERTICAL] businesses in [GEO/REGION].
 
List the terms real customers use for this service that a marketer would not
naturally write — regional words, colloquialisms, misspellings that get typed
often, the wrong-but-common technical term, and the phrase people use when
they don't know the industry word.
 
For each: the term, who says it, and whether it's worth bidding on or only
worth adding as a negative.
 
Do not list the obvious industry-standard terms. I already have those.

Where it fails. The output drifts generic. Localise it, every time, wherever it applies — there are references every local understands, and those are what make targeting and messaging land. A vocabulary list that would work anywhere is a vocabulary list that works nowhere in particular.

What to do. Give it the region explicitly, then check the result against how people in that market actually speak. The bid-or-negative column is the useful half; a term can be worth knowing and still be worth blocking.

Job 2 — Ad copy

2.1 Generate RSA headlines and descriptions

2.1 · RSA asset generation
Write Responsive Search Ad assets for this ad group.
 
Business: [WHAT THEY DO, ONE LINE]
Ad group: [AD GROUP NAME]
Keywords in the group: [PASTE]
Landing page promise: [WHAT THE PAGE ACTUALLY OFFERS]
Proof points I can use: [LICENCES, YEARS, GUARANTEE, RESPONSE TIME]
Things I cannot claim: [PASTE ANY COMPLIANCE CONSTRAINTS]
 
Produce:
- 15 headlines, max 30 characters each
- 4 descriptions, max 90 characters each
 
Rules:
- Count the characters. Print the count in brackets after each line.
- Every asset must be true given the proof points above. If you want to say
  something I haven't given you evidence for, don't — list it separately under
  "claims I'd need you to verify".
- At least 3 headlines must work as a standalone opener with no other asset.
- No exclamation marks. No "Call Now!" No superlatives I can't substantiate.

Where it fails. The character count is generated, not measured. An asset can come back marked twenty-eight characters and be thirty-three, and you find out when the import rejects it.

What to do. Generate for the ideas, then count somewhere that actually counts. I run ad ideation inside Bytown now, where the limit is enforced by the tool rather than asserted in the output. Before that, the workaround was to append an explicit instruction making the model re-check its own counts as a second pass after generating — a QA step, not a reason to trust the first number.

2.2 Rewrite assets Google has rated Low

2.2 · Diagnose and replace weak assets
These RSA assets are live and underperforming. Google reports asset ratings of:
 
[PASTE ASSET + RATING, e.g. "Fast emergency service — Low"]
 
Ad group keywords: [PASTE]
What the landing page says above the fold: [PASTE]
 
For each Low-rated asset, tell me:
- your read on why it's rated Low
- whether the fix is the asset or the landing page
- two replacement variants, character counts noted
 
Be specific about which of the two is the likely cause. "Could be either" is
not useful to me.

Where it fails. It says the asset. Nearly every time. Forcing a single call is what makes the prompt useful and also what biases it — asked to choose between the thing it can rewrite and the thing it can only read about, it picks the one it can rewrite.

What to do. Keep the forced call, then discount it. If the landing page has not changed and several assets in the same ad group are rated Low together, the page is the more likely cause whatever the answer says.

2.3 Compliance pass on finished copy

This is the one to be careful with, and the care matters more than the prompt.

2.3 · Policy-risk filter
Review these ad assets for a [VERTICAL] advertiser running in [JURISDICTION].
 
[PASTE ASSETS]
 
Flag anything that is:
- an unsubstantiated performance or outcome claim
- a superlative that would need evidence ("best", "#1", "fastest")
- a guarantee, or something a reader would hear as a guarantee
- a claim that triggers a platform policy or a regulated-industry rule in this
  jurisdiction
 
For each flag: the asset, what's wrong, and a compliant rewrite that keeps the
same persuasive job.
 
Do not flag things that are merely bland. I want policy risk, not style notes.
This is a filter. It is never a sign-off. What comes back is a confident, jurisdiction-flavoured read that is not a compliance review. It usefully catches obvious superlatives and implied guarantees. It does not replace whoever signs off in that jurisdiction, and it must never be presented as though it could — least of all in health, finance or legal, where the cost of being wrong is not a rejected ad.

What to do. Run it early, as a first pass that clears the easy problems before a human looks. Then have the human look. If you advertise in a category that OpenAI itself reviews rather than opens by default, the restricted-category rules and the approval route are separate reading.

Job 3 — Negative keywords

3.1 Build a pre-launch negative list

3.1 · Negatives before launch
I'm launching a Google Ads Search campaign for a [VERTICAL] business in [GEO].
They serve [WHO], and explicitly do NOT serve [WHO NOT].
 
Build a negative keyword list, grouped by why each term is negative:
- wrong intent (free, DIY, how to, salary, jobs)
- wrong product or service adjacent to theirs
- wrong geography
- wrong buyer (wholesale, supplier, student, competitor research)
 
For each group, recommend a match type for the negatives and say why.
 
Do not include terms so broad they'd block real traffic. If a term is a
judgment call, put it in a separate "review these" list rather than the main one.

Where it fails. It over-blocks, and the failure is silent. Nothing errors. No alert fires. The campaign simply underdelivers against a list that was approved weeks earlier, and by the time anyone asks why volume is thin, nobody is looking at the negatives.

What to do. The "review these" bucket is the important output, not the main list. Read the broad terms out loud and ask whether a real customer might type one.

3.2 Derive negatives from a search terms report

3.2 · Negatives from live data
Here is a search terms report from a live campaign:
 
[PASTE: search term, impressions, clicks, cost, conversions]
 
The business is [VERTICAL] and a conversion means [DEFINITION].
 
Identify terms to add as negatives. For each, give:
- the term
- the match type to negate at
- the reason in one clause
- the level to add it at (ad group / campaign / account list)
 
Rank by wasted spend, highest first. Ignore terms with fewer than [N]
impressions — I'll deal with the long tail separately.
 
Do not negate a term that has converted, even once, without telling me
explicitly that you're doing so and why.

Where it fails. It bins terms that have converted. An expensive term with a single conversion reads as waste when you are scanning for waste, and the explicit written rule against doing it does not reliably stop it happening. That is the part worth sitting with: the instruction is right there in the prompt, and it still goes wrong.

What to do. Before you paste anything into the negatives box, sort your own report by conversions and check nothing on that list appears on this one. A negative keyword is the one change whose damage is invisible afterwards.

Job 4 — Search terms triage

4.1 The waste scan

The original version of this prompt asked for the last seven days. That was wrong, and the fix is worth explaining rather than quietly patching.

Seven days of performance often is not enough to decide anything, depending on volume. If an account is not spending much, a week produces a handful of clicks per term and a confident-looking Kill list built on noise. Widen the window until there is enough data to support a decision — sample size sets the window, not the reporting calendar.

4.1 · Kill / Watch / Promote
Search terms report for [WINDOW — see the sample-size rule below]:
 
[PASTE]
 
Business: [VERTICAL]. Target CPA: [$X]. Conversion action: [DEFINITION].
 
Before anything else: tell me whether this window holds enough data to decide
on. If most terms have only a handful of clicks, say so and tell me what window
would. Do not produce a Kill list from a sample too small to support one.
 
Then give me three lists:
1. Kill — spending with no path to conversion. Include cost to date.
2. Watch — spending, no conversions yet, but the intent is right. Say what
   threshold should trigger a decision.
3. Promote — converting well and buried in a broad match ad group. Say which
   ad group it should move to.
 
Total the wasted spend in list 1.
 
Work only from the numbers in the table. Do not assume seasonality, competitor
activity, or anything else you can't see.

Where it fails. The original framing did, by baking in a weekly cadence that suits reporting habits rather than the data. Ask a low-volume account for a seven-day verdict and you will get one, delivered with the same confidence as a verdict worth having.

What to do. Set the window from the volume. A small local account might need a month or a quarter before a Kill list means anything; a high-spending one can genuinely be read weekly. The cost per acquisition you are measuring against needs enough conversions underneath it to be a number rather than an accident.

Job 5 — Landing pages

5.1 Message-match audit

5.1 · Ad-to-page match
Ad group keywords: [PASTE]
RSA headlines running: [PASTE]
Landing page copy, above the fold: [PASTE OR DESCRIBE]
Conversion action: [DEFINITION]
 
Assess message match. Specifically:
- Does the page's first screen confirm the promise the ad made? Quote the
  mismatch if there is one.
- Is the conversion action visible without scrolling, and is it the same action
  the ad implied?
- What is the single highest-cost friction point between arriving and converting?
 
Give me one change, not a list. If I could only do one thing to this page, what
is it and what do you expect it to move?

Where it fails. The one change is always the headline. It is the easiest thing to rewrite, so it is what gets nominated — while the expensive friction is usually further down and structural: the form, the offer, what the page asks for before it gives anything.

What to do. Ask the question twice, the second time with the headline explicitly off the table. The second answer is usually the more useful one.

What none of this replaces

Every prompt here shortens the first draft. Not one of them shortens the verification. The pattern in the comparison between ChatGPT Ads and Google Ads holds here too — the tool changes what the work looks like, not whether the work has to be done.

If you are running the ads themselves inside ChatGPT rather than using it to build Google campaigns, that is a different subject with its own rules, and it starts with what ChatGPT Ads actually is.

Questions people ask

Do these work in other models? They are written for a chat interface with a long context window and no account access. Nothing in them depends on a particular vendor.

Why no worked examples? Because real examples mean real client accounts, and anonymising a search terms report far enough to publish removes the detail that made it worth showing. The failure modes are the part you cannot get elsewhere, so that is what this page carries.

Can I give it access to the account instead of pasting? You can, and the same bias applies with more reach. A tool that can read the account still nominates the fix it can perform.

Tomas Kolafa
Tomas Kolafa
Founder, Bytown

14+ years running paid acquisition, managing $85M+ in ad budgets — co-founded the ad agency Growth Media, led marketing ($0–50M) at RVezy.com. I’ve spent the budgets, run the campaigns, and read the reports.