How to Sell Subscriptions on WordPress

Want to sell subscriptions from your own WordPress website? In this real-life use case we will build a subscription-based content site with three plugins: WooCommerce takes the checkout, WooCommerce Subscriptions handles the billing and the renewals, and Restrict for WordPress decides who can open the content. An honest note before we start: Restrict does not do billing. It never charges a customer and it never renews a plan. The money side is WooCommerce Subscriptions’ job, start to finish. What Restrict does is enforce the access: subscribers get in while their subscription is active, and they lose access automatically the moment it is not. By the end of this walkthrough you will have a working subscription setup, from the subscription product to the locked member content.

How it works: Restrict.io locks your content, and WooCommerce Subscriptions handles the recurring billing. When a subscription is active, Restrict grants access; when it lapses, access is revoked automatically. Restrict does not bill customers – it only controls who sees what.

Why subscriptions, and how they work

If you sell one-off products, you start from zero every month. Subscriptions fix that: the customer pays on a schedule, and your revenue becomes predictable. A monthly or yearly fee for ongoing access to content is the standard pattern, and it works for magazines, course libraries, research reports, tools and communities.

The trick is that access has to follow the payment. A customer who stops paying should stop seeing the content, without you touching anything. That is where the three plugins split the work. WooCommerce Subscriptions collects the recurring payment and tracks the subscription status. Restrict checks the status and opens or closes the gate. If you search for a WordPress subscription plugin, you will find plenty of all-in-one membership plugins, but this guide builds the same result from three focused pieces that each do one job well.

What you need

For this setup you need four things:

  • A WordPress site, on any theme you like.
  • WooCommerce. Free. Handles products, checkout and payments.
  • WooCommerce Subscriptions. A paid add-on for WooCommerce that turns products into recurring subscriptions.
  • Restrict for WordPress. The plugin that gates content to subscribers. It has 86,197 downloads and counting. For the shortcodes used in this guide you need a premium license. Plans start at $39 per year for Restrict for WordPress, or $59 per year for the Bundle covering both plugins, with lifetime licenses available and a 7-day trial plus a 7-day money-back guarantee on every purchase.

Make sure all three plugins are installed and activated, and configure at least one payment gateway in WooCommerce so customers can actually pay.

Step 1: Create the subscription product

A subscription plan is a subscription product. In WooCommerce, create a simple subscription product, give it a name (e.g. Monthly Access), set the price and pick the billing period: monthly, yearly, or any interval WooCommerce Subscriptions supports.

If you sell several tiers, create a simple subscription product per tier, or use a variable subscription product with variations for the different options. For the sake of this guide, one simple subscription product is enough.

WooCommerce subscription product settings

Step 2: Set the subscriber roles

This step is easy to skip and it matters the most. Open WooCommerce Settings and go to the Subscriptions tab. Make sure Subscriber Default Role and Inactive Subscriber Role are set to different roles. For example, Subscriber for active subscribers, Customer for inactive ones.

Here is why. WooCommerce Subscriptions switches users between these two roles as their subscription becomes active or expires. Restrict will use the active role as one of the access conditions, so the two roles must be distinguishable. If they are the same, Restrict cannot tell an active subscriber from a lapsed one.

Step 3: Restrict content by active subscription

A subscription gate uses two checks, and a user must pass both.

The first check is the purchase. Head to Restrict, then Shortcodes, and scroll to the WooCommerce Users area. Select Specific Product, pick your subscription product, and click Copy. Paste the generated shortcode into your content, wrapping the premium part between [rsc_restrict_content] and [/rsc_restrict_content]. This makes the content visible only to customers who purchased that specific product.

The second check is the role. Below the content area, find the Content available to dropdown, select Users with specific role, and choose the role that matches your Subscriber Default Role, Subscriber in our example. This limits the whole page to users currently holding the active-subscriber role.

Why both? If you only checked the purchase, customers would keep access forever after one payment, because the purchase itself never disappears. That defeats the point of a subscription. If you only checked the role, content would open for anyone who bought any subscription product on your site, not just the one tied to this content. Combined, access requires the specific purchase and an active subscription.

Restrict Content available to dropdown

Step 4: Automatic access, automatic revocation

The role switch does the automation for you. When a subscription becomes active, WooCommerce Subscriptions moves the user to the Subscriber role, the role check passes, and access appears without you doing anything. New subscribers get in the moment they pay.

When a subscription expires or is cancelled, the user is moved back to the inactive role, the role check fails, and access is revoked. Same hands-off logic on renewals: the customer renews, the role switches back to Subscriber, and access returns. Renewal payments, reminders and failed-payment retries are handled by WooCommerce Subscriptions; Restrict only ever watches the role.

You can verify the whole loop by opening a restricted page in a private browser window: subscribe with a test account, watch access appear, cancel the subscription, and watch it disappear.

Step 5: Teasers and menus

Two touches make the gate feel like a funnel instead of a wall.

Teasers. Do not lock an entire page. Keep the first part public and wrap the rest with the shortcode from Step 3. Visitors read enough to want the full thing, then hit the subscribe link. The shortcodes documentation explains the mechanics in general.

Menus. In WordPress, go to Appearance and open Menus. With Restrict active, every menu item has a Menu available to dropdown: show a Members Area link only to logged-in users or a specific role, show a Subscribe link only to logged-out visitors. Widgets work the same way, with a Widget visible to dropdown on each one.

One tip from the docs: hiding a menu item does not protect the page. Anyone with a direct link can still open it, so always combine menu visibility with the actual content restriction from Step 3. The menu items guide covers the criteria list.

Conclusion

You now have a subscription site on WordPress: a subscription product billed and renewed by WooCommerce Subscriptions, content gated by the combination of purchase and active role, automatic access on payment and automatic revocation on expiry, plus teasers and menus that sell and adapt. The same recipe covers multiple tiers, and the friendlier lockout messages are set in the WooCommerce tab of Restrict settings, where you can include a direct link to the subscription product.

Restrict does not bill anyone and does not pretend to. It is the gatekeeper: 86,197 downloads, one job, works with the theme you already have. The same integration works with Easy Digital Downloads, and you can reserve content for Tickera and Venuera ticket holders, or personalize pages by URL parameter, referrer or cookie.

Restrict for WordPress starts at $39 per year, or $59 per year for the Bundle with both plugins. Lifetime licenses are available, and every purchase comes with a 7-day trial and a 7-day money-back guarantee. See the pricing page and pick the license that fits your site. The complete step-by-step for this exact setup is in the WooCommerce Subscriptions content restriction guide, and the full documentation covers every other option.

Related documentation