How I set up a $29 preorder I can defend, before writing the app
Published September 12, 2026
Hey all. I'm preselling a Mac app and the preorder mechanics took more reading than the landing page did, so here's what I found. Most of it applies to anyone taking money for something that doesn't exist yet.
Deskthaw is a menu bar app that prompts guided desk stretches. The $29 preorder gate lands on 27 September, with delivery expected by 31 March 2027.
1. Decide what the test has to answer.
A free waitlist tells you people liked the idea. It can't tell you whether one of them would have paid. Both are on the page because they answer different questions. The free signup asks which parts hurt, and those answers set build order. The $29 answers whether any of it is worth money.
2. Write the gate down before launching, with a number.
Mine is five charged preorders by 27 September, plus at least 3 percent of visitors joining the waitlist across at least 200 targeted visits. A range would have been useless here, because 3.5 percent would then be whatever I needed it to be. Miss it and the build doesn't start. I get one two-week extension if I have a reason worth logging, and after that it's a kill memo and refunds. Write the number first, because afterwards you can always argue that whatever you got was encouraging.
3. Don't be the one filing sales tax in 80 countries.
Stripe Managed Payments makes Stripe the merchant of record. Stripe is the seller for the transaction, charges the card, registers and remits sales tax in 80+ countries, sends the receipt and handles disputes, for 3.5 percent on top of processing. You're still a taxpayer on the income, but you're not the one filing VAT in twelve jurisdictions. You could administer that yourself or pick a different merchant of record, but this is what made selling internationally practical for me. The catch is that the receipt comes from Link and the statement usually reads LINK.COM* DESKTHAW, or another Stripe descriptor depending on how they paid. That looks like a mystery charge unless your page says so first, so mine does.
4. Write terms that survive the date slipping.
This took the longest of anything here. In the US, 16 CFR 435 governs dated preorders, and there's no exemption for software or electronic delivery. The only carve-outs are serial subscriptions, seeds and plants, C.O.D. and negative-option plans. If you can't ship by your stated date you have to offer a cancel-or-consent choice "clearly and conspicuously and without prior demand", meaning proactively, not when the buyer chases you. Past thirty days or with no end date, the order is automatically cancelled unless the buyer expressly consents. Silence cancels rather than consents. That's in my terms in plain words, and the date went from "early 2027" to a definite 31 March 2027, because the rule wants a date you have a reasonable basis for.
5. Check your own state before writing warranty and liability terms.
I assumed the usual "as is, liability limited to what you paid" boilerplate was safe to copy. Then I read my state's version and stopped trusting half of it. Massachusetts treats an attempted warranty disclaimer in a consumer sale as unenforceable, and it presumes a cap on damages for physical injury is unconscionable. I couldn't establish that a downloadable app definitely sits outside either rule, and that was enough. A term that might not survive is worse than no term, because it tells a buyer you tried to cap what you would owe them if you hurt them. So I left the implied warranties in place instead of disclaiming them, and the liability cap now covers only what the law clearly lets me cap. Personal injury and fraud sit outside it. Your state will differ. Spend the hour on yours, and if you're selling anything with a physical dimension, start with the personal-injury carve-out.
6. Prove the hard technical claim before charging for it.
Deskthaw's pitch is that it stays quiet when you're busy, which on macOS means detecting that with no permission prompt at install. I built a throwaway poller first. Frontmost app, mic and camera in use, and idle all work prompt-free. Fullscreen reads the same window data but that path isn't exercised end to end yet. Screen sharing needs Screen Recording permission, so I don't detect it and the page doesn't claim it. Focus mode needs an entitlement a Developer ID build may not get, so it's out. It took two days and it changed what the landing page is allowed to say.
7. Have your privacy policy read against your actual backend, and not by you.
The two drift apart quietly, and you stop being able to see it on your own page. Two that catch people are rate limiting, which means you're processing IP addresses, which is personal data and is usually missing from the policy, and the purchase receipt, which is transactional and so deliberately carries no unsubscribe link, falsifying any sentence that promises one on every email. If your policy was drafted before the code settled, it's worth an hour with someone else's eyes.
8. Price against what actually ships, then say what the comparison decided.
LookAway is $19 for one Mac and DeskRest is $24.99 lifetime, both available today, and I'm above both at $29 for something unreleased. The comparison is what told me the premium can't rest on the pausing, because those two already pause. So $29 tests whether guided stretches for the part that hurts are worth more than a better timer. If nobody bites I'll know the premium or the offer didn't land, though not which of the two, and that's a cheaper thing to learn now than after a year of building.
The 27th tells me whether this is worth carrying on with. Either way I'll post the number.
Happy to go deeper on the Stripe merchant-of-record setup or the preorder terms. Those two took the most reading.
Happy to go deeper on the Stripe merchant-of-record setup or the preorder terms. Those two took the most reading. Email [email protected].