Why Undulate Costs $3.99 Once — And Nothing Ever Again
There's a specific moment I kept coming back to while building Undulate. Someone is on the floor of a bathroom stall, or in their car before work, or lying awake at 3am. Their chest is tight. Their hands are shaking. They open the app.
That is the worst possible moment to put a paywall in front of them.
Not because a subscription is immoral — subscriptions fund real engineering, and plenty of good apps run on them. But because the thing a person mid-panic needs is instant access to something that helps. Not a pricing screen. Not a "start your free trial" button. Not a modal asking them to create an account before they can breathe.
That's the core of why Undulate is a one-time $3.99 purchase. I want to write out the full reasoning here, including the parts that cost me something.
The Emergency Tool Problem
Breathing apps usually get bucketed alongside meditation apps, sleep apps, and wellness subscriptions. The implicit model is: you're building a habit, you use this thing daily, and you pay monthly for ongoing access to new content, personalized plans, streak tracking.
That model makes sense for Headspace. It makes no sense for what Undulate actually is.
Undulate is an emergency tool. You open it when something is already happening — you feel the first edges of panic, you're about to walk into a meeting that's making you anxious, your nervous system is running hot and you need to shift it. The use case is acute, not habitual. You don't subscribe to your fire extinguisher. You just need it to be there and work immediately when the moment comes.
A subscription creates friction at exactly the wrong moment: the renewal notice, the expired card, the nag screen you didn't expect. If Undulate went behind a paywall mid-month because someone's card failed, and that person needed it that day — that's a product failure I'm responsible for.
One-time purchase means the app is yours. It's there when you need it. That's the deal, and it doesn't have conditions.
Subscriptions Require Accounts. Accounts Require Data.
Here's the part most people don't think about: subscriptions almost always require an account. And accounts mean I'm storing something about you — at minimum, an email address, a purchase record, maybe a device ID.
I specifically did not want to store anything about Undulate users. Not because privacy is a marketing angle, but because of what the app is for. Someone using a breathing app during anxiety or panic hasn't signed up for their mental health data to live on a server I run. The implied contract of opening a health-adjacent app should not be "and we now have a record that you were anxious at 11:47pm on a Tuesday."
One-time purchase through the App Store means Apple handles payment and receipt verification. I never see your email. I don't know who you are, when you opened the app, how many times you used it, or which breathing mode you prefer. Undulate knows nothing about you. That's intentional, and it only works because the business model doesn't require me to know.
This isn't a small thing. Every design decision downstream follows from it. No onboarding flow that captures your name and email. No progress tracking that syncs to a server. No push notifications that require a device token I'm storing. The architecture is simple because the data model is empty.
What I Gave Up
I want to be honest about this part, because I've seen builders romanticize one-time pricing as obviously correct and subscriptions as obviously extractive. It's not that clean.
Subscriptions give you predictable monthly revenue. They give you LTV numbers that investors understand. They fund ongoing development in a way that doesn't require constantly finding new users. Churn analysis tells you where you're failing. Renewal data tells you if the product is actually working for people over time.
One-time pricing gives you none of that. My revenue is entirely dependent on new downloads. I have no way to know if someone who bought the app six months ago still uses it or deleted it the next day. There are no cohorts to analyze, no retention graphs, no SaaS metrics. From a business modeling perspective, it's a harder position to be in.
I also can't do much in the way of ongoing pricing experiments. $3.99 is the price. I can change it, but there's no "plan tier" flexibility, no annual vs monthly lever to pull, no way to make the economics work better by adding a premium tier later without breaking the original promise.
I made this decision knowing all of that. It's not naive — it's a tradeoff I chose because the alternative felt wrong for what the product is.
The Math That Made It Okay
Undulate is a solo project. I'm not running a team, paying for offices, or managing investor expectations. The cost structure is low enough that the one-time model is viable in a way it might not be for a larger operation.
I also don't need Undulate to be my only revenue source forever. It needs to be a useful product that I can honestly stand behind, that pays for its own development, and that helps real people when they need it. That's a very different bar than "maximize LTV and reduce churn to below 5% monthly."
If you're building a solo tool for a specific, meaningful use case, one-time pricing is worth considering seriously — not as a principled stance, but as a practical fit. The apps where this breaks down are the ones that genuinely need ongoing infrastructure: sync services, real-time features, large content libraries. Undulate doesn't have any of those. It's five breathing modes and haptic feedback. The marginal cost of each additional user is effectively zero. Charging monthly for that would be padding the bill.
The Free Link Is Part of the Same Logic
There's a free version of Undulate that anyone can access in any browser at undulate.app/calm. One 60-second guided breathing session. No account, no download, no credit card. It just works.
I built this because there are situations where you need help immediately and you can't download an app. Maybe you're on someone else's phone. Maybe you're mid-panic and navigating the App Store is too much. Maybe you want to know if the approach even works before you spend anything.
The Emergency Calm Link isn't a lead-generation tactic. It's an extension of the same logic as the one-time pricing: the person who needs help right now should be able to get it without friction, money, or an account. If someone uses the free link regularly and never buys the app, I'm genuinely fine with that.
The test I keep coming back to
When evaluating any product decision for Undulate, I ask: would this make sense to someone whose hands are shaking? If a feature requires focus, patience, or administrative decision-making to use, it doesn't belong in the critical path. Pricing is a product decision. The answer had to be: pay once, never think about it again.
What This Means for the Product
Pricing shapes product design more than most builders acknowledge. When your revenue depends on monthly retention, you build for engagement: streaks, notifications, content variety, reasons to come back every day. When your revenue comes from a one-time sale, you build for the moment of purchase and the moments of actual use.
I don't need Undulate to be opened daily. I need it to work correctly when someone opens it because they need it. Those are different optimization targets, and they pull product decisions in different directions.
Undulate has no streak mechanics. No notification nudges. No "you haven't breathed today" reminders. No dashboard of your past sessions. These aren't features I cut for lack of time — they're features that would make the product worse at its actual job. An app that gamifies your calm is an app that's optimizing for engagement, not relief.
The one-time pricing model lets me not build those things and be fine with it. There's no pressure to maximize opens-per-week. The business doesn't need it. So the product doesn't have it.
The Honest Uncertainty
I don't know if this model sustains the project indefinitely. I don't know if I'll eventually need to introduce something — a version two, an expanded feature set, something that justifies a different pricing approach. I'm not claiming one-time pricing is the right answer for every app in this category.
What I can say is that for Undulate, as it exists right now, it's the only answer that felt honest. The app is for people who are having a hard time. Charging them a monthly fee to continue having access to a tool they already paid for would be the wrong relationship to have with them.
$3.99. Yours. No conditions.
That's the deal I wanted to offer, and it shapes everything else about how the product is built.
If you're experiencing acute distress or mental health crisis, please reach out to a professional or contact the 988 Suicide and Crisis Lifeline (call or text 988).
The free Emergency Calm Link at undulate.app/calm gives you one 60-second guided breathing session in any browser. No account. No download. If it helps, the full app is $3.99 — once, with all 5 breathing modes and haptic feedback.
Download on App StoreFurther Reading
If you're here because you're evaluating breathing apps on pricing and privacy: best breathing apps without a subscription is an honest comparison of what's out there. If you're building something and thinking through the same decisions: the Calm alternatives post lays out how the category works from a user's perspective, which shaped a lot of these choices.