launch-meta-campaign
SkillDev toolsLaunch a complete Meta Ads campaign, campaign, ad set, and ad(s), built paused and ready to review. Use when the user wants a new Facebook/Instagram campaign.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the launch-meta-campaign skill
What this skill tells your AI
The instructions your AI receives, as published by markifact/markifact-mcp in plugins/hermes/markifact/skills/launch-meta-campaign/SKILL.md and read by ahel’s review.
Goal
Stand up a production-ready Meta campaign with one ad set and one or more ad variants in one flow. Always start paused.
Inputs to confirm (batch)
- Ad account name (substring) — required.
- Campaign objective —
OUTCOME_SALES,OUTCOME_LEADS,OUTCOME_TRAFFIC,OUTCOME_AWARENESS,OUTCOME_ENGAGEMENT,OUTCOME_APP_PROMOTION. Required. This cannot be changed later — picking wrong forces a full rebuild. - Conversion location (for Sales/Leads): website + pixel + event, or lead form, or messaging.
- Budget structure — campaign budget (CBO / Advantage Campaign Budget) or ad-set budget (ABO). Required. CBO is default-on for new campaigns. Pick before creating because switching later is messy.
- Daily budget — required.
- Targeting: location(s), age range, gender, languages, detailed interests/behaviors (or Advantage+ Audience).
- Placements: Advantage+ Placements (recommended) or manual. If manual, which platforms (FB, IG, Messenger, Audience Network) and which positions (feeds, stories, reels, etc.).
- Schedule: continuous or start/end dates.
- Ad format: single image, single video, carousel, catalog (DPA), flexible / dynamic creative.
- Creative inputs: image/video file IDs (if user attached) or URLs, primary text, headline, description, CTA, destination URL, Facebook Page ID, optional Instagram account ID.
Workflow
- Discover ops via
find_operations:meta_ads_select_accounts,meta_ads_create_campaign,meta_ads_create_adset,meta_ads_create_single_image_ad,meta_ads_create_single_video_ad,meta_ads_create_carousel_ad,meta_ads_create_catalog_ad,meta_ads_create_flexible_ad,meta_ads_search_targeting,meta_ads_list_account_pixels,meta_ads_list_custom_audiences. - Inspect with
get_operation_inputs. - Resolve account:
meta_ads_select_accountssubstring. - Resolve targeting if user gave interest/behavior names →
meta_ads_search_targetingto get IDs. - Resolve pixel for conversions →
meta_ads_list_account_pixels. - Create campaign (status=PAUSED) with chosen objective + CBO/ABO setting + budget if CBO.
- Create ad set under that campaign with: optimization goal (matches objective), conversion event, audience, placements, schedule, budget if ABO. Status=PAUSED.
- Create ad(s) — pick the right
meta_ads_create_*_adop for the format. Status=PAUSED. - Confirm to user with IDs + reminder to review and unpause.
Use safe-write-operations for every create call.
Platform-specific rules the model MUST respect
- Objective is permanent. Cannot be changed after creation — confirm with the user before creating the campaign.
- CBO vs ABO decision is locked at campaign creation in practice. CBO (Advantage Campaign Budget) lets Meta distribute across ad sets — recommended when running 2+ ad sets in one campaign. ABO when each ad set has a distinct test variable (e.g. audience A vs B with controlled spend).
- Don't run more than 2–4 ad sets in one campaign. Beyond that, Meta over-concentrates spend on one and the others starve (auction overlap).
- Learning phase: each ad set needs ~50 conversions per week to exit learning. Sub-$50/day campaigns with mid-funnel conversion events almost never exit learning — warn user.
- Advantage+ Audience is now the default for most objectives. Manual targeting still works but Meta will broaden it unless you check the "use these settings as audience controls" override.
- Advantage+ Placements is preferred unless there's a creative reason to restrict (e.g. vertical-video-only).
- Catalog ad (DPA) requires a configured product catalog + product set + pixel with
ViewContent/AddToCart/Purchaseevents. Confirm catalog exists before picking this format. - Flexible / dynamic creative ads let Meta mix multiple images, headlines, primary texts, descriptions, CTAs and find winning combos automatically — recommended for testing.
- Page ID required for every ad. Ask user which Page if account has multiple.
- Always create PAUSED. Unpause is a separate user action.
Failure modes & recoveries
- "Pixel not active for selected event" → list available pixels + their active events; ask user to pick a different event or fix pixel implementation.
- "Audience too narrow / Audience too broad" → show estimated reach; suggest widening (drop interests, raise age range) or narrowing (add behavior layer).
- "Creative rejected" → most common: missing disclaimer for special category (housing/credit/employment/social issues). Ask user about category and re-create with declared category.
- "Targeting unavailable in this region" (housing/employment/credit special categories) → can't target by age/gender/zip; declare special category at campaign level.
Output to user
| Item | Value |
|---|---|
| Account | (id) |
| Campaign | (id, PAUSED, objective=, CBO/ABO=) |
| Ad set | (id) |
| Audience est. reach | daily |
| Ad(s) | format, count |
| Daily budget |
End with: "Review in Ads Manager. Unpause from there or ask me to flip status. After 3–7 days, run /markifact:diagnose-underperformer if performance is off."
Signals
- GitHub stars
- 48
- Forks
- 8
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Key
launch-meta-campaign- Source
- github.com/markifact/markifact-mcp