Skip to Content
AgentsGoogle Ads Writer

Google Ads Writer

To Build · agent__google-ads-writer · Claude Sonnet 4.6

Creates a complete Google Ads RSA (Responsive Search Ad) copy set — 15 headlines and 4 descriptions with pinning recommendations — optimised for Quality Score, keyword relevance, and click-through rate.


Overview

FunctionCreate a complete Google Ads RSA copy set with 15 headlines, 4 descriptions, and pinning recommendations
TypeWorker — Paid Ads
ModelClaude Sonnet 4.6
Queueagent__google-ads-writer
Concurrency5
Timeout4 min
Est. cost / task$0.25
PlanPro+

Triggers

Trigger typeWhenWho initiates
Activity Planner dispatchWhen a paid ads deliverable is scheduled in the campaign plan and the Google Ads RSA task is enqueuedActivity Planner
Human on-demand”Create ad copy” from the DM Portal Paid Ads screen or the DashboardDM reviewer / Tenant admin
Scheduled / cronNot applicable — triggered per campaign need

Input

interface GoogleAdsWriterInput { tenantId: string; campaignId?: string; campaignName: string; // e.g. "Spring HVAC Specials — Sydney" campaignGoal: 'leads' | 'sales' | 'awareness' | 'traffic'; targetKeywords: string[]; // exactly 5 — primary keywords to work into headlines landingPageUrl: string; // used to verify display path and align messaging geographicTarget?: string; // e.g. "Sydney", "North Shore", "Australia-wide" existingAds?: { headlines: string[]; descriptions: string[] }[]; // previously used ads — avoid repetition }

Output

interface GoogleAdsWriterOutput { headlines: { text: string; // HARD MAX: 30 characters — validation rejects any headline over this limit charCount: number; pinPosition?: 1 | 2 | 3; // if set, this headline is pinned to that position in the ad }[]; // exactly 15 items descriptions: { text: string; // HARD MAX: 90 characters — validation rejects any description over this limit charCount: number; pinPosition?: 1 | 2; // if set, this description is pinned to that position in the ad }[]; // exactly 4 items displayPath1: string; // HARD MAX: 15 characters — first display URL path segment displayPath2: string; // HARD MAX: 15 characters — second display URL path segment finalUrl: string; // the actual destination URL qualityNotes: string[]; // 3–5 notes explaining headline variety, keyword inclusion, and pinning rationale }

Pin strategy (enforced)

Pin slotWhat to pinRationale
Headline 1Brand name or primary keywordEstablishes context at a glance — always shown first
Headline 2Key differentiator or primary benefitThe reason to choose this business over a competitor
Description 1Main CTA with primary keywordThe action + relevance signal in the most visible description position

Sample output excerpt

Campaign: “Emergency Plumber — Melbourne” / Goal: leads

headlines: [ { text: "Emergency Plumber Melbourne", charCount: 28, pinPosition: 1 }, // 28 chars — pinned H1 { text: "Fixed Fast or It's Free", charCount: 23, pinPosition: 2 }, // 23 chars — pinned H2 { text: "Available 24/7 — Call Now", charCount: 25 }, // 25 chars { text: "Licensed Local Plumbers", charCount: 22 }, // 22 chars { text: "Same-Day Blocked Drain Fix", charCount: 26 }, // 26 chars { text: "No Fix No Fee Guarantee", charCount: 23 }, // 23 chars { text: "Hot Water Repairs Today", charCount: 22 }, // 22 chars { text: "Burst Pipe? We're 30 Min Away", charCount: 29 }, // 29 chars { text: "Melbourne's #1 Plumber", charCount: 22 }, // 22 chars { text: "Upfront Pricing, No Surprises", charCount: 29 }, // 29 chars { text: "Gas Fitting Specialists", charCount: 23 }, // 23 chars { text: "Free Quote in 60 Seconds", charCount: 25 }, // 25 chars { text: "500+ Five-Star Reviews", charCount: 22 }, // 22 chars { text: "Trusted Since 2008", charCount: 18 }, // 18 chars { text: "Book Online, Fast Response", charCount: 26 } // 26 chars ] descriptions: [ { text: "Call Melbourne's emergency plumbers. Same-day repairs, no fix no fee.", charCount: 69, pinPosition: 1 }, // 69 chars — pinned D1 { text: "Blocked drains, burst pipes, hot water failures — on call 24/7 in Melbourne.", charCount: 75 }, // 75 chars { text: "Upfront pricing, licensed tradies, 100% satisfaction guarantee on every job.", charCount: 75 }, // 75 chars { text: "500+ five-star reviews. Book online or call for a free 60-second quote.", charCount: 71 } // 71 chars ] displayPath1: "Plumber" // 7 chars displayPath2: "Melbourne" // 9 chars qualityNotes: [ "Primary keyword 'Emergency Plumber Melbourne' pinned to H1 — relevance signal in every impression.", "All 5 target keywords appear across the headline set — Google can assemble high-relevance combinations.", "H2 pins the core guarantee ('Fixed Fast or It's Free') — risk reversal anchored in every ad.", "Descriptions cover urgency, service range, guarantee, and social proof — variety enables Google's rotation.", "All 15 headlines are within the 30-character hard limit. All 4 descriptions are within the 90-character hard limit." ]

How It Works

  1. Load campaign context and existing ads. Campaign name, goal, target keywords, landing page URL, and geographic target are injected alongside the Client Context File. If existingAds are provided, all headlines and descriptions from those ads are logged as off-limits to prevent repetition.

  2. RAG: source accurate claims from Client Documents. Query Client Documents for USPs, guarantees, phone numbers, physical location, certifications, awards, and offer details. Every specific claim in ad copy — a guarantee, a year founded, a service name — must originate from this source. No claims are invented.

  3. RAG: landing page content alignment. Query Website Content for the landing page at landingPageUrl. Headlines and descriptions must reflect the page’s actual offer and messaging — Google’s Quality Score penalises ad-to-page mismatch. If the landing page headline and ad copy share a keyword, note it in qualityNotes.

  4. RAG: competitor headline differentiation. Query Competitor Research for competitor Google Ads headlines and angles in this category. Identify the most common approaches competitors use and ensure at least 4 headlines take a meaningfully different position — not to copy competitor language.

  5. Write all 15 headlines. Cover the full range of ad copy angles: keyword-direct, benefit-led, social proof, guarantee, urgency, location-specific, and offer-specific. Distribute the 5 target keywords across the headline set so Google can assemble high-relevance combinations. Every headline is counted to the character before being included — any headline over 30 characters is rewritten from scratch.

  6. Apply pin strategy. Pin Headline 1 to the brand or primary keyword, Headline 2 to the key benefit or differentiator, and Description 1 to the main CTA containing the primary keyword. Pin positions are included in the output with rationale in qualityNotes.

  7. Write all 4 descriptions. Each description covers a distinct angle: primary CTA, proof/social signal, guarantee, and secondary offer or urgency. Descriptions must be ≤ 90 characters — counted before finalising. No description repeats a claim made identically in another description.

  8. Validate and return output. Run a final hard character count on every field. Any headline over 30 chars or description over 90 chars is regenerated — not trimmed. Generate displayPath1 and displayPath2 from the campaign theme and geography (each ≤ 15 chars). Produce qualityNotes explaining keyword coverage, pin rationale, and variety strategy.


System Prompt

You are a paid search copywriter specialising in Google Ads RSA (Responsive Search Ad) copy. You write ad copy that earns high Quality Scores, wins auctions, and converts clicks into leads. CLIENT CONTEXT: {{CLIENT_CONTEXT}} TENANT SETTINGS: {{TENANT_SETTINGS}} KNOWLEDGE BASE CONTEXT (USPs, competitor angles, landing page content, offer details): {{RAG_CONTEXT}} CAMPAIGN BRIEF: Campaign name: {{CAMPAIGN_NAME}} Campaign goal: {{CAMPAIGN_GOAL}} Target keywords: {{TARGET_KEYWORDS}} Landing page URL: {{LANDING_PAGE_URL}} Geographic target: {{GEOGRAPHIC_TARGET}} Existing ads to avoid repeating: {{EXISTING_ADS}} CHARACTER LIMITS — ABSOLUTE AND NON-NEGOTIABLE: - Every headline: MAXIMUM 30 characters including spaces and punctuation - Every description: MAXIMUM 90 characters including spaces and punctuation - Display path 1: MAXIMUM 15 characters - Display path 2: MAXIMUM 15 characters Count every headline and description before including it. If it is over the limit, rewrite it. Do not trim — rewrite. A trimmed headline is often grammatically broken. Your RSA must: 1. Include exactly 15 headlines and exactly 4 descriptions. No more, no fewer. 2. Cover the full range of ad copy angles: keyword-direct, benefit-led, social proof, guarantee, urgency, location, and offer-specific. Google rotates combinations — variety is how you win. 3. Work all 5 target keywords into the headline set naturally. Distribute them so Google can assemble high-relevance combinations for different queries. 4. Pin Headline 1 = brand or primary keyword. Pin Headline 2 = strongest differentiator or guarantee. Pin Description 1 = primary CTA containing the main target keyword. 5. Use only claims sourced from the Client Context or Knowledge Base. Do not invent guarantees, years in business, star ratings, or offer details. If a detail is unavailable, write a benefit statement instead. 6. Match the messaging on the landing page — ad-to-page alignment is a Quality Score factor. 7. Differentiate from competitor angles identified in the knowledge base. If competitors lead with "Fast & Affordable", find a different angle. 8. Apply the brand tone from tenant settings to all copy. 9. Avoid all prohibited words from tenant settings. Output as JSON matching the GoogleAdsWriterOutput schema exactly. Include a qualityNotes[] array with 3–5 notes explaining keyword coverage, pin rationale, and a confirmation that all character limits were respected.

Skills Injected

Skill filePurpose
client-context-file.mdCompany, USPs, brand voice, target audience
google-ads-copywriting-guide.mdRSA format rules, character limits, pin strategy, Quality Score factors, headline variety frameworks
# Google Ads Copywriting Guide ## RSA Structure and Google's Rotation Logic A Responsive Search Ad gives Google up to 15 headlines and 4 descriptions. Google's machine learning assembles combinations of 3 headlines and 2 descriptions per impression — choosing the combination it predicts will perform best for a given user and query. The writer's job is not to write one perfect ad. It is to write 15 headlines and 4 descriptions that can be combined in hundreds of ways and remain coherent in any combination. Every headline must make sense next to any other headline. Every description must work alongside either other description. ## Character Limits — Absolute Hard Rules | Element | Limit | |---|---| | Each headline | 30 characters (including spaces and punctuation) | | Each description | 90 characters (including spaces and punctuation) | | Display path 1 | 15 characters | | Display path 2 | 15 characters | Count before you write, not after. Worked example: "Emergency Plumber Melbourne" = 28 chars (fine). "24/7 Emergency Plumber Melbourne NSW" = 36 chars (over — split into two headlines: "Emergency Plumber Melbourne" + "Available 24/7 — Call Now"). A common mistake is assuming punctuation doesn't count. It does. Hyphens, commas, apostrophes — all count. ## The 15 Headlines: Coverage Framework Aim to have at least one headline in each category: **Keyword-direct (2–3 headlines)** The search query, or close variant, written as naturally as possible. - "Emergency Plumber Melbourne" — matches the query; anchors relevance. - "Blocked Drain Specialists" — variant of a secondary keyword. **Benefit-led (3–4 headlines)** What the customer gets — specific, not generic. "Quality Service" is invisible. - "Same-Day Blocked Drain Fix" — specific service + speed. - "Hot Water Repairs Today" — specific service + urgency. - "Free Quote in 60 Seconds" — specific, low-friction entry point. **Social proof (1–2 headlines)** A real, verifiable trust signal. Cite the source or the number — vague claims are ignored. - "500+ Five-Star Reviews" — specific. - "Trusted Since 2008" — longevity as proof. - "10,000 Jobs Completed" — volume as proof. **Guarantee or risk reversal (1–2 headlines)** Reduces the perceived risk of clicking. Must be a real guarantee from the client. - "No Fix No Fee Guarantee" — classic risk reversal. - "Fixed Fast or It's Free" — combines speed + guarantee. **Urgency or availability (1–2 headlines)** Works especially well for service categories where timing matters. - "Available 24/7 — Call Now" — 25 chars. - "Burst Pipe? We're 30 Min Away" — 29 chars — matches urgent query intent. **Offer-specific (1–2 headlines)** A seasonal promotion, discount, or specific offer from the campaign brief. - "$0 Call-Out Fee This Month" — 26 chars. - "Get 10% Off First Service" — 25 chars. **Brand + CTA (1 headline)** A brand name with a direct action — used as a fallback or lower-funnel headline. - "Book Online, Fast Response" — 26 chars. ## Pin Strategy Google allows pinning headlines to positions 1, 2, or 3. **Always pin:** - Position 1: brand name or primary keyword — establishes context in every combination. - Position 2: the single strongest differentiator or guarantee. **Never pin more than 2 headlines.** Over-pinning restricts Google's ability to find high- performing combinations and reduces eligible impressions. **For descriptions:** - Pin Description 1 to the primary CTA — this is the most prominent description position. - Leave Description 2 unpinned to allow Google to rotate for intent. ## Quality Score Factors Influenced by Copy 1. **Expected CTR** — won by including the search query (or close variant) in at least one headline. Keyword-direct headlines signal relevance to the algorithm. 2. **Ad relevance** — Google compares the ad to the keyword list. Mentioning the service category, location, and main keywords improves relevance score. 3. **Landing page experience** — ad-to-page message match matters. If the ad says "No Fix No Fee Guarantee", that phrase should appear on the landing page. ## What Makes Ads Convert - **Specificity over vagueness.** "500+ Five-Star Reviews" beats "Highly Rated". - **The guarantee in Headline 2.** Risk reversal is consistently the strongest second headline across service categories. - **Numbers.** "30 Min Away", "60 Seconds", "10% Off", "Since 2008" — numbers stop the scan. - **Match the emotional urgency of the search.** A "burst pipe" query has panic behind it. "Burst Pipe? We're 30 Min Away" earns the click. "Plumbing Services Available" does not. ## Prohibited Phrases and Practices - Do not use superlatives without proof: "Best in Australia", "Number 1" without citation. - Do not use clickbait framing that cannot be substantiated by the landing page. - Do not repeat the same phrase across more than 2 headlines — Google deduplicates at serving time, reducing variety and suppressing impressions. - Do not use ALL CAPS for full headlines — Google may disapprove the ad. - Avoid excessive punctuation. One exclamation mark per ad set, maximum. - No competitor brand names in ad text.

RAG Usage

DatasetQuery exampleWhen used
Client Documents"USPs guarantees phone number location certifications awards offer details"Step 2 — to source every specific claim in ad copy; no claim is invented
Website Content"landing page content [landingPageUrl] headline offer messaging"Step 3 — to align ad messaging with page content for Quality Score
Published Content"previous Google Ads copy headlines [campaignName]"Step 1 setup — checked only when existingAds is absent, to avoid repeating past copy
Competitor Research"competitor Google Ads headlines angles [industry] [geographicTarget]"Step 4 — to identify dominant competitor frames and differentiate

Tools Required

ToolMethodPurposeRequired?
rag_searchsearchQuery tenant knowledge baseYes

HITL Gates

Completed RSA copy sets are submitted for DM reviewer approval in the DM Portal Paid Ads screen before being pushed to the Google Ads account.

  • Review type: paid_ads_review
  • Risk level: high — ad copy containing specific claims, guarantees, or offers requires verification before spend is committed
  • Reviewer sees: All 15 headlines with character counts and pin assignments highlighted; all 4 descriptions with character counts and pin assignments; a simulated ad preview showing the pinned combination (H1 + H2 + D1) as it appears on desktop and mobile; qualityNotes[] displayed inline
  • Approval triggers: Ad copy is pushed to the connected Google Ads account as a draft RSA in the designated campaign and ad group. Final activation is performed in Google Ads by the DM reviewer or automatically if the campaign is in an active push pipeline.
  • Edit capability: Reviewer can edit any headline or description inline; character count updates live and turns red if the limit is exceeded; pin assignments can be changed; individual headlines can be marked as do-not-use.
  • Rejection triggers: Copy set is re-generated with reviewer feedback. If specific claims were inaccurate, corrected details are passed in the re-run input via existingAds (to avoid repeating the rejected set) and a correction note.

Guardrails

RuleEnforcement
HARD: Every headline ≤ 30 charactersCharacter count validated on every headline before output; any headline over 30 chars triggers full regeneration of that headline — trimming is not permitted as it typically produces grammatically broken text
HARD: Every description ≤ 90 charactersCharacter count validated on every description before output; any description over 90 chars triggers full regeneration of that description
HARD: Exactly 15 headlinesArray length check; if count is not 15, the generation loop continues until 15 valid headlines are produced
HARD: Exactly 4 descriptionsArray length check; if count is not 4, regenerate missing descriptions
Display path 1 and 2 ≤ 15 chars eachCharacter count check; regenerate if exceeded
No invented claimsAny specific number, guarantee, or offer must trace to RAG context or explicit input; unresolvable specifics use a conservative benefit statement
No prohibited words from tenant settingsFilter prohibitedWords[] against all text fields
No competitor names in ad copyString match against known competitor names from Client Context; any match → regenerate that field
No headline repeated from existingAdsString similarity check (≥ 85% match) against existing headlines; matches discarded and replaced
All 5 target keywords must appear across headline setKeyword coverage check after generation; any missing keyword triggers regeneration of the lowest-value headline to include it

Tenant Settings Used

SettingHow it’s used
brandToneControls the register and personality of headlines — formal vs. conversational, assertive vs. approachable
industryScopes competitor RAG query and informs which guarantee or proof types are credible in this vertical
companyNameUsed in the brand headline (typically pinned to H1 or used as an alternative H1)
targetAudienceShapes which benefits and urgency signals to lead with in headlines
prohibitedWords[]Hard-filtered from all headline and description text before output

Cost Profile

Avg input tokens~2,500
Avg output tokens~800
Est. cost / task$0.25

Error Handling

ErrorResponse
Any headline exceeds 30 chars after 3 regeneration attemptsFail that headline, log "headline_char_limit_exceeded", return partial set with error flag; reviewer must complete manually
Any description exceeds 90 chars after 3 regeneration attemptsFail that description, log "description_char_limit_exceeded", return partial set with error flag
targetKeywords does not contain exactly 5 itemsFail job with validation error before any LLM call: “targetKeywords must contain exactly 5 items”
landingPageUrl is empty or malformedProceed without landing page alignment; log warning “Landing page URL missing — Quality Score alignment not verified”
RAG returns no Client Documents resultsProceed with input fields only; mark every specific claim in qualityNotes as “unverified — review before publishing”
RAG returns no Competitor Research resultsProceed without differentiation context; log “No competitor research found — differentiation not validated”
All generated headlines match existingAds within similarity thresholdFail job: “Insufficient headline variety — expand existing ads or provide a new campaign angle”
Job exceeds 4-minute timeoutFail job and re-queue with reduced RAG query set (Client Documents only); log timeout event

© 2026 Leadmetrics — Internal use only