---
name: write-compelling-rsas
description: >-
  Builds and deploys a complete, testing-ready responsive search ad: 7-8 headlines each carrying a distinct
  persuasion job, 2-3 descriptions that extend rather than repeat them, and the full supporting extension set
  (sitelinks, callouts, and the situational types), then verifies approval and ad strength. Use it when launching
  a new search ad group, refreshing creative after an offer change, or rebuilding an ad flagged for quality
  problems. It deliberately caps headline count so asset-level data accumulates fast enough to test. Do not use
  it to run the ongoing test cadence (rsa-testing-with-the-iteration-loop), to fix a below-average ad relevance
  rating (improve-ad-relevance), or for a pure extension audit on existing campaigns
  (review-and-optimize-ad-extensions).
---
# Compose and Deploy a Testing-Ready Responsive Search Ad

## Purpose
Produces one disciplined RSA per ad group: enough asset variety for the auction to optimize across, few
enough assets that each one accumulates meaningful data, and a complete extension package claiming the
maximum ad real estate. The output is intentionally structured so that downstream asset-level testing can
attribute results to specific persuasion angles.

## When to run
- A new search campaign or ad group needs its first ad.
- The offer changed (pricing, guarantee, positioning) and the creative must be rebuilt around it.
- An existing ad was flagged for quality problems and a clean rebuild beats patching.
- Expanding coverage into new ad groups where the messaging inputs already exist.

## When NOT to run
- You want to iterate on a live, healthy RSA, that is `rsa-testing-with-the-iteration-loop`.
- Ad relevance is rated below average and you need a targeted fix, `improve-ad-relevance`.
- Expected CTR is the diagnosed weakness, `improve-expected-ctr`.
- Only the extensions need attention on running campaigns, `review-and-optimize-ad-extensions`.
- Prices/promotions must render dynamically and the feed is not built, `set-up-dynamic-ad-customizers` first.

## Prerequisites
- Target ad group identified, with its keyword list.
- Offer facts from the user: main benefit, differentiators, credibility evidence (counts, ratings, named
  clients), guarantee or trial terms, and any genuine deadline. Unverifiable claims are excluded up front.
- A read on how warm the traffic is (problem-aware researchers vs ready-to-buy searchers), it steers the
  call-to-action tone and which angle deserves a second slot.
- Final URL confirmed live and relevant.

## Procedure
1. **Consult the policy guardrail.** Before the session's first Google Ads write, call `gads_policy_guardrail`
   and honor its output, superlatives, pricing claims, and prohibited-content rules bite hardest in ad copy.
2. **Choose static vs dynamic.** If copy must show live prices/stock/promos, run
   `set-up-dynamic-ad-customizers` before writing headlines (the syntax depends on attribute names). If
   heavy keyword variation needs per-keyword wording, run `set-up-keyword-level-ad-customizers` first.
   Otherwise proceed static.
3. **Draft the asset set.** Call `gads_generate_rsa_copy` with the keywords and offer facts. Require:
   7–8 headlines of ≤30 characters, each doing a *different* job, one echoing the query, one stating the
   core value, one differentiating, one carrying credibility, one removing risk, one prompting action, plus a
   second headline for whichever angle matters most to this traffic. Require 2–3 descriptions of ≤90
   characters that build on the headlines instead of restating them, with the core keyword inside the first
   description (matching text gets bolded on the results page, and bolding earns attention).
4. **Human review of the draft.** The user confirms every claim is provable, character counts hold, no two
   headlines make the same argument, and any keyword-insertion default reads as standalone copy (a
   default like a bare category word fails; a specific product phrase passes).
5. **Create the ad.** Call `gads_create_responsive_search_ad` with the approved assets, final URL, and
   display path. Preview first (validate_only is the default), show the user the exact payload, apply only after
   explicit approval. Default to zero pins; keep one RSA per ad group.
6. **Build the extension package** (each write previews first and commits only after user approval):
   - `gads_create_sitelink`, at least 4, each to a distinct relevant page spanning different visit intents
     (convert, learn, verify trust, get help), with both description lines filled; description-less sitelinks
     serve less often.
   - `gads_create_callout`, at least 4 short proof fragments covering speed/delivery, credibility, risk
     removal, and a genuine differentiator. Callouts add information; they never duplicate headline text.
   - `gads_create_image_extension`, a clean 1:1 image (1200×1200 min) if quality imagery exists.
   - Situational, only where they fit: `gads_create_price_extension` (3–8 items, stable transparent pricing),
     `gads_create_promotion_extension` (real offer only, end date set so it self-expires),
     `gads_create_call_extension` (only when calls are a conversion goal; schedule it to staffed hours),
     `gads_create_lead_form_extension` (lead gen; 3–5 fields, fewer fields, more volume, less quality).
7. **Sanity-check completeness.** Call `gads_get_ad_strength`. Treat the rating as a completeness
   checklist, not a performance verdict, fix "missing asset variety" style feedback, ignore pressure to pad
   to the headline maximum.
8. **Watch the review pipeline.** Ads clear policy review in roughly 1–2 business days. Call
   `gads_get_disapproved_ads` the next two days; route any hit to `resolve-ad-disapprovals`.
9. **Baseline and hand off.** After ~2 weeks of serving, pull `gads_get_rsa_asset_performance` as the
   opening baseline and hand the ad group to `rsa-testing-with-the-iteration-loop`.

## Decision rules
- **Why 7–8 headlines, not 15:** with n headlines the system can assemble n·(n−1)·(n−2) ordered
  three-headline combinations, 336 at 8 headlines but 2,730 at 15. At a rough 100 impressions per
  combination to learn anything, 8 headlines need ~34k impressions where 15 need ~273k, which most ad
  groups never reach. Fewer assets = faster, cleaner learning.
- **Pinning:** default is no pins. Pin to position 1 only for a compliance-mandated line, a brand-mandated
  anchor, or a query-echo headline that genuinely must always show. "It's my best headline" is not a reason.
- **CTA tone by traffic warmth:** cold research traffic gets low-commitment invitations (see how it works);
  comparison-stage traffic gets evaluative offers (demo, compare); purchase-ready traffic gets direct
  transactional prompts (start now, buy today).
- **Urgency lines:** only with a real, checkable deadline. Manufactured scarcity erodes trust and risks policy.
- **One RSA per ad group:** with multiple active ads, unused assets from one ad can be served as
  link-style assets pointing at the *other* ad's URL, a single RSA keeps every asset-to-URL pairing under
  your control.
- **Floor if time-boxed:** 6 headlines + 2 descriptions + 4 sitelinks + 4 callouts. Below that, don't launch.
- **Write order:** headlines before descriptions, descriptions elaborate on messages the headlines
  establish.

## Common failure modes
- **Six headlines making one argument.** Variety of phrasing is not variety of persuasion; assign each slot a
  distinct job before writing.
- **Descriptions that echo headlines.** Wasted characters and no new information, each description must
  add something the headlines could not fit.
- **Pinning everything for control.** Heavily pinned RSAs cut the combination space and usually
  underperform; pins are the exception.
- **Skipping extensions to ship faster.** The ad then loses screen area to competitors who did not skip them;
  the extension package is part of the deliverable, not a follow-up.
- **A keyword-insertion default nobody sanity-checked.** The generic fallback fires on the highest-volume
  query and reads as filler. Always review the rendered fallback.
- **Fifteen headlines because the interface suggests more.** Data spreads too thin to ever identify winners;
  hold the 7–8 line.
- **Credibility claims without numbers.** "Trusted by many" persuades nobody; credibility headlines need a
  count, a rating, or a name, and the user must be able to substantiate whichever one ships.
- **Launching against an unchecked final URL.** The ad cleared review while the page 404'd behind it.
  Confirm the destination loads and matches the promise before the create call.

## Related skills
- `set-up-ad-extensions`, the fuller account-wide extension build; this skill covers the per-ad-group core.
- `rsa-testing-with-the-iteration-loop`, run after ~2 weeks of stable serving.
- `improve-ad-relevance` / `improve-expected-ctr`, targeted repairs if quality components rate below average.
- `set-up-dynamic-ad-customizers` / `set-up-keyword-level-ad-customizers`, pre-work when copy must be dynamic.
- `resolve-ad-disapprovals`, if the new ad fails policy review.
