---
name: ads
description: "Use when you need to run or fix paid acquisition on Google or Meta — structuring campaigns (Performance Max, Demand Gen, Search, Advantage+), writing platform-fit creative, allocating budget, and deciding scale-vs-kill on ROAS. Use when a campaign spends but won't convert, conversions dropped after Consent Mode v2 or iOS, or you need the break-even ROAS math. Triggers: 'set up our Google Ads', 'our Performance Max isn't converting', 'what ROAS do we need to break even', 'how much budget per campaign and how fast can we scale', 'our Meta CPA is too high', 'platform ROAS looks great but the bank account disagrees', 'configura una campaña de Google Ads', 'qué ROAS necesito para no perder dinero', 'la campanya de Meta no converteix'. NOT writing the landing page the ad clicks into (that is landing-copy), NOT designing the experiment's statistics and sample size (that is ab-testing), NOT the whole-funnel 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*.

You do **not** own the page the ad clicks into (that is `landing-copy`), the voice
the copy speaks in (that is `brand-voice`), or the statistics of an experiment (that
is `ab-testing`). The nearest miss is `marketing`: it decides *whether to run paid at
all and the channel mix*; you execute *the Google/Meta buy inside that plan* down to
asset groups, bids, and break-even ROAS. "Should we even do paid?" → that is
`../marketing/SKILL.md`. "Structure and scale the account" → that is you.

## 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**. The full
structure detail is 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 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

- **Destination page** the ad clicks into → `../landing-copy/SKILL.md`.
- **Voice/tone** the copy must obey → `../brand-voice/SKILL.md`.
- **Real experiment design** (sample size, significance) → the `ab-testing` skill.
- **Reporting & dashboards** of the numbers → the `analytics` / `dashboard` skills.
- **Blended/next-quarter revenue projection** → the `forecasting` skill.
- **"Should we run paid at all?" / channel mix** → `../marketing/SKILL.md`.
- **Top-of-funnel B2B prospect lists** (not paid media) → the `lead-gen` skill.

## References

- `references/platform-specs.md` — full asset spec tables per surface, image/video
  orientations and sizes, the Low/Good/Best rotation playbook, the 25-asset-group rule,
  and the Google Ads API version note for scripting.
- `references/roas-model.md` — worked break-even and target-ROAS math, the
  platform-ROAS vs MER vs incrementality table, a geo-holdout test design, and the
  scale/hold/kill decision rule.
