Currently, the trial period is "risk free" / "no obligation" but not actually a free trial per se: we bill you at the end of it, and you decide whether to pay the bill and continue with the service or disable your instance.
This is communicated somewhat clearly, but is definitely not as straightforward as it should be. It's also simply harder to communicate than "free for 30 days" would be.
It works like this because it was technically easier and I was worried about a bad worst-case where we have more signups than the infrastructure can handle, but we have plenty of time to revisit this now and the infrastructure is stable and scaling cleanly. In particular, I'm not concerned about our ability to onboard a large number of new instances since, at least for the forseeable future, we're in a good state where we just dump more hardware into the cluster and things take care of themselves. We also aren't cashflow constrained and a 60 day (or longer) delay between signup and revenue is fine.
In particular, I'd like to start with this billing scheme:
- 30 days free.
- (For simplicity, this is probably actually the longer of 30 days or first billing period's length, so you can save a few percent by signing up in a month with 35 or 40 days.)
- When we go to generate a bill, check whether the instance is in a trial period that's ending during the next billing cycle. If it is, send a "Your free trial is ending." email.
- Tell users what to expect.
- Tell users how to move forward if they want to keep the service vs stop service.
- When we generate your first real invoice, add language telling users they can just not pay it if they didn't want to continue service and just forgot to cancel.
- Change policy to disable instances which miss their first bill fairly aggressively (e.g., one week, so 67 days from signup to suspension).
This effectively gives installs 30 days free and ~67 days of "trial".
We could experiment with longer trials, more contact, more reminders/warnings, more selling/followup, etc., but I want to get this in place as a sort of basis case first so users aren't confused about when they'll be billed or how to move forward.