Getting Polypane ready for release
In a few weeks, Polypane version 1.0 will be released. In these past few months I’ve been hard at work getting everything ready for that release.
The process has very little to do with the app itself and much more with creating the infrastructure around it. I thought it would be interesting to go through this to show you what it takes.
In order to sell license subscriptions for an app, you’ll need a couple of things:
- A way to accept recurring invoices,
- A legal entity to do so
- A way to validate users and a way to let people actually manage and cancel their subscription,
- Oh, and you need a decent marketing site.
Here’s what it takes to launch a desktop app.
Accepting payments #
There are a bunch of great payment processors around and they all accept money on your behalf. Depending on the payment processor, you’ll have to implement and manage more or less things yourself (like sending invoices). This is just something to figure out: decide what you want to outsource and what you want to do yourself.
There’s a worse aspect to accepting payments for me as a EU citizen and that’s VAT. You see, for some reason the EU decided that European tech companies should have a hard time competing with their international competition, so they made a bunch of stupid rules that make it difficult to just charge for a product.
Here’s how the rules work: If you’re selling a product and physically shipping it to another EU country: no worries, just charge your own countries VAT, or if you’re selling to a company, let them handle their own VAT (this is called “VAT shifted”). You need to know if your customer is a consumer or a company, and charge a different amount. Annoying, but it’s a single price and a single VAT percentage (your countries own).
If you’re selling a digital service however, things get Kafkaesque. If you’re selling to a company anywhere in the EU it’s the same: just let them deal with VAT.
If you’re selling to a consumer though, you have to charge them the VAT percentage of their country. That means you need to know their country, but also keep a list of the VAT percentages of all EU countries and make sure that’s up to date. Then you need to split that out in your taxes. The EU wants companies to die of bureaucracy.
I’m not ready to die of bureaucracy.
Luckily there are also companies that handle all of this for you, they act as “merchant of record” for you. They will charge more than payment providers that don’t do this for you, but if you’re a small company it’s a good trade-of.I went with one of these, called Paddle. We’ll see how it goes.
Managing accounts #
Great, someone has bought a license! Now how do you know they did, and how do you let them use your application?
In my case, I built a license management server that lets people manage their subscription and accounts. Anyone can download the app, but they need to authenticate with this server before being able to use it. The flow is pretty easy: In the application they fill in the email address they registered with, and they get an email with a license key unique to their computer. They fill in that license key and they can use the app. That license key is validated every time the app launches. If the subscription has expired, the app stops working and they’ll need to add a new license. Simple.
That makes sure that only subscribers can use the app, but what if those subscribers need to manage multiple accounts or want to upgrade or cancel their subscription?
That’s actually a bit more work and needs a ton of additional UI: You need to implement the payment API so you know when to create a new user, then generate account details for them and email those to them so they can log in. You need a way for them to change their password, or request a reset if they forget it. After they’ve logged in, they need to be able to upgrade, downgrade or cancel their subscription and if they have a multi-user subscription, they need to be able to add and remove those users and see which of these are active or not.
All of this needs to be easy to use of course, but the subscription management even more so: The alternative is a user cancelling their subscription by issuing a chargeback, and that can really eat into your revenue.
I looked around for something that would do this for me and couldn’t find anything that worked to my satisfaction so in the end I built something myself. It’s completely generic so I can very easily roll it out for other applications. If you’re interested in using it for your app, reach out and I’d be happy to give you a demo.
Legal/business stuff #
I’m keeping this short but it could be its entire own blog post. You need to set up a proper business entity and get a whole bunch of legal docs written like terms of service, privacy statement and disclaimer. Getting this all written is an absolute slog but what helped me was seeing it as a development or design problem. Terms of service become more fun when they’re a puzzle you need to solve.
Getting the word out #
With the infrastructure of allowing people to become customers and then letting them manage their subscription in place, all that’s left is getting the word out. The current site has served me well but it’s pretty simple and basically just a landing page. It’s not suited to take payments and it’s lacking a ton of information, documentation and support details. A large part of the past couple of months have been spent on getting a new site up and running, that’ll be put live on launch day. It features much more previews of Polypane, documentation, a blog and of course a pricing/sign up page.
That leaves us with the planning for getting the word out. I spent a lot of time reading up on this, and one thing that helped me a lot was the Marketing for Developers course (affiliate link). I was a little further along in the process than the course starts with, but it has a lot of useful insights, planning tips and has interviews with a ton of knowledgeable people.
Between now and the release date I’ll be sharing more stuff across various channels. This post is of course part of that. Its a little different in content than you usually see and I hope that’s interesting to other app makers. I’m happy to answer any questions you might have.
If you want to be kept up to date when Polypane is released and get a launch discount when it does, be sure to sign up on Polypane.rocks!