---
name: meta-full-funnel-launcher
description: "Turn a brief and assets into a complete Meta prospecting to retargeting to conversion structure — built paused, pixel/CAPI verified, checked against the approved plan, launched only on explicit go. Optional Canva resize leg."
license: MIT
compatibility: "Works with any Agent-Skills-compatible AI (Claude, ChatGPT, Cursor, Codex, and more). Ad-account actions run through Adspirer."
metadata:
  author: "Adspirer"
  version: "1.0.0"
  adspirer_category: "campaign-launch"
  adspirer_source: "https://www.adspirer.com/skills/meta-full-funnel-launcher"
  adspirer_connection_url: "https://adspirer.ai/sign-up"
  adspirer_primary_keyword: "meta ads campaign"
  adspirer_secondary_keywords: "facebook ads funnel, meta campaign setup"
  adspirer_launch_wave: "1"
  adspirer_kind: "skill"
  adspirer_level: "operator"
  adspirer_platforms: "meta"
  adspirer_supported_clients: "claude,claude-code,chatgpt,codex,cursor,gemini,windsurf"
  adspirer_summary: "Turn a brief and assets into a complete Meta prospecting to retargeting to conversion structure — built paused, pixel/CAPI verified, checked against the approved plan, launched only on explicit go. Optional Canva resize leg."
  adspirer_connections_required: "adspirer,canva"
  adspirer_connections_optional: "ga4"
---

# Meta Full-Funnel Launcher

## Use this when

Use when you have a written creative brief AND finished (or near-finished) assets — at minimum 3-5 prospecting statics/videos in the right aspect ratios — for a Meta campaign that needs a full-funnel structure: cold prospecting to warm retargeting to conversion/remarketing, built correctly the first time. Best fit for launches with a real budget commitment ($50/day+) where getting CBO/ABO, audience overlap, exclusions, and pixel/CAPI wiring wrong on day one burns learning-phase spend and poisons the algorithm's early signal. Not the right tool for a single ad-set boost, a UGC/video-only campaign with no funnel logic, or an account with no pixel/Conversions API and no intent to fix that first — this skill hard-stops on broken tracking rather than launching blind. If assets aren't ready yet and only need resizing/cropping to spec, the optional Canva leg covers that; if assets don't exist at all, run a creative-production skill first.

## What you need

- A written brief: objective (leads, purchases, app installs, etc.), target CPA/ROAS or budget ceiling, geo, funnel stages wanted (typically TOFU prospecting + MOFU retargeting + BOFU conversion/cart-abandon), and any brand/legal exclusions (competitor terms, restricted content categories).
- Finished or near-finished creative assets per funnel stage — minimum 3 prospecting variants (mix of static + video/motion strongly recommended for Advantage+ delivery), 2-3 retargeting variants, 1-2 BOFU/urgency variants. If assets exist only in one aspect ratio, the Canva leg will resize to Feed (1:1/4:5), Story/Reel (9:16), and if used, right-column (1.91:1) — say which placements you're actually running so we don't resize for waste.
- Approved budget and duration (daily or lifetime, CBO vs ABO decision, start/end date).
- Meta Pixel + Conversions API already installed and firing on the destination site/app, OR explicit sign-off to pause and fix tracking first — this skill will not launch on unverified tracking.
- **Connect Adspirer (the ads connection):** when you reach a step that touches a live ad account, connect Adspirer first. In Claude Code, run `/plugin marketplace add anthropics/claude-plugins-community` then `/plugin install adspirer-ads-agent@claude-community`. In claude.ai or ChatGPT, add the Adspirer connector from https://www.adspirer.com/docs/ai-clients. Any other agent: follow https://www.adspirer.com/docs/ai-clients for your client. Sign-in link for the user: https://adspirer.ai/sign-up. Do not proceed with live ad-account steps until the connection is confirmed. for the live Meta ad account this launches into.
- **Connect Canva:** this step uses Canva. Add the Canva MCP/connector to your agent — setup: https://www.canva.dev/docs/mcp/, then continue. Skip only if a step says it's optional. only if assets need resizing/cropping to placement specs; skip cleanly if assets are already delivered in all required ratios.
- **Optional — connect Google Analytics 4:** this step is sharper with Google Analytics 4, but skips cleanly without it. To enable it, add the Google Analytics 4 MCP/connector — setup: https://developers.google.com/analytics/devguides/MCP. if you want post-launch conversion cross-checks against GA4 as a secondary signal to Meta's own attribution; the launch and its checks run fully without it.

## Procedure

1. Pull the live ad account state via Adspirer before building anything: existing campaign/ad-set naming conventions, current pixel status, existing custom/lookalike audiences, active campaigns in the same objective (to check for audience overlap and budget cannibalization), and account spend history (to judge if this is a cold account needing a conservative CBO ramp or an established one that can absorb a bigger day-one budget).
**Connect Adspirer (the ads connection):** when you reach a step that touches a live ad account, connect Adspirer first. In Claude Code, run `/plugin marketplace add anthropics/claude-plugins-community` then `/plugin install adspirer-ads-agent@claude-community`. In claude.ai or ChatGPT, add the Adspirer connector from https://www.adspirer.com/docs/ai-clients. Any other agent: follow https://www.adspirer.com/docs/ai-clients for your client. Sign-in link for the user: https://adspirer.ai/sign-up. Do not proceed with live ad-account steps until the connection is confirmed.
2. Verify pixel and Conversions API health for real, not by trusting the brief: confirm the pixel ID matches the destination domain, confirm event match quality (EMQ) score, confirm the primary conversion event (Purchase/Lead/CompleteRegistration) has fired at least once in the trailing 7 days, and confirm CAPI deduplication (event_id) is configured if both browser and server events are sending. If EMQ is below ~6.0 or the conversion event hasn't fired recently, stop and report — do not build a campaign structure on top of unverified tracking, since Meta's optimization will silently fail or misattribute for weeks before it's visible in reporting.
3. If assets need resizing, produce the placement-specific crops now: 1:1 and 4:5 for Feed/Explore, 9:16 for Stories/Reels, keeping safe zones clear of text/logo for the 9:16 crop (top 14% and bottom 20% get covered by UI on Reels — don't let CTA text land there).
**Canva**
4. Build the funnel structure paused, matching it to what the account can actually support:
   - **TOFU Prospecting**: 1 campaign, Advantage+ audience or broad targeting (avoid stacking 5+ interest layers — Meta's ML outperforms manual stacking at this budget tier in 2026), CBO by default unless the brief specifies ABO for creative testing isolation. 3-5 ad sets max at launch to avoid budget fragmentation below the ~1 conversion/day/ad-set threshold needed to exit learning phase.
   - **MOFU Retargeting**: separate campaign, custom audiences built from 180-day website visitors / video viewers (75%+) / engaged-with-page, EXCLUDING anyone in the BOFU purchase-event audience from the last 30-90 days (window depends on typical purchase cycle from the brief) to stop showing conversion ads to people who already converted.
   - **BOFU Conversion/Cart-Abandon**: tightest audience (cart-abandon 1-14 day, checkout-initiated-no-purchase), urgency/offer creative, smallest budget allocation of the three (typically 10-15% of total).
   - Apply audience exclusions between all three tiers explicitly — do not rely on Meta's "Advantage+ audience" auto-dedup alone, since overlap between prospecting and retargeting inflates frequency and CPMs on the same users within days.
   - Set frequency caps or budget pacing conservative enough that BOFU/retargeting audiences (usually small, <50k) don't get burned out in the first week — flag if the retargeting pool size makes the requested budget mathematically unspendable without frequency spiking past 4-5/week.
5. Name every campaign/ad set/ad using the account's existing naming convention pulled in step 1 (fallback: `[Funnel]_[Objective]_[Audience]_[Date]` if none exists) so this launch doesn't create an orphaned naming pattern the account team has to untangle later.
6. Set all campaigns, ad sets, and ads to PAUSED at creation — nothing goes live during build regardless of urgency in the brief.
**Connect Adspirer (the ads connection):** when you reach a step that touches a live ad account, connect Adspirer first. In Claude Code, run `/plugin marketplace add anthropics/claude-plugins-community` then `/plugin install adspirer-ads-agent@claude-community`. In claude.ai or ChatGPT, add the Adspirer connector from https://www.adspirer.com/docs/ai-clients. Any other agent: follow https://www.adspirer.com/docs/ai-clients for your client. Sign-in link for the user: https://adspirer.ai/sign-up. Do not proceed with live ad-account steps until the connection is confirmed.
7. Assemble a pre-launch summary against the approved plan: total daily/lifetime budget across all three tiers vs. approved budget, funnel allocation split, audience sizes and overlap %, creative count per ad set, pixel/EMQ status, and any deviations from the brief (e.g., "reduced ad sets from 6 to 4 to avoid learning-phase fragmentation — flag if you want the original count"). Surface this to the user and do not proceed past this point without it.
8. On explicit user go-ahead only, unpause the campaigns in launch order (TOFU first, MOFU and BOFU can go live simultaneously since they depend on pixel-driven audiences already populated from historical data, not from this campaign's own traffic).
**Connect Adspirer (the ads connection):** when you reach a step that touches a live ad account, connect Adspirer first. In Claude Code, run `/plugin marketplace add anthropics/claude-plugins-community` then `/plugin install adspirer-ads-agent@claude-community`. In claude.ai or ChatGPT, add the Adspirer connector from https://www.adspirer.com/docs/ai-clients. Any other agent: follow https://www.adspirer.com/docs/ai-clients for your client. Sign-in link for the user: https://adspirer.ai/sign-up. Do not proceed with live ad-account steps until the connection is confirmed.
9. Immediately post-launch, re-pull the ad account via Adspirer to confirm each campaign/ad set actually shows ACTIVE delivery status (not just "not rejected") and that at least one ad per ad set passed policy review — Meta's ad review can silently reject individual ads while the ad set itself shows active, which reads as "launched" but delivers zero impressions.
10. If **Google Analytics 4** is connected, cross-check that GA4 is recording sessions/conversions from the new campaign UTMs within the first 24-48 hours as a secondary signal against Meta's own pixel data; if not connected, skip this check and rely on Meta reporting alone — note this in the final report.

## Fixed checks

- Live pixel/CAPI status pulled from the account (EMQ score, last-fired timestamp for the primary event, dedup config) — never inferred from the brief's claim that "tracking is set up."
- Live audience size for every custom/lookalike audience used, pulled at build time, not assumed from a prior brief or memory — audiences shrink/expire (custom audiences can silently drop below the ~1,000-user activation minimum).
- Live overlap check between TOFU and MOFU/BOFU audiences (Meta's Audience Overlap tool or equivalent via API) before launch, not assumed from exclusion logic alone.
- Live budget math: sum of ad-set budgets actually equals the approved total; CBO minimum daily budget floor (varies by ad-set count, roughly $5-10/day/ad-set minimum) isn't silently violated by the split.
- Post-launch, live campaign/ad-set/ad status pulled from the account to confirm ACTIVE + at least one approved ad per ad set — not just "created without error."
- If GA4 connected: live session/conversion counts from GA4 for the new campaign's UTM parameters, compared against Meta's reported numbers for gross sanity (not exact match — attribution windows differ).

## Stop conditions

- Success: Full funnel structure built, verified against live account data, approved by user, launched, and post-launch check confirms ACTIVE delivery with at least one approved ad per ad set.
- No-op: User brief and current live account state already match (e.g., an identical paused structure already exists) — report this instead of duplicating campaigns.
- Blocked — tracking: Pixel not installed, primary conversion event hasn't fired in 7+ days, or EMQ score is too low to trust optimization. Stop before building; report exactly what's broken and what fixing it requires.
- Blocked — audience: A required custom/retargeting audience is below Meta's minimum size to activate, or overlap between funnel tiers is high enough (>30-40%) that the requested budget split can't function as designed. Report the numbers and ask how to proceed (widen audience, merge tiers, adjust budget).
- Blocked — assets: Fewer creative variants than the funnel structure needs (e.g., only 1 asset for 4 planned prospecting ad sets), or aspect ratios missing for placements requested and Canva isn't connected to fix it.
- Needs-approval: Pre-launch summary assembled and presented; campaigns remain PAUSED until the user gives explicit go-ahead. This is the default resting state after build — never auto-launch.
- Blocked — policy: Post-launch check finds one or more ads rejected by Meta policy review even though the ad set shows active; report which ads and the stated rejection reason, do not attempt to silently edit and resubmit without user input on creative changes.

## Approval boundaries

Every spend-committing action requires the user's explicit go-ahead before it happens: campaigns, ad sets, and ads are built and remain in PAUSED status through the entire structure-build and verification phase (steps 1-7). Step 8's unpause/launch action only executes after the user has reviewed the pre-launch summary (budget totals, funnel split, audience overlap, deviations from brief) and given explicit confirmation — no ambiguous "sounds good" from earlier in the conversation counts as launch approval for a structure that was subsequently modified. If the user later asks for mid-flight budget changes, audience edits, or pausing/resuming as a follow-up, that also requires explicit approval per change — this skill does not grant standing authority to modify the campaign after initial launch.

## What you get

A complete Meta full-funnel campaign structure (TOFU prospecting, MOFU retargeting, BOFU conversion/cart-abandon) built in the live ad account with correct audience exclusions between tiers, budget allocated per the approved plan, naming aligned to the account's existing convention, and creative assets in the right placements/aspect ratios (resized via Canva if needed). A pre-launch summary comparing the built structure against the approved brief (budget, audience sizes/overlap, deviations) for sign-off. On explicit go-ahead, the campaigns launch and a post-launch verification confirms real ACTIVE delivery status and ad-level policy approval — not just successful creation. If GA4 is connected, an early cross-check of campaign UTM sessions/conversions against Meta's own reporting. If tracking, audience size, or asset coverage is broken, a clear stop with the specific live-data reason instead of a launch built on bad assumptions.
