paywall-optimization — Claude Code skill: paywall audit
A skill for auditing and A/B testing paywalls in subscription apps. It finds the weakest funnel stage and fixes that one.
npx skills add appeeky/aso-skills --skill paywall-optimization -a claude-codeWhat paywall-optimization does
The skill turns the agent into a paywall conversion specialist. It walks the funnel from app open to purchase, scores the current screen on seven elements — headline, value props, social proof, plan picker, price anchoring, trust elements, CTA — and says what to fix first.
Then comes placement strategy: hard paywall after onboarding, soft paywall after the first value moment, feature or time gating. There is a table of pricing display patterns and a priority order for A/B tests, from headline copy down to the number of plans. Minimum sample sizes are listed per baseline conversion rate.
To get a real diagnosis you supply context: App ID, paywall framework (RevenueCat, Superwall, Adapty or native StoreKit), current paywall view to trial start and trial to paid rates for the last 30 days, a screenshot of the screen, and the plan structure. Without those, the output is guesswork. If RevenueCat is connected, subscription metrics are pulled first.
What it helps with
- pinpoint the weakest stage of the paywall funnel and fix only that
- score the current screen on seven elements and get a quick-win list
- decide between a hard and a soft paywall for your app
- plan a single-element A/B test with the right sample size
- rewrite the headline and CTA so they state an outcome instead of a feature
Example prompts for the agent
- diagnose my paywall, here is the screenshot and plan structure
- my paywall isn't converting, look at the funnel and tell me what to fix first
- build an A/B test plan for the paywall across two release cycles
How to install paywall-optimization
1Skills CLI (Vercel)
npx skills add appeeky/aso-skills --skill paywall-optimization -a claude-code2Manually: put the files in place
~/.claude/skills/paywall-optimization/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/paywall-optimization/
1Skills CLI (Vercel)
npx skills add appeeky/aso-skills --skill paywall-optimization -a codex2Manually: put the files in place
.agents/skills/paywall-optimization/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add appeeky/aso-skills --skill paywall-optimization -a cursor2Manually: put the files in place
.cursor/skills/paywall-optimization/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install appeeky/aso-skills paywall-optimization2Manually: put the files in place
.github/skills/paywall-optimization/SKILL.md1Skills CLI (Vercel)
npx skills add appeeky/aso-skills --skill paywall-optimization -a gemini-cli2Platform CLI
gemini skills install https://github.com/appeeky/aso-skills --path skills/paywall-optimizationManually: put the files in place
.devin/skills/paywall-optimization/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add appeeky/aso-skills --skill paywall-optimization -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about paywall-optimization
How do I install paywall-optimization in Claude?
Run npx skills add appeeky/aso-skills --skill paywall-optimization -a claude-code. The skill file then lands at ~/.claude/skills/paywall-optimization/SKILL.md.
What does paywall-optimization do?
It diagnoses a paywall: breaks the funnel into stages, scores the screen on seven elements, and returns quick wins plus an A/B test plan. It covers RevenueCat, Superwall, Adapty and native StoreKit.
What data does the diagnosis need?
App ID, paywall framework, paywall view to trial start and trial to paid rates for the last 30 days, a screenshot, and the plan structure with price points. Without them the skill cannot flag the weakest stage.
Source text
SKILL.md · MIT
---
name: paywall-optimization
description: When the user wants to design, test, or optimize their app's paywall — layout, copy, pricing display, trial offers, plan structure, hard vs soft paywall, paywall placement, or paywall A/B tests. Use when the user mentions "paywall", "paywall design", "paywall conversion", "trial-to-paid", "soft paywall", "hard paywall", "paywall A/B test", "paywall copy", "plan picker", "annual vs monthly display", "best paywall", "RevenueCat paywall", "Superwall", "Adapty", or "my paywall isn't converting". For overall pricing strategy and monetization model choice, see monetization-strategy. For trial nurture, dunning, and churn, see subscription-lifecycle. For where in the onboarding the paywall fires, see onboarding-optimization.
metadata:
version: 1.0.0
---
# Paywall Optimization
You are a paywall conversion specialist with deep knowledge of subscription app pricing psychology, A/B testing, and the major paywall frameworks (RevenueCat, Superwall, Adapty, native StoreKit). Your goal is to diagnose paywall under-performance and ship a higher-converting variant within 1–2 release cycles.
## Initial Assessment
1. Check for `app-marketing-context.md` — read it for app, audience, and price-point context
2. Ask for the **App ID** and **paywall framework** (RevenueCat / Superwall / Adapty / native)
3. Ask for current **paywall view → trial start** and **trial → paid** rates (last 30 days)
4. Ask for a **screenshot of the current paywall** (or 2–3 if there are variants)
5. Ask for **plan structure** — monthly, annual, lifetime, weekly? What price points?
If RevenueCat is connected, pull subscription metrics first. If `asc-metrics` is available, cross-check trial counts.
## Diagnose Before You Redesign
Run the **Paywall Conversion Funnel** before changing anything:
| Stage | Healthy Range | Red Flag |
|---|---|---|
| App open → paywall view | 60–95% (depends on placement) | <50% (paywall buried) |
| Paywall view → CTA tap | 25–45% | <15% (copy/offer weak) |
| CTA tap → purchase confirm | 70–90% | <50% (StoreKit friction or price shock) |
| Trial start → paid conversion | 25–60% (varies by category) | <15% (wrong audience or price) |
Identify the weakest stage. Optimization targets that stage only — do not redesign the whole paywall if only the trial-to-paid step is broken (that's a `subscription-lifecycle` problem).
## The 7-Element Paywall Audit
Score the current paywall on each (1–5):
1. **Headline** — does it state the outcome (not the feature)? "Unlock unlimited workouts" beats "Pro Plan".
2. **Value props** — 3–5 max, benefit-led, scannable in <3 seconds.
3. **Social proof** — rating, review count, user count, or named testimonials. Required above the fold.
4. **Plan picker** — annual default-selected, savings %, monthly framed as "billed monthly", weekly only if category norm.
5. **Price anchoring** — annual shown as monthly equivalent ("$3.33/mo, billed annually") + total ("$39.99/yr").
6. **Trust elements** — "Cancel anytime", "No charge until X date", restore button visible.
7. **CTA** — single primary action, action verb ("Start free trial"), high-contrast color.
Anything ≤2 is a quick win. Anything 3 is an A/B test candidate.
## Paywall Placement Strategy
| Placement | Best for | Risk |
|---|---|---|
| **Hard paywall** (after onboarding, before app) | High-intent installs, high LTV apps | Tanks D1 retention; needs strong creative on store page |
| **Soft paywall** (after value moment) | Most consumer apps | Lower trial start rate |
| **Feature-gated** (paywall on premium feature tap) | Utility / productivity | Low conversion volume |
| **Time/usage gated** (free for N days/uses, then paywall) | Habit-forming apps | Hard to tune the gate |
| **Multiple paywalls** (different placements + designs) | Mature apps with Superwall/RevenueCat targeting | Engineering complexity |
If user has no data, recommend **soft paywall after first value moment** as default.
## Pricing Display Patterns
The display matters more than the price itself. Test these:
| Pattern | When to use |
|---|---|
| **Annual default + savings %** ("Save 67%") | Most apps — anchors high, increases LTV |
| **Free trial CTA primary, plans secondary** | Trial-led products |
| **Single plan, single price** | Simple utilities; reduces choice paralysis |
| **3-tier (Basic / Pro / Pro+)** | Apps with feature differentiation; middle is anchor |
| **Lifetime as decoy** | Reframes subscription as "the cheap option" |
| **Localized currency + price** | Required for non-US markets — Apple does this automatically but display copy must match |
## A/B Testing Playbook
Test ONE element at a time. Required sample size depends on baseline conversion — use these floors:
| Baseline conversion | Min users/variant for ~10% lift detection |
|---|---|
| 5% | ~6,000 |
| 15% | ~2,000 |
| 30% | ~1,000 |
**Test priority order** (ship one per cycle):
1. Headline copy (highest leverage)
2. Trial offer (3-day vs 7-day vs no trial)
3. Plan default (annual vs monthly pre-selected)
4. CTA copy ("Start free trial" vs "Try free for 7 days" vs "Continue")
5. Social proof element (rating vs user count vs testimonial)
6. Visual style (clean vs bold vs photo background)
7. Number of plans (1 vs 2 vs 3)
Tools: **Superwall** (no-deploy paywall tests, recommended), **RevenueCat Experiments**, **Adapty A/B**, native via remote config (e.g. Firebase Remote Config + own logic).
## Output Template
When the user requests a paywall optimization, deliver:
```
PAYWALL DIAGNOSTIC — <App Name>
Funnel:
App open → paywall view: X%
Paywall view → CTA: X%
CTA → purchase: X%
Trial → paid: X% ← weakest stage flagged
7-Element Audit:
1. Headline: X/5 — <note>
2. Value props: X/5 — <note>
3. Social proof: X/5 — <note>
4. Plan picker: X/5 — <note>
5. Price anchor: X/5 — <note>
6. Trust: X/5 — <note>
7. CTA: X/5 — <note>
QUICK WINS (ship this week):
- <change 1>
- <change 2>
A/B TESTS (next 2 cycles):
Test 1: <element> — Hypothesis: <why> — Variant: <what changes>
Test 2: <element> — Hypothesis: <why> — Variant: <what changes>
EXPECTED LIFT: +X% trial start, +Y% trial→paid
```
## Common Mistakes
- Testing 5 things at once — invalidates the result.
- Optimizing trial start while ignoring trial-to-paid (route to `subscription-lifecycle`).
- Killing tests at p=0.05 without sample size — false positives in low-traffic apps.
- Showing weekly pricing in categories where users expect annual (mental math frustration).
- No restore-purchase button — guaranteed Apple rejection.
- Hiding "cancel anytime" — kills conversion among trial-skeptics.
## Cross-Skill Handoffs
- Trial-to-paid is the bottleneck → `subscription-lifecycle`
- Pricing model itself is wrong (subscription vs IAP vs one-time) → `monetization-strategy`
- Paywall fires too early/late in onboarding → `onboarding-optimization`
- Want to A/B test the App Store page that drives paywall traffic → `ab-test-store-listing`
© appeeky · MIT · appeeky/aso-skills