---
name: paid-ads-campaign-ops
description: "Operate paid ads as a Consumer AI Factory validation channel: create campaigns, add creatives, inspect delivery/performance, reconcile platform data with PostHog, and decide whether to kill, iterate, or scale. Platform-specific adapters such as Meta Ads belong under this broader paid-ads skill."
version: 1.0.0
author: Hermes Agent
---

# Paid Ads Campaign Ops

Use this skill when Antoine asks to create, modify, launch, pause, diagnose, or analyze paid ad campaigns for Consumer AI Factory ventures.

This is the class-level skill. Do not frame the workflow as only "Meta Ads" unless the task is specifically platform API execution. The factory category is **paid ads as a validation channel**; Meta, TikTok, Google, Reddit, etc. are adapters.

## Core principle

Paid ads are not just traffic buying. For the factory, they are structured demand probes.

A good paid-ad task answers:

```text
Which audience + promise + creative + landing action produced qualified intent, at what cost, and what should we change next?
```

Do not stop at impressions/clicks. Connect platform delivery to product telemetry and the venture decision.

## Skill family taxonomy

Use this hierarchy in future skill updates and task framing:

- `paid-ads-campaign-ops`: shared doctrine, experiment setup, creative testing, UTMs, budget/kill rules, cross-platform readouts, PostHog reconciliation.
- Platform adapters under or alongside this umbrella:
  - Meta Ads: Graph API campaign/ad set/ad/creative ops, review/delivery diagnostics, Ads Insights.
  - TikTok Ads: campaign/ad group/ad ops, Spark/creator rules, Pixel/Event API readout.
  - Google Ads: search/display/video campaign ops, conversion tracking, keyword/query readout.
  - Reddit Ads: community targeting, conversion tracking, creative/comment context.

Pitfall from Antoine correction: do not propose a narrow `meta-ads-campaign-ops` skill as the primary reusable artifact when the real class is paid ads. Meta-specific procedure belongs as an adapter/reference inside the paid-ads umbrella.

## Required context before acting

Before campaign creation or major edits, identify:

1. Venture/product and canonical landing URL.
2. Objective: email signup, CTA click, lead, purchase, app install, conversation start, profile submission, etc.
3. Platform and account access state.
4. Budget and runtime.
5. Pixel/conversion event and whether it is verified in the platform.
6. PostHog project/dashboard/event names.
7. Creative assets and copy variants.
8. UTM naming convention.
9. Approval gates: spend increase, new billing setup, token/account changes, public posting policies.

Default to low-risk execution: prepare and verify everything possible, but stop at auth, billing, or materially higher-spend gates.

## Experiment design

For early Consumer AI probes, keep campaigns intentionally small and legible:

- One clear audience hypothesis per campaign/ad set.
- One landing promise per campaign.
- 2-4 creative variants max at tiny budgets.
- One primary conversion event.
- UTMs that encode product, channel, campaign, creative, and ad/adset IDs where possible.
- Name objects so a future readout can map platform rows back to the product hypothesis.

Recommended UTM shape:

```text
utm_source=<platform>
utm_medium=paid_social | paid_search | paid_video
utm_campaign=<venture>_<objective>_<creative-or-wedge>_<version>
utm_content=<creative_variant_or_ad_id>
utm_term=<adset_or_audience_id>
utm_id=<campaign_id>
```

Examples:

```text
utm_source=meta&utm_medium=paid_social&utm_campaign=alma_leads_video_static_v1&utm_content=static_v1&utm_id=<campaign_id>&utm_term=<adset_id>
utm_source=meta&utm_medium=paid_social&utm_campaign=nextmove_coach_outreach_leads_static_v1&utm_content=static_1&utm_id=<campaign_id>&utm_term=<adset_id>
```

## Campaign creation workflow

1. Confirm platform/account/page/pixel/conversion prerequisites.
2. Verify landing URL loads and contains expected analytics events.
3. Confirm the event taxonomy in PostHog and the platform conversion event.
4. Upload or attach creatives.
5. Create campaign with paused status when possible.
6. Create ad set/audience/budget with paused status when possible.
7. Create ads/creative variants with destination UTMs.
8. Verify all IDs, statuses, review state, destination links, and conversion settings.
9. Activate only after verification and within the approved budget.
10. Record campaign/adset/ad IDs in the venture note, experiment ledger, or local status artifact as appropriate. Do not store secrets.

## Performance readout workflow

When Antoine asks how ads are doing, do not answer from PostHog alone if native platform access exists.

Read in this order:

1. Native ad platform:
   - spend
   - impressions
   - reach
   - clicks/link clicks/landing page views
   - CTR, CPC, CPM
   - conversions/leads reported by the platform
   - delivery/review status
   - placement/audience/creative breakdown if useful
2. PostHog / product telemetry:
   - landing people/pageviews by UTM
   - CTA clicks
   - signup/conversion events
   - first-value or activation events when available
   - raw event properties for source/referrer/UTM anomalies
3. Backend/raw lead storage when relevant:
   - email signup export
   - webhook/chat logs
   - payment/submission records
4. Reconciliation:
   - platform click -> PostHog landing event
   - PostHog CTA -> backend lead/signup
   - backend lead -> platform reported conversion

Report the mismatch explicitly. Example:

```text
Meta says X link clicks and Y leads. PostHog sees A landing people, B CTA people, C signups with Meta UTM. Backend has D raw rows. The decision metric I trust most is ... because ...
```

## Tiny-budget decision rules

At very low spend, avoid false certainty. Use these as practical gates, not laws:

- 0 conversions after enough clicks to make the landing action plausible: inspect recordings/landing/offer before scaling spend.
- Strong CTR but low landing conversion: promise/landing mismatch or form friction.
- Low CTR and low conversions: creative/audience/promise problem.
- Platform conversions lower than PostHog/backend: attribution/config issue before demand conclusion.
- PostHog/backend conversions higher than platform: UTM/direct/reload/QA or conversion API/pixel mismatch.
- Good email/signup capture is only a Stage 2 signal. The next validation is reply, real context submission, first use, or payment intent.

For Consumer AI probes, spend increases should be tied to a learning goal:

```text
Increase spend to learn whether this CPA holds across 50-100 qualified visitors.
```

Not:

```text
Increase spend because the first few conversions looked exciting.
```

## Creative iteration rules

Do not produce generic AI SaaS ad slop. Paid creatives should be native to the target user and grounded in the product's real promise.

For each creative, define:

- target person
- pain sentence
- promised action/outcome
- proof or specificity
- CTA
- landing expectation

If using generated media, QA the asset before launch: readability, no weird hands/faces/text, product context is visible, and the ad does not overpromise.

## Safety and credential handling

- Never print API tokens, ad account tokens, app secrets, page tokens, pixel tokens, or admin export tokens.
- Store secrets only in local secret/env files with restrictive permissions when instructed.
- If a token is pasted in chat, use it only for the requested operation and remind Antoine to rotate it later.
- Stop at billing setup, account ownership, payment method, or spend-increase approvals.
- Prefer pausing over deleting campaign objects unless deletion is explicitly requested.
- Avoid claims like "guaranteed," "get signed," or sensitive-targeting wording that can trigger platform policy issues.

## Platform adapter: Meta Ads

For Meta-specific Graph API execution, use `references/meta-ads-graph-api-ops.md`.

## Related skills

- `posthog-venture-telemetry`: product analytics, PostHog dashboards, UTM/event reconciliation, raw event investigation.
- `consumer-traffic-sprint`: channel cadence and traffic sprint structure.
- `fal-ugc-video-pipeline`: short-form/UGC ad creative generation.
- `cinematic-broll-video-pipeline`: polished video ad or brand-film assets.
- `avoid-ai-writing`: required before shipping public-facing ad copy or landing copy.

## Verification before reporting success

Before saying a campaign or ad change is live:

1. Fetch the platform objects back by ID.
2. Confirm campaign/ad set/ad configured status and effective status.
3. Confirm budget, objective, promoted object/conversion event, targeting, and destination URL.
4. Confirm UTMs are present on each creative destination.
5. If possible, confirm platform review/delivery status.
6. If analyzing performance, include timestamp/window and distinguish platform-reported vs PostHog/backend-reported numbers.
