I recently launched a membership community for my podcast (using WordPress, of course). In this post I’d like to share the details of which tools I chose to create the site, why I chose them, and what the cost was. If you need to create a WordPress membership site for your organization, I hope you find some helpful info here.
Update 3/9/18: I no longer have the membership site referenced in this post online, but I’m leaving this post as you may still find the case study helpful.
(Please note: some links in this post might be affiliate links. See the full disclosure here.)
To give some initial context for what I was doing, here’s the mission for my online community:
The OfficeHours.fm Community exists as a place where motivated people from a variety of backgrounds can meet to learn from one another, challenge each other, and push themselves further with the ultimate goal of growing a business that supports an independent lifestyle. We happen to have WordPress in common.
In order to carry out this mission, I needed a website where:
- members could communicate and interact with each other
- previous communications were easily scan-able and searchable
- members had the option of monthly or yearly payments
- anyone (member or not) could buy podcast swag
From a technical perspective, WordPress made this easy with the availability of some ready-to-go plugins. Of course, I did my best to complicate matters.
The tools I used to build a WordPress membership site
Domain, Hosting, & SSL
My podcast resides at officehours.fm. After some deliberation I decided to go with a sub-domain for the community: my.officehours.fm. As a side note, I selected the “my” sub-domain because it conveyed personal ownership for each member of the community. The podcast belongs to them. The community belongs to them.
With a domain created (I use Hover for that), the next step was to decide where to host it. I already had an account at WP Engine. The plan I’m on supports up to 10 sites and I had space to spare, so this was a no-brainer for me.
This is a site that needed to support on-site payments, which means I needed an SSL certificate. In the past, I’ve bought cheapy ones from around the web. You can use third-party SSL certs with WP Engine but, in the interest of time, I sprang for the $50 and bought one from WP Engine. One click from my account and within minutes I was sporting https://my.officehours.fm.
Total (new) investment: $50.
This is where WordPress (and the product ecosystem around it) continues to amaze me. Everything I needed to execute technically on this site was able to do without a single bit of custom code. With the exception of 2 plugins (noted below), these were all free.
- WooCommerce Subscriptions – $200
- WooCommerce Memberships – $150
- WooCommerce Stripe Gateway
- Printful Integration for WooCommerce
Need WordPress forums? bbPress is the way to go – they’re good, old-fashioned, threaded forums. bbPress integrates beautifully with BuddyPress, however you don’t need BuddyPress. They’re completely independent.
If bbPress has the raw forum functionality, then BuddyPress comes in and adds a social component. It introduces the concept of member profiles, activity streams, “friending” other users, and groups. Basically, it’s Facebook for WordPress. You can use it independently of bbPress, but if you want to add discussion forums to groups, you’ll need bbPress.
WooCommerce is one of the most popular e-commerce plugins for WordPress, capable of handling both physical and digital products. It integrates with Stripe and Paypal (and other payment gateways, but those were the ones that mattered to me – more on that later).
This is an add-on plugin for WooCommerce that handles, you guessed it, memberships. In WordPress terms, membership is typically tied to accessing restricted content. There are a bajillion (or at least a million) WordPress membership plugins out in the wild. I had no interest in vetting them all, so I let Chris Lema do the work and then picked based on his recommendations.
Yet another add-on plugin for WooCommerce, Subscriptions works with Memberships to offer recurring payments.
WooCommerce Stripe Gateway
I’m a big fan of Stripe. They’re not perfect, but they’re easy to use and I like that they auto-transfer funds to my bank account (vs PayPal which requires a manual transaction). Anyhow, this isn’t a Stripe review. It works with WooCommerce. Bam.
Printful Integration for WooCommerce
After researching a variety of swag fulfillment shops, I chose Printful. This plugin works with WooCommerce to calculate live shipping rates and tax rates based on real-time Printful shipping costs. Cool.
Total plugin investment: $350.
Theme (the look)
Ok, the plugin part was easy. This is where I managed to bring all my complications and baggage of being a theme developer to the equation.
To use a custom theme or an off-the-shelf theme? That is the question.
Before I start to answer the question, let me say this: If you’re reading this post to learn how to create a WordPress membership site, you can skip this entire section. It’s me blathering on about my decision-making process on the site design. On the other hand, if you want the story behind the community, read on.
I make themes for a living (well, at least part of my living), so when I need a theme for a site, I build it. I start with Utility Pro (my starter child theme for Genesis Framework), and then customize from there.
But I was in a hurry to launch this community site and I didn’t want to take the time to build a custom theme, so I turned to the marketplace. My first choice was Caroline, a theme that – no lie – is actually named for me, and has built-in styles for bbPress, BuddyPress, and WooCommerce. Perfect. I already owned the theme, so there was no extra cost here. I installed it and started to configure things.
But Caroline, for all her digital beauty, is nowhere close to the design of officehours.fm (my custom creation), so off I went down the rabbit hole of customizing the styles in Caroline. Remember: the benefit of using Caroline in the first place was that it already had the styles I needed… #sigh
I invested maybe an hour’s worth of time orienting myself with the code before I thought, foolishly, I could build a custom theme in less time than it takes to retro-fit this one.
So I set off down the path of creating a custom theme. I even had in the back of my mind that the time investment was worth it because I could eventually sell this theme (I still haven’t abandoned this idea).
I busted out some custom styles for WooCommerce, which was shockingly pain-less, but then I started styling bbPress and BuddyPress and everything changed.
The Style Challenge
I use Sass in my development workflow. Neither bbPress nor BuddyPress utilize Sass. bbPress styles, while minimal and intentionally unobtrusive, used a lot of repetitive selectors and (IMHO) could benefit from a little Sassification.
— carrie dils (@cdils) May 18, 2016
So I spent 2-3 hours doing a very basic Sass version of the bbPress stylesheet (all I did was some class nesting for a cleaner read). I then incorporated this into my theme, but popped in some variables and a Neat grid. Time-consuming, but not too bad.
But BuddyPress. Weep, ye mothers. Weep for ye children who style BuddyPress.
For all its greatness, BuddyPress has 3 unfortunate qualities:
- A TON of views (i.e. activity stream, user profile, group archive, group page, and on and on…)
- A TON of styles to support these views
- A TON of very opinionated styles
Where bbPress takes a minimalist approach to styling, BuddyPress pulls out all the stops. Maybe this is actually necessary to support all the available views/templates – I don’t know. But I do know that styling it is brutal. I might go so far as to say it’s demoralizing to work with.
This is a stylesheet that could benefit TREMENDOUSLY from Sass, but I didn’t have it in me to tackle that. Instead, I used the Genesis Style Trump plugin and started down the path of whacking out styles right and left to get BuddyPress components matching my theme.
And a day passed.
And another day passed.
I was stuck in the mire of trying to style this stupid theme and losing site of my actual goal: LAUNCH A FREAKING COMMUNITY WEBSITE.
So I said to myself: “Carrie, let’s back up the bus.”
For me, backing up the bus meant going back to the theme marketplace and seeing if there was another off-the-shelf solution that would work.
Fun fact: there are not a lot of premium themes out there with built-in styles for BuddyPress. If you create themes for a living, consider making one. 🙂
My theme search led me to BuddyBoss, a development shop specializing in BuddyPress themes and plugins. And let me tell you, their themes are beautiful. I knew nothing about the code base, I knew nothing about the developers, but I saw a beautiful theme — one that matched officehours.fm well enough that I wouldn’t have to style it — and I bought it ($100).
In less than a day I was ready to go.
*Side note: While I did finally get out of the gate quickly thanks to BuddyBoss and love the looks of it, I don’t love what’s under the hood. It’s got too much going on (IMHO), which makes it a pain in the rear to customize and/or troubleshoot. At some point, I will likely pick up where I left off with my custom theme (somebody please slap me).
Total theme investment: $100.
I mentioned earlier that I love Stripe, so I picked up a WooCommerce extension enabling me to offer credit card payments via Stripe. Prior to this site, I’ve only offered online payments via Stripe, never PayPal.
I find PayPal annoying for a number of reasons I won’t get into, but here’s the deal: a lot of people use PayPal and I’ve found that some of my international friends don’t have credit cards, which means they cannot do business with me unless I use PayPal.
And who am I to stand in the way of people who want to give me money?
Seriously, though, my podcast audience is international and I didn’t want to present any barrier to entry in the community, so I offered PayPal as an option.
Here’s where it gets sticky.
Remember this is a site that works on recurring payments, not just a “one and done” transaction. In order to run recurring payments through PayPal with WooCommerce, you need something called PayPal Reference Transactions enabled.
Yeah, I didn’t know about it either, but then, I don’t do a ton of e-commerce.
Turns out that you have to request PayPal Reference Transactions via an email to a PayPal. They denied my first request.
Apparently they ran a credit check and, since I didn’t have my SSN or EIN on my PayPal account, it returned a credit score of 0.
I updated my profile/account settings on PayPal with my SSN, re-submitted my request and PayPal Reference Transactions were enabled. This process took 3-4 days.
But now I can accept recurring payments through Stripe or PayPal.
Total investment: $0.
I love swag. 90% of my wardrobe consists of free t-shirts I got at (nerdy) conferences. I’m a swag whore. Mail me your t-shirt and I will wear it.
While I’m not money bags enough to give away free swag, I did want to put up a swag store where people can buy t-shirts or mugs sporting the name of their favorite podcast. 🙂 Here’s what I didn’t want to mess with:
- Finding a printer/creating the tee’s myself
- Holding inventory
What I needed was a company that would do all the above for me. I investigated a number of companies and eventually landed on Printful. I went with them because:
- They do print-on-demand AND ship
- They integrate with WooCommerce
The WooCommerce integration is so nice — my WooCommerce store connects directly with my Printful store. For example, if I create a t-shirt on Printful and make it available in 3 colors and 6 sizes, all of that data is automagically imported into WooCommerce (along with pricing), so no need for me to create the t-shirt product with all of its varying attributes and variables.
In short, I can offer both memberships and physical goods through my store.
Total investment: $0.
Putting it All Together
While a handful of WordPress plugins made it simple (from a feature perspective) to set up the membership site, there was additional time involved with doing the set up and configuration for all of these plugins, as well as hooking up the Stripe, PayPal, and Printful integrations. And then finally testing everything.
I spent no money on this part – just a day or two of my time.
Summary (and cost)
With a $500 monetary investment and 7 days or of my time, the community site is up and running. If I’d had to buy the domain and hosting, that would’ve run me another $100 or so.
Of course, my time is not free and neither is yours. If you want to build a site yourself, I’ve got a course WordPress DIY course on how to build a community website to get you started. If you’re planning to hire someone to build you a WordPress membership site, know that it’s not cheap. As a general rule of thumb, consider what a week or two of your time is worth in pay and expect to pay at least that.
If you have any questions or if there’s anything else you’d like to know about the process, just drop a comment!