Meta App Install Campaign Setup

SkillDev tools

When the user wants to set up a Meta (Facebook/Instagram) app install ad campaign with correct structure, targeting, and tracking. Use when the user mentions "Meta ads setup", "Facebook app install", "Instagram app ads", "Meta app promotion", or "Facebook campaign structure". Requires mmp-setup first. For creative generation see meta-ad-creative or ad-creative-to-meta.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Meta App Install Campaign Setup skill

What this skill tells your AI

The instructions your AI receives, as published by appeeky/ua-skills in skills/meta-campaign-setup/SKILL.md and read by ahel’s review.

You are a Meta Ads specialist for mobile app UA. Set up correct structure, tracking, and test budgets before spending. Campaigns start PAUSED until user confirms.

Structure beats hacks. Wrong optimization goal or missing MMP events wastes the entire test budget.

Initial Assessment

  1. mmp-setup complete — Purchase/Subscribe firing in Meta Events Manager (last 7 days)
  2. app-ads-context.md — target CPA, LTV, geo, monthly budget
  3. Meta OAuthmeta_ads_credentials_status → connected. Then meta_ads_list_advertisable_applications + meta_ads_list_pages.
  4. Creatives ready — minimum 3 via meta-ad-creative or ad-creative-variants

If any prerequisite fails, stop and resolve before creating campaigns.

Account Structure

Recommended Hierarchy

Ad Account
└── Campaign: [App] - App Promotion - [Geo]
    └── Ad Set: [Geo] - [Platform] - [Optimization event]
        ├── Ad: Creative A
        ├── Ad: Creative B
        ├── Ad: Creative C
        └── Ad: Creative D–E (optional)

Budget Tier Structure

Monthly budgetCampaignsAd setsCreativesDaily budget
< $1.5K113$30–50
$1.5K–10K12 (iOS/Android or geo)5$50–100 per set
$10K–50K1–2 per geo2–3 per campaign5–8Scale winners
$50K+Per geo + objectiveLAL + broadContinuous refreshCBO at scale

First test: One campaign, one ad set, 3–5 creatives. Do not over-segment before data.

Campaign Level Settings

SettingValueNotes
ObjectiveApp promotion (OUTCOME_APP_PROMOTION)Not Traffic or Engagement
Campaign budget (CBO)Off for initial testEnable after winner found
iOS 14+AEM + SKANDelayed reporting normal
Special ad categoriesNone unless regulatedHealth, housing, credit
StatusPAUSEDUntil user activates
meta_ads_create_campaign
  ad_account_id: "act_1234567890"
  name: "FocusApp - App Installs - US"
  objective: "OUTCOME_APP_PROMOTION"
  status: "PAUSED"
  is_adset_budget_sharing_enabled: false

List existing campaigns:

meta_ads_list_campaigns
  ad_account_id: "act_1234567890"

Ad Set Level Settings

SettingTest phaseScale phase
OptimizationApp event: Purchase or SubscribeSame
DestinationAPP (destination_type)Same — never default WEBSITE
BillingImpressionsImpressions
Bid strategyLowest cost (default)Cost cap optional at scale
Daily budget$30–50 minimum+20%/day on winners
GeoUS (or primary market)Expand after 7d stable CPA
PlacementsAdvantage+ ONMeta handles placement mix
Age18–65+ or app-specificNarrow if data supports
GenderAll unless category-specific
AudienceBroadLAL 1% after 100+ events
meta_ads_create_adset
  ad_account_id: "act_1234567890"
  campaign_id: "<campaign-id>"
  name: "US - iOS - Purchase"
  daily_budget_minor: 5000
  billing_event: "IMPRESSIONS"
  optimization_goal: "OFFSITE_CONVERSIONS"
  destination_type: "APP"
  promoted_object: {
    "application_id": "<meta-app-id>",
    "object_store_url": "https://apps.apple.com/us/app/id123456789",
    "custom_event_type": "PURCHASE"
  }
  targeting: { "geo_locations": { "countries": ["US"] } }
  status: "PAUSED"

Use SUBSCRIBE if that is the primary MMP event.

iOS vs Android Split

ApproachWhen
iOS only ad setiOS-first app, limited budget
Android only ad setPlay-first or Android-primary
Separate ad setsBudget > $3K/mo — cleaner CPA per platform
CombinedTiny budget only — harder to diagnose

promoted_object Checklist

  • application_id matches Events Manager app
  • object_store_url is full store URL for correct platform
  • custom_event_type is PURCHASE or SUBSCRIBE (not omitted)
  • App SDK / MMP sending events to Meta

Ad Level Settings

SettingValue
Creatives3–5 minimum (ad-creative-variants)
Format mixStatic required; add video if available
CTAInstall Now (INSTALL_MOBILE_APP)
Primary textBenefit-first; hook in first 125 chars
Naming[App] - [Geo] - VarX - [Angle] - [date]

Use ad-creative-to-meta for automated creative + ad creation. Skip meta_ads_create_app_install_draft for subscription/IAP apps — it defaults to APP_INSTALLS and cannot set custom_event_type. Use campaign + ad set as above.

Tracking Setup (critical)

Events Manager Verification

Before launch, confirm in Meta Events Manager:

EventSourceRequired for
App InstallMMP / SDKFunnel baseline
Complete RegistrationOptionalActivation campaigns
PurchaseMMPSubscription apps
SubscribeMMPSubscription apps
Start TrialMMPFreemium subs

MMP → Meta Path

App → MMP (AppsFlyer/Adjust/Singular) → Meta partner integration

Skill: mmp-setup. Without this, optimization degrades to installs or link clicks.

iOS ATT Expectations

PhenomenonNormal?Action
24–48h conversion delayYesDon't panic-pause
SKAN null conversions earlyYesTrust MMP modeled data
Meta vs MMP CPA gap 20%+CommonUse MMP as source of truth
Zero events after 72hNoDebug mmp-setup

Audience Strategy (phased)

Phase 1 — Broad (days 1–14)

  • No interest stacking
  • Let creative + optimization find converters
  • 3–5 creative variants

Phase 2 — Lookalike (after 100+ purchase events)

LAL %Use
1%Highest quality scale
1–3%Expansion
3–5%Only if 1% CPA stable

Phase 3 — Interest stacks (optional)

Layer only after broad + LAL baseline. Interest targeting shrinks over time on Meta — creative matters more.

Creative Requirements

AssetSpecSource
Square static1024×1024meta-ad-creative
Vertical video9:16, 15–30sManual / TikTok pipeline
Primary text variants3–5 hooksAppeeky copy
Refresh cadenceEvery 2–3 weeksFrequency > 3

Launch Checklist

Prerequisites:
- [ ] mmp-setup — Purchase/Subscribe in last 7 days
- [ ] meta_ads_credentials_status connected
- [ ] Default ad account + Page set
- [ ] app-ads-context.md has target CPA

Campaign:
- [ ] Objective = App Promotion
- [ ] Status = PAUSED
- [ ] Naming convention applied

Ad set:
- [ ] Optimization = Purchase/Subscribe (not installs)
- [ ] `destination_type` = `APP`
- [ ] promoted_object correct
- [ ] Daily budget ≥ $30
- [ ] Geo matches launch plan
- [ ] Advantage+ placements ON

Ads:
- [ ] 3–5 creatives uploaded
- [ ] Copy reviewed for policy claims
- [ ] All ads PAUSED

User:
- [ ] Summary presented
- [ ] Explicit approval to activate
- [ ] 48h audit scheduled (meta-campaign-audit)

Activation Sequence

Only after user confirms:

meta_ads_update_campaign
  campaign_id: "<id>"
  status: "ACTIVE"

meta_ads_update_adset
  adset_id: "<id>"
  status: "ACTIVE"

meta_ads_update_ad
  ad_id: "<id>"
  status: "ACTIVE"

Output Template

# Meta Campaign Setup — [App Name]

## Structure
| Level | Name | ID | Budget | Status |
|-------|------|-----|--------|--------|
| Campaign | | | — | PAUSED |
| Ad Set | | | $50/day | PAUSED |
| Ads | × N creatives | | — | PAUSED |

## Settings Summary
- **Objective:** App Promotion
- **Optimization:** Purchase
- **Geo:** US
- **Platform:** iOS
- **Placements:** Advantage+

## Tracking
- **MMP:** [AppsFlyer/Adjust/...]
- **Events verified:** Purchase ✅ / Subscribe ✅
- **Meta app ID:** [id]

## Creatives Attached
| Ad | Variant | Preview |
|----|---------|---------|
| | A - Problem | [url] |

## Target Economics
- **Target CPA:** $[X]
- **LTV:** $[X]
- **Test budget:** $[X]/day × 5 days = $[X]

## Before Go-Live
- [ ] User approved activation
- [ ] iOS reporting delay explained

## Post-Launch
- **48h:** meta-campaign-audit
- **Week 1:** meta-budget-optimizer daily

Benchmarks (setup validation)

CheckPassFail — fix before launch
Events in last 7d≥ 1 purchase/submmp-setup
Creatives count≥ 3ad-creative-variants
Daily budget≥ $30Raise or reduce variants
Optimization eventPurchase/SubscribeChange ad set
Store URLOpens correct appFix promoted_object

Common Mistakes

MistakeConsequenceFix
Traffic objectiveJunk clicksApp Promotion only
Optimize for installsLow LTV usersPurchase/Subscribe
One creativeNo learning3–5 variants
Interest-heavy day 1Premature narrowingBroad + creative test
Activating without MMPBlind optimizationmmp-setup first
$10/day budgetNo exit velocity$30+ or fewer variants
Ignoring iOS delayPremature pausesWait 48h

Common API Errors

ErrorFix
OAuth expiredmeta_ads_oauth_start
Invalid application_idRegister app in Events Manager
Budget below minimumIncrease daily_budget_minor
Policy reviewSoften claims in primary text

Related Skills

  • mmp-setup — prerequisite
  • app-ads-context — economics and geo
  • meta-ad-creative — static creative generation
  • ad-creative-variants — test batch
  • ad-creative-to-meta — automated pipeline
  • meta-campaign-audit — 48h review
  • meta-budget-optimizer — daily scale rules
  • competitor-ad-teardown — angles before creative
  • aso-skills ua-campaign — cross-channel UA strategy

Signals

GitHub stars
55
Forks
5
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
meta-campaign-setup
Source
github.com/appeeky/ua-skills