# App Growth

> Grows a mobile app with paid and organic acquisition, attribution, retention and monetization: Apple Ads (campaign structure, match types, negatives, bidding, Maximize Conversions, weekly ROAS work, the Platform API and asc ads), Google App campaigns, Meta and TikTok app ads, ad creatives, cross-channel budget and ROAS, ATT, AdAttributionKit, SKAdNetwork, AdServices, MMPs and the Play Install Referrer, launch plans, press, creators and referrals, onboarding, paywalls, trials, Apple and Google Play subscription offers, and rating prompts. Use when planning or running app ads, setting up attribution or an MMP, deciding a UA budget, checking whether campaigns make money, planning a launch, or improving activation, paywall conversion, retention or ratings.

- Skill: `quegenx/app-growth` (Agent Skill, multi-file: 15 files)
- Install (CLI): `npx get-skill add quegenx/app-growth`
- Raw SKILL.md: https://api.skillmd.com/api/skills/quegenx/app-growth/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: Quegenx (https://skillmd.com/u/quegenx)
- Updated: 2026-11-12
- Page: https://skillmd.com/skills/quegenx/app-growth

---


# App growth

Paid installs only pay off when the platform can see the event that predicts value (a purchase or subscription, not the install) and the spend is judged against an LTV and target CPA written down first. Apple's, Google's, Meta's and TikTok's own docs are the authority for every API, limit, window and rule in these files. Much of the practice is third-party: [eronred] (ASO and growth playbooks, whose benchmarks are its author's claims), [appeeky] (UA skills built on the paid Appeeky API and MCP server, which needs an Appeeky API key) and [rorkai] (the `asc ads` CLI) and [ApparenceKit] (a Flutter starter-kit author's posts on Meta ads, paywalls and pricing). Many workflows here depend on that third-party Appeeky API: the weekly Apple Ads ROAS work, the RevenueCat revenue join, creative generation and the Meta and TikTok tool calls. Each file tags third-party bullets and gives both values where they differ from a platform. Store listings, keywords and ratings strategy are [aso SKILL.md](https://github.com/Quegenx/agent-skills/blob/main/skills/marketing/aso/SKILL.md); builds, releases and the `asc` CLI are [app-store-connect SKILL.md](https://github.com/Quegenx/agent-skills/blob/main/skills/mobile/app-store-connect/SKILL.md) and [google-play SKILL.md](https://github.com/Quegenx/agent-skills/blob/main/skills/mobile/google-play/SKILL.md); purchase code, entitlements, paywalls and subscription webhooks are [revenuecat SKILL.md](https://github.com/Quegenx/agent-skills/blob/main/skills/backend/revenuecat/SKILL.md).

Apply only the routes and checks for the selected job. Read a linked skill's named file from its installed folder when available, or from the linked source. Report an unavailable required reference instead of inventing it. [skill-authoring, DISTRIBUTION.md#composing-skills]

| The job | Read |
|---|---|
| Apple Ads placements, campaign structure, match types, Search Match, negative keywords, max CPT, CPA cap, Maximize Conversions, ad variations, metrics | [APPLE-ADS.md](APPLE-ADS.md) |
| Weekly Apple Ads routine, pacing, bid rules, search term mining, keyword ROAS with RevenueCat, scaling (admaxxing), the Appeeky `asa_*` tools | [APPLE-ADS-OPTIMIZATION.md](APPLE-ADS-OPTIMIZATION.md) |
| Apple Ads Platform API and the deprecated Campaign Management API v5, OAuth, rate limits, `asc ads` commands, v5 to v1 map | [APPLE-ADS-API.md](APPLE-ADS-API.md) |
| Google App campaigns: subtypes, Firebase conversion tracking, bidding, budget and learning, asset specs, iOS App campaigns, troubleshooting | [GOOGLE-APP-CAMPAIGNS.md](GOOGLE-APP-CAMPAIGNS.md) |
| Meta app ads: prerequisites, objectives, campaign and ad set setup, Advantage+ app campaigns, SDK (including the Facebook SDK in Flutter) and Conversions API, SKAN and AEM limits, audits, budget optimization | [META-ADS.md](META-ADS.md) |
| TikTok App Promotion: setup, bidding and learning, iOS 14.5+ dedicated campaigns, creative formats and hooks, Spark Ads, audits | [TIKTOK-ADS.md](TIKTOK-ADS.md) |
| Static ad creatives from a store listing, variant batches, edits, pushing creatives to Meta, competitor ad teardowns | [AD-CREATIVES.md](AD-CREATIVES.md) |
| Routing ads questions, the ads context document, channel choice, cross-channel budget, MMP setup and verification, subscription snapshot, campaign profitability | [BUDGET-AND-ROAS.md](BUDGET-AND-ROAS.md) |
| Analytics stack, metrics, event plan, dashboards, crash analytics, ATT, AdAttributionKit and SKAdNetwork, conversion value schema, AdServices, MMPs, Android attribution, deep links | [ANALYTICS-AND-ATTRIBUTION.md](ANALYTICS-AND-ATTRIBUTION.md) |
| Shared product-context handoff, launch calendar and channels, app press and creator programs, mobile referral applications, store recovery handoff | [LAUNCH-AND-MARKETING.md](LAUNCH-AND-MARKETING.md) |
| Activation event and how to find it, the onboarding screen audit, permission timing, sign-up friction, onboarding flows, the onboarding paywall | [ONBOARDING.md](ONBOARDING.md) |
| Paywall funnel, seven-element audit, placement and timing, display patterns, A/B tests and sample sizes, after the paywall, Apple and Google Play rules for the paywall layout | [PAYWALLS.md](PAYWALLS.md) |
| Monetization model and pricing, store price increases, trials, subscription lifecycle, cancel flows and Retention Messaging, dunning and grace periods, win-back, retention, what's-new sheets and feature voting, web-to-app funnels, rating prompts | [RETENTION-AND-MONETIZATION.md](RETENTION-AND-MONETIZATION.md) |
| Apple introductory, promotional and win-back offers and offer codes; Google Play base plans, offer phases and eligibility | [SUBSCRIPTION-OFFERS.md](SUBSCRIPTION-OFFERS.md) |
| Web conversion campaigns (Google Search, Performance Max, Meta for web, LinkedIn, B2B, ad account audits); web ad copy | [paid-ads SKILL.md](https://github.com/Quegenx/agent-skills/blob/main/skills/marketing/paid-ads/SKILL.md); [ad-creative SKILL.md](https://github.com/Quegenx/agent-skills/blob/main/skills/marketing/ad-creative/SKILL.md) |

## The rules

1. **Make the value event reach the platform before spending.** An unregistered or unlinked Meta app optimizes for link clicks; Google App campaigns should optimize toward an in-app action at least 10 different users complete per day; TikTok App Install campaigns can optimize for an in-app event (AEO). For a subscription app that event is Purchase or Subscribe, never the install.
2. **Respect ATT exactly as Apple writes it.** Add `NSUserTrackingUsageDescription`, ask only while the app is active, never gate features on the answer or reward it, and don't fingerprint. AdAttributionKit, SKAdNetwork and AdServices don't need ATT.
3. **Integrate AdAttributionKit and SKAdNetwork together and call both update APIs,** starting at first launch. Only the first postback carries the 0 to 63 fine value; postbacks 2 and 3 carry only `low`, `medium` or `high`. Measure Apple Ads through AdServices (`AAAttribution.attributionToken()`), and on Android read the Play Install Referrer.
4. **Structure Apple Ads the way Apple recommends:** brand, category and competitor campaigns with exact keywords and Search Match off, plus a discovery campaign whose winning terms move to exact. Relevance decides whether an ad shows, so no bid buys an irrelevant search. Negatives follow Apple's matching: negative exact blocks only the exact term, negative broad blocks when all its words are present in any order.
5. **Size budgets to the target, then leave learning alone.** Google: a daily budget of at least 10× target CPA (50× target CPI), changes within 10 to 20%, then 7 to 14 days of stability. Apple Maximize Conversions: a budget for at least five conversions a day, run two weeks before judging. TikTok AEO: at least 20× historic CPA for upper and mid-funnel events, 10× for lower-funnel. Meta: no changes during the learning phase.
6. **Move Apple Ads code to the Platform API before January 26, 2027,** when the Campaign Management API v5 is sunset: `https://api.ads.apple.com/v1/` with `X-AP-Context: adAccountId=...`, never an org ID. On a `429`, wait `Retry-After`.
7. **Follow the stores' purchase and review rules.** Say what the subscription gives before asking for it, with a period of at least seven days (Guideline 3.1.2), and make the billed amount the most prominent price: Apple and Google Play both reject a monthly or daily breakdown that outweighs it. Ask for ratings only through the system APIs, never from a button and never with an incentive. Apply [storefront-specific purchase-link rules](https://github.com/Quegenx/agent-skills/blob/main/skills/mobile/app-store-connect/PRICING-AND-SUBSCRIPTIONS.md#external-purchase-links-us-and-eu); US storefront links/buttons do not require these entitlements. The old rule required an entitlement everywhere. [https://developer.apple.com/app-store/review/guidelines/]
8. **Treat third-party numbers as starting points, and let the platform win a conflict.** Where an [eronred] or [appeeky] benchmark, threshold or budget differs from a platform's doc, use the platform's and confirm it in the current docs. Judge ROAS and CPA against your own LTV and target CPA, not generic benchmarks. Count installs and revenue once, from the store or RevenueCat, never as the sum of what each network claims.

## Prove it

Apply these checks only to the selected platform and growth task: campaign tracking uses its actual platforms and MMP, Apple attribution uses the chosen Apple flow, Apple Ads API work checks its endpoint, and onboarding/paywall/retention work follows its selected topic. Do not require unrelated ad-network integrations for a focused growth task. [APPLE-ADS-API.md; ANALYTICS-AND-ATTRIBUTION.md; ONBOARDING.md; PAYWALLS.md; RETENTION-AND-MONETIZATION.md]

A fresh install on a real device reaches the MMP and each ad platform's events manager with the optimization event before any campaign spends; the ATT prompt appears only while the app is active and gates nothing; a development impression in AdAttributionKit Developer Mode produces a postback; a fresh AdServices token returns 200; no Apple Ads code calls `api.searchads.apple.com/api/v5`; every budget and bid change has the data and stability window its platform asks for; and every file's own Prove it checks pass for the parts you touched.

