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.
Plugins (Functionality)
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.
- bbPress
- BuddyPress
- WooCommerce
- WooCommerce Subscriptions – $200
- WooCommerce Memberships – $150
- WooCommerce Stripe Gateway
- Printful Integration for WooCommerce
bbPress
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.
BuddyPress
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
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).
WooCommerce Memberships
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.
WooCommerce Subscriptions
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.
@JJJ I was doing it anyway. 🙂 Here’s a quick and dirty version in case you find it useful: https://t.co/OHt1Exxtjp
— 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.
Meet BuddyBoss
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.
Payment Gateways
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.
What?
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.
Swag Store
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
- Shipping
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!
So, I have a client who just started a gym.
He wants to do online stuff too – like a free course – and also a paid course etc. The site is already created (using Utility Pro actually) and I’m trying to work out what I need.
It’s sort of like what you have done, though there’s no real need for a community aspect or even a forum. It’s more “register as a user”, and “do courses”. Maybe some other stuff though I’m not sure.
Thoughts?
Sounds like you may want an LMS (learning management system) instead. LearnDash is a popular one – I haven’t used it for my courses, but I’ve taken a course that used it and like the experience. I had the founder, Justin Ferriman, on my podcast:
http://officehours.fm/podcast/99-2/
LifterLMS is the other WordPress plugin I’ve heard good things about, but haven’t had a chance to play with.
Hi Carrie,
I’m working on a site that opens on December, and at some point of the next year it will become a community. I’ve done my research for months, seen the same as you: few BuddyPress themes -nothing specific for Genesis-, frightening stories about styling and incompatibilities… Thank the Gods I ended up reading Chris Lema’s blog and other blogs such as yours!
But here’s the thing: I’m no professional by any means, and seeing people like you choosing the same tools and combinations I would use is kind of encouraging. But there’s the other side of the coin: if some true pro like you tells these kind of stories about fighting hard to get a decent commercial community site built and styled… I mean, I’m starting to panic!
Seriously, could you ellaborate a little bit on the process of making things work together? I mean, WooCommerce’s Memberships is not compatible with BuddyPress. How did you solve that? Is there any trick or did you make any kind of compromise-deal by giving up on some functionality for not breaking things? Then, there’s the performance issue: BuddyBoss is pretty charged (I think), and Woo + BP + BBP must make things run slow, since you can cache only a few things…
Anyway, I will try to stick with Genesis…
I’m using WooCommerce Memberships (and Subscriptions) with BuddyPress no problem! What issue are you seeing?
Very funny 🙂 The sort of life we developers often have but few talks about. Refreshing!
Great article, thanks for all of the information!
Thanks Andrew!
Thank you for the helpful walk-through! Are the costs for WC Memeberships and Subscribsions one time payments or are they yearly payments?
All WooCommerce add-ons are set up as yearly subscriptions (if you want to get updates + support).
Hi
i can’t get any Post with membership plan in your site (https://carriedils.com/officehours/), there is simple post.
Can you please give us demo where you have used Woocommere Membrship + Woocommere Subscriptions?
I want to build same website so please give me demo link where i can see all features you had explained in this thread.
waiting for your reply.
Thanks
Ahir
Hi Ahir,
I’ve since removed the site (it was an experiment that didn’t work out).
Carrie
Thanks for the post!!