How to Create a Paid Membership Website [aka a Paywall]

Last Updated on: Posted inBlog

The vast majority of membership websites are quite simple.

In one form or another, they are regular Paywalls. Part or all of their content is protected and can only be accessed after registration and payment of a fee.

Building such websites with WordPress today is easier than ever.

In this tutorial, the follow-up to this article about “What’s the Best Membership plugin for WordPress,” I will show you how easy it is to build a website with a Paywall that protects the content of a couple of premium pages.

Let’s dive into it.

1. Install WordPress

First things first, we need WordPress. Many hosting providers have plans with WordPress pre-installed, so I will assume you have this under control.

I use Local, a desktop software that lets me develop WordPress websites locally on my computer.

2. Install the Theme

From the WordPress Dashboard, go to Appearance > Themes.

Click the Add Theme button. In the Search Themes field, type School.

This is our School Child Theme for Blockstrap.

For this demo, we will pretend to build a site for a “school” that sells online video courses, with 2 pages used to present these videos to paying members. It needs a paywall and requires a system to manage memberships and subscriptions with recurring payments.

Install the School theme and activate it.

This will also install the parent theme, Blockstrap, and prompt you to install the Blockstrap Page Builder plugin. Make sure you install it too.

For this tutorial, I will create a landing page using AI and the Blockstrap blocks. The full tutorial on building a Landing Page with Blockstrap using AI is available on the Blockstrap website.

The Blockstrap theme, child themes, and the Blockstrap plugin are built to work together and are totally free; they will guarantee a fast-loading website that looks great.

3. Install the Plugins

We will need the free UsersWP, GetPaid, and the GetPaid Stripe Payments plugins. Next, the UsersWP Membership add-on. This is the only paid product in this tutorial. As you can see, a license valid for one website costs only $49/year.

Let’s see what each plugin does:

UsersWP manages the Login/Registration processes. The Users’ Profiles and the Users Directory.

GetPaid handles the subscriptions and recurring payments. It also handles Taxes and Invoicing (it is fully compliant with EU VAT legislation and supports all types of sales taxes).

The GetPaid Stripe Payment Gateway plugin allows you to get paid through Stripe.com, the world’s most popular payment gateway. Other than that, GetPaid comes with PayPal and other popular payment gateways out of the box.

The UsersWP Membership add-on handles custom user roles, membership levels, and content restriction.

After buying and downloading the Membership add-on from your account page on this website, go to:

Appearance > Plugins.

Click the Add Plugins button. In the Search Plugins field, type UsersWP.

Install and activate the UsersWP plugin.

After activation, the plugin will launch the setup wizard. Click on the “not right now” option, as we will go through this after installing the other plugins.

Go back to the Appearance > Plugins page.

Click the Add Plugins button again. In the Search Plugins field, type GetPaid.

Install and activate the GetPaid plugin.

After activation, the plugin will launch the setup wizard. Click on the “not right now” option, as we will go through this after installing the other plugins.

Go back to the Appearance > Plugins page.

Click the Add Plugins button again. In the Search Plugins field, type GetPaid Stripe.

Install and activate the GetPaid Stripe Payments plugin.

After activation, you will be asked to connect to your sandbox Stripe account.

Proceed with that.

Now it’s finally time to install the Membership plugin

Go back to the Appearance > Plugins page.

Click the Add Plugins button again. Click the Upload Plugin button next.

Click the Choose File button and select the zip file of the “uwp-membership” plugin. Click the Install Now button and finally activate it.

4. Setting up the Paywall

We are done installing the theme and the plugins. Now we need to set up the Paywall.

To recap, the project requirements were:

  1. A Sales page. (A Landing Page)
  2. Membership Levels
  3. An Account creation with Membership selection
  4. A Checkout flow (preferably with Stripe)
  5. Two pages behind the paywall,

4.1 The Sales page.

I created the Landing Sales Page with AI. A full tutorial on using AI to develop websites with Blockstrap will soon be available on WPBlockstrap.com.

Obviously, it comes with placeholders in both text and images. It is not perfect, but it’s quite impressive given the time spent creating it.

It took approximately 10 minutes of iteration with Claude Code to create this draft. Now, I would only need to change the content, both text and images, to personalize it.

Since this isn’t a real website and we only need an example for this tutorial, I’ll leave it as is.

Finally, we can move on and create the Account creation page.

4.2 Create the Membership Levels

The Sales Landing page shows two packages with different prices and features.

Standard Access at $197/year, and Full Access + Mentorship at 297/year.

This means we need to create two membership types.

To do this, we go to UsersWP > Membership Types and click the Add Membership Type button.

  • Title
  • User role
  • Post-registration action
  • Redirect page after user registration (avail only if auto login is selected)
  • The policies pages
  • Create the new Items (GetPaid products) to associate with this Membership Type.

To create the new Items, click the “create new item” link below the last select field, labelled GetPaid item:

Fill in the Create GetPaid Item form that appears in a pop-up window, including a title and pricing options. In this example, $197 recurring every year, and finally click the “Create Item” button.

Adding a price to a Membership type creates a new GetPaid item that can be sold

Repeat to create the second Membership Type.

After we create both Membership types, we end up with this:

This also created 2 registration forms, each of which, if needed, can be set up with different custom fields.

4.3 Account creation page

Once you activate UsersWP, the plugin automatically creates the following pages:

  • Login
  • Register
  • Account
  • Profile
  • Password recovery
  • Change password
  • Reset password
  • Users directory
  • User profile item page

The account creation page is the “Register” page. So this is already available with default custom fields.

If you need extra custom fields, you can add as many as you want from UsersWP > Form Builder. By selecting the User Type, you’ll see two forms, one for each membership type.

Custom Fields you create can be made available on the Account page, which users can edit once they are registered and logged in, and/or on the registration page. Where users create their accounts.

The default fields for this tutorial are more than enough, so after enabling registration in WordPress General Settings, we can start selling memberships.

The last thing we need to do is add links to the Call-to-action buttons in the pricing section of the landing page.

To edit this section, I will go to:

Appearance > Editor > Patterns > All Template Parts and edit the course-s9-pricing section.

Click on the first button, “Enroll Now,” to open the Block settings.

For Link Type, the first setting of the BS > Button block, select UWP Register and save.

If you now visit the Online Course page (the Landing page) in a private tab where you are not logged in, and click the Enroll Now Button for the Standard Access Membership Level, a pop-up like this will appear.

After filling in the form and clicking Continue to Payment, you are sent to the checkout page.

4.4 The Check out flow

The checkout page is part of the GetPaid plugin. So there is little to nothing to do here.

You can use the default fields or modify them according to your needs, by modifying the default checkout form or creating one ad hoc.

Once the user fills the form and submits their credit card information to process the payment, the subscription will start and will automatically renew every 12 months.

Now we only need the content pages that need to be protected behind the Paywall.

4.5 Two pages behind the paywall

This is very simple. We create 2 normal pages. I titled them:

  • Video Course Page 1
  • Video Course Page 2

I added 9 videos to each page using AI.

I asked it to create 2 grids of 3 cards using Blockstrap and to use video from an MIT online course about Quantum Physics.

now we need to protect them.

To do this we go to UsersWP > Content Restriction and click on Add New Restriction.

I called the restriction “Paywall”.

From the General tab, on the User Status section, where it asks“Who can see this content? I selected Logged in Users.

User Role select Matching = Subscriber.

And User Type select Matching = standard-access & full-access-mentorship, which are our 2 membership levels.

Next, we need to move to the Protection tab.

Where it asks, How would you like to restrict this content? Select Replace Content.

In the Replacement Type section, select Custom Message.

Tick the Override the default message? option, otherwise a non-logged-in user visiting those pages will see a very short default message saying this content is protected.

Where you see the Enter a custom message to display to restricted users text area add text or HTML. I asked to my AI tool to generate a nice placeholder writing Bootstrap 5 HTML:

Next, the “Define how restricted items appear in archive pages” is not relevant to this tutorial because pages don’t appear in archive pages, that’s for Blog Posts.

That said, I leave this option selected: Filter the restricted items’ content.

Which is the same option I select for Handling matches everywhere else, the last option on this tab.

Lastly, we move to the Content tab.

This is where we tell the plugin which content to protect.

For this Paywall, I selected IF: Content is a Selected Page. This made a multiselect field appear, allowing me to select any of the available pages.

I selected our two pages, Video Course Page 1 and Video Course Page 2, and clicked on the Save Restriction button. These settings are unique to this Paywall, but for different types of membership websites, you most likely need to tweak them.

4.6 Paywall set up completed

That is it. If a non-logged-in user visits one of the 2 protected pages, they will see the “Members Only” message.

If they register, pay for the membership and visit the 2 protected pages after logging in they will see the video course.

5. Other types of Paywalls

UsersWP can also be used to build more traditional paywalls, the kind most people have seen on newspaper and magazine websites.

For example, you can show the title, featured image, and the first few paragraphs of an article for free, then lock the rest of the content behind a paid membership. This is useful when you want Google, social media users, and casual visitors to understand what the article is about, while still keeping the real value for paying members.

You can also create a softer version of the same paywall. Instead of fully blocking the article, you can show a clear message after the excerpt, inviting the user to register or upgrade to continue reading. This works well for blogs, tutorials, reports, interviews, and any content where the intro can act as a preview.

Another option is to protect only certain sections of the page. For example, the article itself can be free, but downloads, templates, videos, maps, contact details, premium comments, or bonus material can be available only to members. This is often better than locking everything, because it lets visitors consume some useful content while giving them a reason to upgrade.

You can also create different access levels. Free members may see basic content, paid members may see the full article, and higher-tier members may get extra resources or early access. This makes UsersWP flexible enough for simple paywalls, premium blogs, private communities, directories, courses, and content libraries.

To wrap it all up…

The point is simple: a paywall does not have to be complicated.

You can start with free registration, lock only the most valuable parts of your content, and then add paid access when there is enough value to justify it.

UsersWP gives you the membership layer, while WP GetPaid handles the payment side. Together, they let you build anything from a simple members-only article to a full paid content platform, without turning your site into a monster you can no longer manage.

The UsersWP Membership plugin starts at just $49 for a single site and includes everything most membership websites need.

Don’t overcomplicate things. Start your membership site with UsersWP.

Published by Paolo

Paolo Tajani, co-founder and marketing lead at AyeCode LTD, works alongside his business partner Stiofan to develop key WordPress plugins such as GeoDirectory, UsersWP, and GetPaid. Starting his journey with WordPress in 2008, Paolo joined forces with Stiofan O'Connor in 2011. Together, they have been instrumental in creating and marketing a range of successful themes and plugins, now actively used by over 100,000 websites.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.