Ios app growth marketing
Skill Emasoft/emasoft-complete-ios-app-authoring/skills/ios-app-growth-marketing
Grow an iOS/iPadOS app: paid UA and ad attribution under ATT (SKAdNetwork v4, AdAttributionKit, AppsFlyer/Adjust/Branch/Singular, Apple Search Ads, Meta/TikTok/Google), subscription pricing and paywall price display (StoreKit 2 + RevenueCat), PPP territory pricing, CRO, launch (Product Hunt, App Store featuring), referral/viral loops (K-factor), retention/churn/LTV, marketing psychology. Use when: "market my app", "grow my app", "user acquisition", "paid ads", "ROAS", "CAC", "ATT", "SKAdNetwork", "conversion value", "MMP", "Apple Search Ads", "pricing strategy", "paywall", "free trial", "PPP pricing", "referral program", "launch strategy", "retention", "churn", "LTV".From its SKILL.md
npx -y skills add Emasoft/emasoft-complete-ios-app-authoring --skill ios-app-growth-marketingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
17.7 KB, as published. Nobody here has run it
iOS App Growth & Marketing
End-to-end growth engineering for iOS/iPadOS apps. This skill covers the four pillars of app growth and the iOS-native plumbing each one depends on:
- Acquisition — paid UA, ad-attribution measurement under ATT (the iOS-specific part most generic marketing advice gets wrong).
- Monetization — subscription/IAP pricing strategy, StoreKit 2 + RevenueCat paywall pricing display, purchasing-power-parity territory pricing.
- Activation & retention — onboarding-to-paywall flow, CRO, referral/viral loops, churn reduction.
- Strategy — launch sequencing, growth-tactic selection, marketing psychology, competitor positioning.
Scope boundary. This skill is about growing an app that already exists. It does not cover App Store listing optimization (keywords, screenshots, title/subtitle — that's the app-store-optimization / ASO skill), the release/submission mechanics (
ascCLI, TestFlight, build upload — that's app-store-release), or App Review compliance checks (that's app-review-preflight). When a request is purely ASO, release, or review, delegate. This skill owns demand generation, attribution measurement, pricing, CRO, and viral/retention loops.
Decision tree — route to the right reference
What does the user need?
│
├─ "Installs going Organic / attribution missing / ATT prompt / SKAN / AdAttributionKit
│ / conversion value / Meta AEM / MMP setup / IDFA / postback receiver / dual-call"
│ └─→ references/attribution-and-att.md
│ The iOS-native acquisition-measurement layer. SDK init order, ATT 4-state
│ handling, SKAdNetwork v4 + AdAttributionKit (incl. iOS 18 PostbackUpdate +
│ server-side postback receiver), per-channel measurement, MMP troubleshooting.
│
├─ "TikTok SDK / TikTokBusinessSDK / disableSKAdNetworkSupport / tiktokAppId / SKAN owner"
│ └─→ references/tiktok-channel.md
│ Business-SDK-vs-OpenSDK trap, SKAN-ownership decision matrix, init order,
│ hybrid event_id dedup, Events API S2S.
│
├─ "Meta AEM greyed-out / extinfo / ATE verification error / CAPI app events / CUID"
│ └─→ references/meta-attribution.md
│ 7-prereq AEM checklist, ATE 5-cause list, the extinfo 16-position array.
│
├─ "Apple Search Ads / ASA / CPT / keyword bids / campaign structure / Search Terms / CPP"
│ └─→ references/apple-search-ads.md
│ Readiness gate, CPT-by-category, bid formula, CPP routing, 2025-26 changes.
│
├─ "In-App Events / Today tab event / event card / live event / challenge"
│ └─→ references/in-app-events.md (free discovery + no-opt-in re-engagement push)
│
├─ "App Clip / instant experience / SKOverlay / App Clip card / 3-5x conversion"
│ └─→ references/app-clips-growth.md
│
├─ "Benchmarks / retention bands / D1/D7/D30 / cohort analysis / LTV by market / churn"
│ └─→ references/metrics-benchmarks.md
│ Per-category Poor/Avg/Good/Excellent bands, cohorts, sourced 2026 sub data.
│
├─ "Rating prompt / requestReview / star rating / pre-prompt survey / rating reset"
│ └─→ references/ratings-and-reviews.md
│
├─ "Paid ads / ROAS / CPA / campaign structure / ad creative / audiences / retargeting"
│ └─→ references/paid-acquisition.md
│ Platform selection, campaign structure, ad copy/creative frameworks,
│ audience targeting, optimization levers, blended-CAC accounting.
│
├─ "Pricing / subscription tiers / freemium / free trial / willingness to pay /
│ value metric / price increase / Van Westendorp / MaxDiff / unit economics"
│ └─→ references/monetization-and-pricing.md
│ Value-based pricing, research methods, tier structure, freemium vs trial,
│ app subscription unit economics, when/how to raise prices.
│
├─ "Paywall price display / RevenueCat / StoreKit price / currency / trial copy /
│ savings badge / hardcoded $ / per-month equivalent"
│ └─→ references/paywall-pricing-display.md
│ The hard rule: prices come from StoreKit/RevenueCat, never Swift literals.
│ Locale-correct price formatting, derived savings %, trial labels.
│
├─ "PPP / purchasing power parity / per-territory pricing / regional pricing /
│ price import / storefront equalization"
│ └─→ references/ppp-territory-pricing.md
│ `asc` CLI flows for subscription + IAP territory pricing via CSV import.
│
├─ "Onboarding / questionnaire flow / activation / CRO / paywall conversion /
│ permission priming / signup flow"
│ └─→ references/onboarding-and-cro.md
│ The 14-screen high-converting onboarding framework, permission priming,
│ paywall placement, CRO levers.
│
├─ "Launch / Product Hunt / go-to-market / waitlist / early access / feature announcement"
│ └─→ references/launch-strategy.md
│ ORB channel framework, 5-phase launch, Product Hunt playbook, ongoing launches.
│
├─ "Referral / affiliate / viral loop / refer-a-friend / K-factor / word of mouth"
│ └─→ references/referral-and-viral.md
│ Referral loop design, incentive sizing, viral-coefficient modeling, fraud.
│
├─ "Marketing psychology / mental models / cognitive bias / persuasion / why people buy"
│ └─→ references/marketing-psychology.md
│ 70+ mental models mapped to app marketing applications.
│
├─ "Marketing ideas / growth ideas / how to market / tactics / ways to promote"
│ └─→ references/growth-tactics-library.md
│ 140 growth tactics organized by category, stage, budget, timeline.
│
└─ "Competitor pages / vs pages / alternatives / comparison landing pages"
└─→ references/competitor-pages.md
Four comparison-page formats, centralized competitor data, SEO + schema.
Read the relevant reference(s) before answering. Each is self-contained.
The iOS growth equation (read this first)
App growth compounds three multipliers. Optimize the constraint, not your favorite lever (Theory of Constraints — see references/marketing-psychology.md):
Growth = Installs × Activation × (Monetization − Churn) × Virality
└ acquisition ┘ └ onboarding ┘ └ pricing ┘ └ referral ┘
attribution CRO StoreKit/RC K-factor
tells you which
installs actually
work
Why attribution comes first. On iOS post-14.5, if your install measurement is broken, every downstream optimization is flying blind — you can't tell which campaign, creative, or channel produced a paying user, so you scale the wrong spend. The #1 iOS-specific growth bug is "installs going Organic": a marketing SDK fires its install event before the user answers the ATT prompt, so the install is sealed with a zero IDFA and can never be re-attributed. Fix measurement (references/attribution-and-att.md) before scaling acquisition.
Core iOS attribution model (post iOS 14.5, current through iOS 26)
Three layers run simultaneously. A healthy stack wires all three; if only one is connected you lose 30-70% of attribution coverage.
┌─────────────────────────────────────────────────────────────────┐
│ Layer 1 — Deterministic (IDFA) │
│ Requires ATT .authorized (~25-50% opt-in, varies by category) │
│ → full user-level events to AppsFlyer / Adjust / Branch │
├─────────────────────────────────────────────────────────────────┤
│ Layer 2 — SKAdNetwork v4 + AdAttributionKit (iOS 17.4+) │
│ Privacy-preserving, no IDFA, Apple-mediated postbacks 24-48h │
│ Conversion values: fine 0-63 OR coarse low/medium/high │
│ Apple evaluates SKAN + AAK together; one impression wins │
├─────────────────────────────────────────────────────────────────┤
│ Layer 3 — Probabilistic / modeled (MMP-side, where Apple allows) │
│ Statistical modeling for non-consented users │
└─────────────────────────────────────────────────────────────────┘
The two production failures that account for most iOS attribution loss:
- ATT wait-scope trap — the MMP's wait API (
waitForATTUserAuthorization,attConsentWaitingInterval,enableFirstSessionDelay()) only queues that SDK's events. Backend/CAPI sends, direct Meta/TikTok SDK calls, and events fired before the wait is configured still leak with zero IDFA. - Silent consent-denied paths — marketing SDKs early-return without logging when ATT is denied; the dashboard quietly drops 50% of events.
Full diagnosis and code: references/attribution-and-att.md.
Monetization quick rules (apps live and die on subscription economics)
- Never hardcode a price in Swift. Prices come from StoreKit (via RevenueCat).
A hardcoded
$2.50/molabel that drifts from the real charge is an App Review 3.1.2 violation and a refund storm. Full rule: references/paywall-pricing-display.md. - Price the value, not the cost. Set price between the next-best alternative and the customer's perceived value; cost is a floor. Use Van Westendorp / MaxDiff to find the range. See references/monetization-and-pricing.md.
- Model before you ship — pricing is a one-way door. Once a tier is live and purchased, you can't materially raise it without grandfathering chaos. Verify P95/P99 cost-of-service stays below price after Apple's 15%/30% cut.
- Use PPP for international. Lower-income storefronts get stronger discounts
via
asc subscriptions pricing prices import(CSV, dry-run first). See references/ppp-territory-pricing.md. - Onboarding sells the paywall. A 14-screen questionnaire onboarding that surfaces the user's pain, mirrors it back, primes permissions, and lets them use the core mechanic before the paywall converts dramatically better than a cold paywall. See references/onboarding-and-cro.md.
Operating sequence for any growth task
- Identify the pillar (acquisition / monetization / activation / strategy) and route via the decision tree.
- Gather context the reference lists (product, stage, budget, current metrics — ARPU, CAC, conversion, churn, opt-in rate). Ask if not provided.
- For audits (e.g. "is our attribution healthy?", "is our pricing right?"):
produce a scored PASS / WARNING / FAIL per check, citing the exact code call
site (
file:line) in the user's project when fixing. - For new setups: walk the reference's checklist step by step, gating on each prerequisite.
- Always reason about second-order effects (a flash sale trains discount waiting; a loose referral reward attracts fraud) — references/marketing-psychology.md catalogs the traps.
Per-channel acquisition quick reference (iOS)
| Channel | iOS measurement mechanism | ATT dependency | Key SDK |
|---|---|---|---|
| Apple Search Ads (ASA) | AdServices token + AAK/SKAN | Not IDFA-dependent | AdServices API / MMP |
| Apple Search Ads — keyword strategy | — (delegate to ASO/ASA skill) | — | — |
| Google App Campaigns | SKAdNetwork + Firebase events | Required for user-level | Firebase + Google Ads |
| Meta App Install | AEM + SKAN + SDK/CAPI app events | Authorized → IDFA-level signal | Meta SDK / CAPI / MMP |
| TikTok App Install | SKAN + SDK/S2S events | Required for user-level | TikTok SDK / MMP |
| Snap App Install | SKAN | Required | Snap SDK / MMP |
| Branch/Adjust/AppsFlyer/Singular (MMP) | Aggregator across all above + IDFA | Required for user-level | Their SDK |
What this skill deliberately does NOT do
- App Store listing / keyword optimization (ASO) → delegate to the app-store-optimization skill.
- Build upload / TestFlight /
ascrelease flow / submission → delegate to app-store-release. - App Review compliance / privacy-manifest deep audit → delegate to app-review-preflight.
- Web/SPA attribution → use a web-analytics skill.
- Android-only attribution / Privacy Sandbox → Android parity notes only.
- Writing the StoreKit/RevenueCat purchase engine → this skill covers pricing strategy and price display; the transaction code (Transaction listener, entitlement gating) belongs to a StoreKit implementation skill.
References
| File | Covers |
|---|---|
| references/attribution-and-att.md | ATT timing, 4-state consent gating, SKAdNetwork v4 + AdAttributionKit conversion values (incl. iOS 18 PostbackUpdate, AAK server-side postback receiver, SKAN→AAK dual-call regression), per-channel measurement, MMP troubleshooting, pre-launch checklist |
| references/tiktok-channel.md | TikTok Business SDK (vs OpenSDK), SKAN-ownership decision matrix, init order, tiktokAppId/appId, hybrid event_id dedup, Events API S2S |
| references/meta-attribution.md | Meta AEM 7-prereq checklist, "AEM greyed-out" causes, ATE 5-cause list, CUID timing, Conversions API extinfo 16-position positional array |
| references/apple-search-ads.md | ASA readiness gate, CPT-by-category, Target CPT = CPI × CVR, bid-signal table, CPP routing (+15-30%), KPI ranges, budget tiers, 2025-26 product changes |
| references/in-app-events.md | In-App Event card specs/limits, indexed-search names, no-opt-in re-engagement push, algorithmic eligibility |
| references/app-clips-growth.md | App Clips as a discovery→install funnel (3-5×), 15 MB cap, SKOverlay-after-value handoff, card limits |
| references/metrics-benchmarks.md | Per-category Poor/Avg/Good/Excellent bands, formulas, cohort analysis (3 types + 7 mistakes), sourced 2026 subscription benchmarks |
| references/ratings-and-reviews.md | requestReview 3/365 limit, when-to-ask table, pre-prompt survey filter (+0.3-0.8★), per-version reset tradeoff, recovery campaign |
| references/paid-acquisition.md | Platform selection, campaign structure, ad copy/creative, audience targeting, optimization, retargeting, blended CAC |
| references/monetization-and-pricing.md | Value-based pricing, Van Westendorp/MaxDiff, value metrics, tier structure, freemium vs trial, app unit economics, price increases |
| references/paywall-pricing-display.md | StoreKit/RevenueCat as price source of truth, locale formatting, derived savings/trial labels, banned Swift literals |
| references/ppp-territory-pricing.md | asc CLI subscription + IAP territory pricing via CSV import, PPP strategy patterns |
| references/onboarding-and-cro.md | 14-screen questionnaire onboarding framework, permission priming, paywall placement, CRO levers |
| references/launch-strategy.md | ORB channel framework, 5-phase launch, Product Hunt, ongoing launches |
| references/referral-and-viral.md | Referral loop design, incentive sizing, K-factor modeling, fraud prevention, tools |
| references/marketing-psychology.md | 70+ mental models mapped to app marketing applications, pricing psychology |
| references/growth-tactics-library.md | 140 growth tactics by category / stage / budget / timeline |
| references/competitor-pages.md | 4 comparison-page formats, centralized competitor data, SEO + schema |
Scripts
scripts/diagnose-att.sh [project-root]— static-analysis pass for iOS marketing + ATT health (CI-friendly, read-only, no network). Flags the init-order no-op (wait config afterstart()), the capture-protection silent-defer ATT bug, ungated marketing-event call sites, and inventories AppsFlyer/Adjust/Branch/Singular/Meta/TikTok/Firebase/AdMob. Run it as the mechanical first pass of an "is our attribution healthy?" audit, then read references/attribution-and-att.md for the fixes.