Skip to content
    Field notes

    Every New User Is Costing You Money. That's Not Growth.

    An AI app with no paywall isn't unmonetized — it's a machine that converts your credit card into other people's free features, and it runs faster the better your launch goes.

    3 min read

    Here's a launch that looks like a success and isn't.

    The post did well. Downloads climb for three days. People are using the AI feature — really using it, more than you expected. Your provider dashboard climbs alongside the download count.

    And your revenue is zero, because you haven't built the paywall yet.

    This is the trap specific to AI apps, and it's new. A normal app with no monetization is just unmonetized. Users cost you close to nothing, and you can add payments whenever you get around to it. An AI app with no monetization is a machine that converts your credit card into other people's free features, and it runs faster the better your app does.

    Why the paywall is always last

    Not because anyone thinks it's unimportant. Because of what's fun.

    The AI feature is the interesting part. It's what you wanted to build, it demos well, and a model can generate a working version of it in an afternoon. Subscriptions are the opposite: unglamorous, fiddly, and impossible to test properly without store config, sandbox accounts, and a real device.

    So the order everyone follows is: build the thing, ship the thing, monetize later. With most apps that order costs you nothing. With an AI app it costs you per request, forever, starting the day it works.

    What "add payments later" actually involves

    It's worth being honest about the size of this, because "add a paywall" sounds like an afternoon and isn't.

    There's the purchase flow, and receipt validation. Entitlement state that survives an app restart, a reinstall, and a device switch. Restore purchases, which Apple requires and will reject you for missing. Someone who subscribed on iOS opening the app on Android. A subscription lapsing mid-session. Refunds.

    Then there's the part specific to you: usage limits. Free tier caps, what happens at the cap, whether limits reset daily or monthly, and how the app behaves when a user hits one. None of that is standard code — it's a product decision that has to be made and then enforced in the code.

    Retrofitting all of this into an app that was built assuming everything is free is not a feature addition. It's a rewrite of your app's core assumption, done under time pressure, on the least testable part of mobile development.

    The version where this doesn't happen

    If subscriptions and entitlements exist from your first commit, the free-versus-paid boundary becomes a product question you answer early, while you're designing the feature.

    How many free generations? What does the wall feel like when someone hits it? What's worth paying for? These are good questions and they make the product better. Asked at the start, they shape what you build. Asked two days before launch while your provider bill is compounding, they turn into whatever you can implement fastest.

    The apps that make money aren't the ones that added a paywall well. They're the ones that knew what they were selling before they built it.

    Where to start instead

    ShipAppFast is a production-ready Flutter template with payments and the paywall already wired, alongside authentication, push notifications, and native AI support.

    Subscriptions are there from commit one, so the entitlement plumbing is done and the only thing left is your decision about what's free and what isn't. That decision belongs at the beginning of a project. This is the version where you get to make it there.

    Downloads aren't traction if each one costs you money.

    shipappfast.site