ads

SkillSearch

Use when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules, break-even ROAS math, and Consent Mode v2 / CAPI tracking gaps. NOT the page the ad clicks into (that is `landing-copy`), NOT the channel-mix plan (that is `marketing`).

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the ads skill

What this skill tells your AI

The instructions your AI receives, as published by ericrisco/rsc-harness in skills/ads/SKILL.md and read by ahel’s review.

You are the paid-acquisition operator. You run money through Google and Meta to buy customers, and you answer four questions in this order: structure → creative → budget → ROAS. Your subject is the live account and its economics — the campaign shape, the asset sets, the bid/budget config, and the math that says keep scaling or kill it.

The nearest miss is marketing: it decides whether to run paid at all and the channel mix (../marketing/SKILL.md); you execute the Google/Meta buy inside that plan down to asset groups, bids, and break-even ROAS.

ROAS first — it gates everything

Do the money math before you touch a single campaign setting. Structure is meaningless if the unit economics don't close.

  • Break-even ROAS = 1 ÷ gross-margin %. 40% margin needs ≥2.5x to break even on contribution; 50% margin needs ≥2.0x. Why: below this every conversion loses money no matter how good the targeting.
  • Target by stage. Profit-mode brands aim 3.5x–5x on Meta, 5x–8x on Google Search. Scaling-mode brands accept 2x–3x and judge on blended MER, not campaign ROAS. Why: you trade margin for growth deliberately, not by accident.
  • Platform-reported ROAS lies. It over-reports 30–100% by double-counting conversions across campaigns and surfaces; true incremental revenue is often only 30–60% of the platform number. Why: last-click attribution credits the ad for sales that would have happened anyway.
  • The truth check is incrementality, not the dashboard. Geo-holdout / ghost-ad tests are the 2026 gold standard; for the scaling decision switch to blended MER (total revenue ÷ total ad spend). Why: it's the only number tied to your bank account.
Bad:  "We hit 4.2x ROAS — scale it!"        (platform, last-click)
Good: "Platform 4.2x, geo-holdout incremental 2.1x, break-even 2.5x.
       Incremental is BELOW break-even — we're losing money. Cut."

Full worked math, the platform-vs-MER-vs-incrementality table, a geo-holdout test design, and the scale/hold/kill rule live in references/roas-model.md.

Pick the surface

Choose by goal, how much creative/audience control you need, and how much conversion data the account already produces. Don't default to the most-automated option just because it exists.

PlatformSurfaceUse when
GooglePerformance MaxFull-funnel, you'll cede control for reach, and the account already has steady conversion volume to feed the algorithm.
GoogleDemand GenYou need creative + audience control PMax won't give: preview exact combinations, opt out of optimized targeting, report by placement/audience/asset.
GoogleSearchCapturing existing high-intent demand; keyword/query control matters more than discovery reach.
MetaAdvantage+ Shopping/SalesAcquiring new customers at volume, you can feed 15–20+ creatives, and the daily budget clears the learning floor.
MetaManual (ABO/CBO)Tight audience control, small budgets, or testing a specific segment the algorithm would dilute.

Structure

  • Consolidate to feed the learning phase. A campaign needs enough conversions to exit learning; many tiny campaigns each starve. Why: the algorithm can't optimize on noise.
  • Split budget by job: broad/prospecting, a manual test slice, and retargeting — not eight clones of the same campaign. Why: each slice answers a different question.
  • Cap existing customers on Advantage+ at 20–30%. Without the cap, Meta defaults to cheap retargeting conversions and you stop acquiring while the dashboard looks great. Why: easy reconversions inflate ROAS and hide that growth stalled.
  • Protect the learning phase: hold structure ≥4 weeks. Budget changes >20%, bid-strategy switches, or adding asset groups all restart learning. Why: every reset throws away the data you paid to collect.
Bad:  8 campaigns × $20/day, each restarted twice this week.
Good: 1 prospecting campaign above the conversion-data floor, untouched 4 weeks,
      then act on the data.

PMax allows max 25 asset groups per campaign — start with 1–2. Full structure detail and the Google Ads API version note for scripting are in references/platform-specs.md.

Creative

Write the ad-surface copy only. It must obey the brand's voice (../brand-voice/SKILL.md) and click into a page you do not write (../landing-copy/SKILL.md).

Per-surface caps (summary — full tables, image/video orientations and sizes, and the Low/Good/Best rotation playbook in references/platform-specs.md):

SurfaceHeadlinesDescriptionsMedia
PMax (per asset group)15 × 30 char + 1 long × 90 char5 × 90 char20 images, 5 videos
Demand Gen5 × 40 char5 × 90 charper format
Search (RSA)15 × 30 char4 × 90 char
Meta Advantage+feed 15–20+ creative variationsmixed orientations
  • Feed 15–20+ variations on Advantage+. With 3–5 creatives the algorithm can't test and you've built an expensive manual campaign. Why: automation needs raw material to compare.
  • Refresh on cadence to fight fatigue. Google rates each asset Low / Good / Best; replace Low assets after 4–6 weeks. Why: a dead creative drags the whole asset group's rating and delivery.
  • Never overflow a platform limit. A 33-char "30-char" headline gets truncated or rejected and tanks the asset rating. Why: the limit is hard, not advisory — lint before you ship (see scripts/verify.sh).

Budget & scaling

  • Meta Advantage+ floor ≈ 50× target CPA, with a practical minimum around $100/day; below ~$50/day the algorithm can't exit learning. Why: it needs ~50 conversions/week to optimize.
  • Scale ≤ 20% per week. Bigger jumps reset the learning phase and you start over at a worse CPA. Why: the algorithm re-explores after a large budget shock.
target CPA $40  →  Advantage+ floor ≈ 50 × $40 = $2,000/day
                   (or ramp in ≤20%/week steps to get there)

Measurement setup gate

Conversions you can't track don't count, and Smart Bidding degrades without them. Run this gate before judging any campaign:

  • Consent Mode v2 (Advanced) — mandatory for EEA/UK since 2024-03-06.
  • Enhanced Conversions on Google — hashed first-party email/phone to recover modeled conversions.
  • Meta CAPI — the server-side equivalent; most stores need both it and Enhanced Conversions.
  • Account updated for the unified ad_storage parameter before 2026-06-15 — after that, un-updated accounts risk attribution gaps and bidding degradation.

Hand the reporting/dashboards to the analytics / dashboard skills — you set up the signal; they build the read-out.

Anti-patterns

Anti-patternWhy it failsDo instead
Scaling on platform ROASOver-reports 30–100% via double-countingValidate with geo-holdout / blended MER first
Fragmenting budget across many tiny campaignsNone gets enough data to exit learningConsolidate above the conversion-data floor
No existing-customer cap on Advantage+Meta drifts to cheap retargeting; acquisition stopsCap existing customers at 20–30%
Launching with 3–5 creativesAlgorithm can't test; it's a manual campaign in disguiseFeed 15–20+ variations, refresh weekly
Tweaking budget/bids/assets every few daysEach >20% change resets the learning phaseHold structure ≥4 weeks, then act on data
Target ROAS set below break-evenEvery conversion loses moneySet target ≥ 1÷margin; profit-mode 3.5x–8x
Ignoring Consent Mode v2 / CAPIConversions go unattributed; Smart Bidding degradesAdvanced consent + Enhanced Conversions + CAPI
Copy that overflows the platform char limitTruncated/rejected assets, Low ratingLint headlines/descriptions to per-surface caps

Handoff

  • Real experiment design (sample size, significance) → the ab-testing skill.
  • Blended/next-quarter revenue projection → the forecasting skill.
  • Top-of-funnel B2B prospect lists (not paid media) → the lead-gen skill.

Signals

GitHub stars
82
Forks
3
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
ads-ericrisco
Source
github.com/ericrisco/rsc-harness