Customers are always requesting new features, as they should, and we’d like to spend all of our time on those requests. Unfortunately, there are other areas that need attention as well. We’ve recently put a hold on new things and made some serious improvements to Sifter that very few people will ever notice.
What’s been happening?
The last month or so we’ve been refactoring our billing logic and administrative tools to as well as improving some of the back-end processes and some of the interface around managing billing information.
This has been the most ambitious and overwhelming release for Sifter since launch. Ironically, it’s almost invisible to the average user. Even to account holders it will be barely noticeable. However, it has dramatically simplified and cleaned up the largest and most cumbersome module of code within Sifter.
Credit Cards & Trials
When we initially launched, we consciously made a decision not to promote the fact that you could signup for Sifter without a credit card. We knew that we’d lose some potential customers, but that was a tradeoff we were willing to make in order to feel more confident that the people who signed up were seriously interested in Sifter.
Naturally, we’ve received a handful of emails from people letting us know that they disagreed with our decision, but we weren’t in a huge hurry to change it. We knew we wanted to change this. We just weren’t sure when.
We finally decided make the update so that credit cards wouldn’t even be mentioned until you were ready to provide one. Unfortunately, that change wasn’t trivial, and it rippled through our billing and account management system. More importantly, it was a change that didn’t directly benefit our existing customers. So it was continually put off as we focused on adding new features to help existing customers.
Entirely removing credit cards from the registration process was only a small piece of the solution. So, in the interest of openness, and making sure it doesn’t seem like we’re sitting around twiddling our thumbs, here’s a little more insight into the latest release.
For subscription-based businesses with a free trial that collect credit card information days in advance of billing, you want to validate the credit card before accepting it. This creates pending authorizations, which, if not collected or voided, will disappear within a couple of days.
The credit card companies refer to these as ghost authorizations. They lock up the amount for the credit holder until the authorization disappears, and in some cases, it causes confusion for people who think they’ve been charged when they haven’t. In the near future, some, if not all, of the credit card companies will begin penalizing merchants for ghost authorizations.
As a result, we needed to update our code so that we didn’t leave any ghost authorizations lying around. This wasn’t a huge change, but anytime we’re talking about handling money, it’s not something that you want to take lightly. Interestingly, this was one of the more enjoyable pieces of work in this release.
Old Accounts Cleanup
Sifter doesn’t offer perpetually free trials, and I don’t anticipate that changing anytime soon. We made this decision early on, and it’s one that we believe in deeply. We’re incredibly liberal about extending trials, but we believe that the majority of our attention and resources should be spent on paying customers. We also want to discourage people from squatting on good account subdomains.
In order to keep things running smoothly, we’ll begin automatically purging old and unused accounts. Sixty days after a trial has expired, if the account hasn’t been upgraded to a paying account or had the trial extended, we’ll automatically schedule the account for deletion and notify the account holder of the impending deletion. Two weeks after the notification, we’ll automatically delete the account and all of its data.
Paying customers, that is customers who have at least one paid invoice, will now be able to place their account on hold. Accounts that are on hold will not be billed, but will also not be usable. The basic administrative features will still be accessible, but the rest of the interface will not be available until the account is reactivated.
So, if you only need access to your Sifter account 8 months out of the year, you can put your account on hold during the slow times to save some money. Given the economy, we hope this is useful to helping some of the smaller businesses alleviate costs without having to completely cancel your account.
The cancellation process used to take place immediately. Unfortunately, it could be a fairly long-running process. Now, instead of processing them immediately, we delete them in the background. This way, we’re not dragging out the goodbye.
Better Credit Card Information
We’ve significantly upgraded the experience of managing billing information with Sifter. Most of the improvements are behind the scenes, but rest assured, it should be significantly easier now. Whenever we have issues with your card when we run billing, we do a better job of capturing the precise reason and letting you know what went wrong.
All of Sifter’s outbound emails are processed in the background because it can take a few seconds to connect to the mail server and send. Unfortunately, on occasion during sending, the mail server is busy or times out. This is incredibly rare, but as we grow, even rare events become more frequent due to the increase in volume. Sifter is sending almost 50,000 emails per month now, so we’ve improved the email handling to catch these emails and make sure that they still go through.
All Around Refactoring
This release made some really nice changes to the one part of Sifter that needed some love. The code and associated tests are now exponentially more readable, and we squashed a handful of minor but irritating little bugs. I can’t express enough how helpful it was to have extensive unit tests written prior to going into this. It wasn’t easy by any means, but without those unit tests, I’d be incredibly scared of releasing this update.
The Moral of the Story
With software development, it’s easy to get caught up in the hustle of adding new features and striving to make everyone happy with public-facing tangible improvements. It’s incredibly difficult to say that you’re going to put off customer-facing features that you desperately want to give them in order to refactor some of your code. However, if it doesn’t happen, you’re just asking for trouble.
Sifter isn’t going anywhere, and this is a valuable investment that needed to be made. I hope everyone understands, and now it’s time to start working on those new features that will have a more tangible impact on your experience. The first things will be enhancements to data import and export, and then we’ll be moving onto the API.