# Ads

> 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`).

- Skill: `ericrisco/ads` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add ericrisco/ads`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ericrisco/ads/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: ericrisco (https://skillmd.com/u/ericrisco)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/ericrisco/ads

---


# 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.

