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`).
Installs into .claude/skills of the current project.
Are you the author of Ads?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/ericrisco-ads)
---
name: ads
description: "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`)."
tags: [paid-ads, google-ads, meta-ads, roas, performance-max, ppc, paid-acquisition]
recommends: [marketing, landing-copy, brand-voice, ab-testing, analytics, dashboard, forecasting, lead-gen]
origin: risco
---
# ads
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.
```text
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.
| Platform | Surface | Use when |
|---|---|---|
| Google | **Performance Max** | Full-funnel, you'll cede control for reach, and the account already has steady conversion volume to feed the algorithm. |
| Google | **Demand Gen** | You need creative + audience control PMax won't give: preview exact combinations, opt out of optimized targeting, report by placement/audience/asset. |
| Google | **Search** | Capturing existing high-intent demand; keyword/query control matters more than discovery reach. |
| Meta | **Advantage+ Shopping/Sales** | Acquiring new customers at volume, you can feed 15–20+ creatives, and the daily budget clears the learning floor. |
| Meta | **Manual (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.
```text
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`):
| Surface | Headlines | Descriptions | Media |
|---|---|---|---|
| PMax (per asset group) | 15 × 30 char + 1 long × 90 char | 5 × 90 char | 20 images, 5 videos |
| Demand Gen | 5 × 40 char | 5 × 90 char | per format |
| Search (RSA) | 15 × 30 char | 4 × 90 char | — |
| Meta Advantage+ | feed 15–20+ creative variations | — | mixed 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.
```text
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-pattern | Why it fails | Do instead |
|---|---|---|
| Scaling on platform ROAS | Over-reports 30–100% via double-counting | Validate with geo-holdout / blended MER first |
| Fragmenting budget across many tiny campaigns | None gets enough data to exit learning | Consolidate above the conversion-data floor |
| No existing-customer cap on Advantage+ | Meta drifts to cheap retargeting; acquisition stops | Cap existing customers at 20–30% |
| Launching with 3–5 creatives | Algorithm can't test; it's a manual campaign in disguise | Feed 15–20+ variations, refresh weekly |
| Tweaking budget/bids/assets every few days | Each >20% change resets the learning phase | Hold structure ≥4 weeks, then act on data |
| Target ROAS set below break-even | Every conversion loses money | Set target ≥ 1÷margin; profit-mode 3.5x–8x |
| Ignoring Consent Mode v2 / CAPI | Conversions go unattributed; Smart Bidding degrades | Advanced consent + Enhanced Conversions + CAPI |
| Copy that overflows the platform char limit | Truncated/rejected assets, Low rating | Lint 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.