I wanted to post an update on our Paid Memberships Pro business. In the style of other “transparency reports”, I will share real numbers for our business. I will also share some of my current goals and planning for the business.
Business is Growing
$3,000,000 in all time sales.
$810,000 in revenue in 2019, a 23% growth over 2018 sales.
Active on over 80,000 sites. We had about 4000 paying customers last year.
What About Profit?
Kim and I are the only 2 owners of the company. We also work roughly full time in the business.
Of that $67k/mo we made in 2019, the expenses broke down like this:
$50k for salaries and benefits, including for Kim and myself.
$5k for travel and marketing, a big retreat, going to and sponsoring WordCamps.
$3k for credit card fees and affiliate payments
$2k for server and other IT costs.
$7k of profit. (A nice portion of this was distributed as a bonus in December.)
Our Team is Growing
Went from 8 employees to 10 in 2019. (We hired 2 more in Q1 2020, for a total of 11 full time employees and one part time employee.)
We had our first full team retreat in September 2019. All but one of our employees was able to come to our home (and a nearby AirBnB) to spend a week getting to know each other better and planning for the future. Five of us hit up WordCamp NYC the weekend before and really made a presence there in our Nugget shirts. Good times bar hopping and eating pizza and ramen in NYC.
Product Developments in 2019
We launched PMPro v2.0, with a newly designed dashboard and support for Gutenberg and the REST API
We overhauled our proprietary customer support system used on the PMPro and Memberlite sites.
We ran a successful Spring Sale for PMPro and experimented with other sale formats in the fall.
Our primary goal as a business is to support the Paid Memberships Pro open source project. Our customers and partners will want to know that our business is sustainable and we will continue to maintain the project and provide quality support.
Many people will have ideas about how big our business is and how well we are doing. Some will think we’re bigger than we are and wonder why it takes so long to reply to support or push new features. Some will think we’re smaller than we are and wonder if we’ll be able to stay in business. If we share our real numbers, we won’t avoid criticism or concern, but at least these interactions will be based on facts.
I also want to help others looking to start a business like ours. By sharing our story, I hope others can learn what to expect when launching a WordPress plugin or a paid support plan around an open source project. These numbers are specific to our business and product, but they can be one more data point for someone deciding whether they should get into a business like this or keep pushing on a side project.
Hang in There
In 2012, one year after our launch, we were making little more than $1000 per month. I hear of so many projects at this stage of income, with the founders wondering if it’s worth it to continue working on the project or move on to something else.
When I hear someone taking a project to $1000 per month, I usually quip “That’s awesome. You’re halfway to $10,000 per month.”
I can only share our own experience, but it is as hard or harder going from $0 to $1000 than $1000 to $10,000. For Paid Memberships Pro, it took 2 years, 2010-2012, to get to $1000 per month. Two years after that, in 2014, we were making almost $10,000 per month. Two years after that, in 2016, we were making about $34,000 per month.
In 2019, we averaged $67,000 per month. If we can grow just a bit more than we did last year, we will cross the magical $1,000,000 per year milestone.
Targets and Budgets for 2020
We are targeting another year of 20% growth for PMPro, which would bring our average monthly revenue to $80k. With that in mind, we have hired 2 more developers to help with technical support and maintenance of the core plugin and Add Ons.
For the past few years, we’ve had this neat little cycle of reinvesting in PMPro that goes something like this:
Target a 20% annual growth in revenue.
Target a 20% profit margin.
Hire and invest in marketing such that we will break even if we match last year’s sales.
If we hit our growth targets, we will be on pace to earn 20% profit going forward.
Starting out with a breakeven budget, then growing 20% in revenue throughout the year, means that we typically end up banking about 10% of our total revenue, which has allowed us to save enough cash to build a comfortable cushion for the company. We could have been taking on debt to grow even faster, but this has been the right level of financial risk for Kim and I with this business.
What if we don’t hit our revenue target? Then we’ll have some hard decisions to make to cut costs or dip into cash or debt. If sales are flat or just growing more slowly, we can adjust our goals for the next year.
What are we working towards this year besides 20% revenue growth?
We’re looking to officially launch the Sitewide Sales plugin and along with it a generalized platform for us to release future non-PMPro products.
In Q1 of 2020, we implemented a new development planning and scheduling process based on the Shape Up book by Ryan Singer and the Basecamp team. It is going well so far. We will have a true feel for how this has improved things for us as we get through a few development cycles. “You should bid on that next cycle” has become the new “patches welcome” in our chats.
I’m hoping to pause at 12 employees working on PMPro, with a focus on scaling up the skills and effectiveness of the team we have vs hiring new people. This is about the size company I am comfortable with for now. I believe we will be able to figure out the natural boundaries and needs of this PMPro business and make it work with the team we have.
I’m freeing up some time and headspace to explore the various business opportunities related to PMPro and will consider pursuing those projects with smaller independent teams. Some other great companies in the WordPress space have spread out successfully this way. We can look to them as models and also figure out a version of that that works for us.