Site icon WpStream – A WordPress Video Streaming Plugin

How do I restrict video content to paying subscribers on WordPress?

how do i restrict video content to paying subscribers on wordpress

Last updated: August 27, 2026

WordPress on its own cannot restrict video to paying subscribers. You add a plugin that holds a paid record for each viewer and checks it before the player loads. Membership plugins keep that record as a membership level. The route shown here keeps it as a WooCommerce order: WooCommerce takes the payment and writes the order, WpStream reads that order, and a viewer with no matching paid order gets a buy button instead of a player. Access is tied to the paid record, not to the video file.

That one rule decides everything else on a video membership website: which access model you pick, what a cancelled subscriber can still watch, and whether a live event stays available after it ends. This page assumes you have already decided to charge for access. If you have not picked a way to earn money from your video yet, read paid live streaming first, then come back.

Hiding a video is not the same as gating it

Hiding means the video is hard to find: an unlisted page, a password you hand out, a plain login. Nothing in that setup ever asks whether the viewer paid.

Gating means the opposite: the page is public and easy to find, the title and the description are there for anyone to read, and the player is the part that stays shut until a purchase matches. A password protects a secret. A WordPress video paywall protects a sale.

Both are useful. A private team meeting, an internal training session, a family event: those want hiding, and we cover that in private streaming platform and in password protected live streaming. Members only video on WordPress wants gating: you want strangers to find the page, read what is on offer, and hit a buy button.

Which plugin does the gating

Several plugins do this, and they fall into two camps.

Most gate WordPress content by membership level. MemberPress builds the levels, then a Rules screen decides which posts, pages or categories each level opens. Paid Memberships Pro works the same way and is free and open source, though it left WordPress.org permanently in October 2024 and now comes from its own site. Kadence Memberships, from Nexcess, gates by membership level or by WordPress user role and takes Stripe in its free version. s2Member, going on fifteen years old, gates by role and capability instead of a level table, and its free build accepts PayPal only.

WooCommerce Memberships sits in the other camp: access follows the buyer’s account once they purchase a product tied to a plan. It does no billing of its own, so a monthly plan still needs WooCommerce Subscriptions underneath.

All of them gate what WordPress serves: a page, a post, a file. A live channel is a different problem, because the player itself has to check the record before the stream starts. That is what WpStream handles, and why it is the worked example here.

How the paywall works: WooCommerce takes the money, WpStream reads the order

On this route the record the gate checks is a WooCommerce order, so WooCommerce is a hard requirement. It creates the thing a viewer can buy, runs the checkout, talks to Stripe or PayPal, and writes an order when the payment lands. WpStream never handles the money.

It reads the orders attached to the logged-in visitor and answers one question: does this person hold a paid order that covers this channel or this video? Yes, load the player. No, show the buy button.

That is why access is tied to the order. The file itself never changes.

A one-off ticket is a WooCommerce simple product with the Virtual box checked, attached to one channel or one video. A recurring plan is a WooCommerce Subscriptions product, and it comes in two shapes.

But WooCommerce Subscriptions is not part of WooCommerce core, and it is not ours. It is a paid annual extension sold on woocommerce.com at $279 for the one-year plan. Budget for it before you promise anybody a monthly plan: one-off pay-per-view works without it, recurring billing does not.

One detail about the Virtual checkbox. WooCommerce’s product documentation states that Virtual “disables all shipping-related fields”, which is all a video needs. It does not change which status the order lands on, and do not expect every order to jump straight to Completed: that rule covers products that are both virtual and downloadable, and a video stream is not a downloadable file in WooCommerce’s sense.

Which access model fits your content

Three shapes cover almost everything people sell. The difference isn’t what the viewer watches, it’s what the order covers: one item, one group of items, or the whole site.

Access model What you’re selling How it’s configured Best for
One-off pay-per-view A single live event or a single video A WooCommerce simple product, Virtual, attached to one channel or one video (full walkthrough: sell access to live streams) One event, a launch, a single class
Per-channel subscription Recurring access to one channel or one set of items A WooCommerce Subscriptions product of type Simple Subscription, with that item’s Attach to Subscription field pointing at it Several content tracks sold separately, one plan per instructor or per show
Global Subscription Mode Recurring access to everything on the site WpStream Settings, then Subscription Options, then the Use Global Subscription Mode toggle and the Subscription ID for Global Subscription Mode field, with each item’s Attach to Subscription field left blank One site-wide membership, subscriber-based VOD in the Netflix shape

Start with the one-off product. It’s the smallest thing that can work, and one paid event teaches you more about demand than a month of planning a monthly video content subscription.

Global Subscription Mode is the one that surprises people. The WpStream subscription options documentation puts it plainly: “If your viewers purchase one subscription, they have access to ALL your LIVE and video content. This is similar to Netflix.”

Comparing us against other ways to sell subscription VOD? Our video monetization platform page lays them side by side.

How do I set up a members-only video library

The order of operations matters, because two of these settings only make sense together.

  1. Decide the shape first. One-off, per-channel, or site-wide. The table above is the whole decision. Changing your mind later means editing every product you already published.
  2. Install WooCommerce, and WooCommerce Subscriptions if you are selling a recurring plan. A one-off library, where each video is bought once and kept, needs only WooCommerce.
  3. Create the plan product. In the Product data dropdown, choose Simple Subscription. Set the price and the billing interval. Publish it, then copy the product ID, which appears right under the product title in the Products list.
  4. Open WpStream Settings, then Subscription Options. Everything that follows lives on that one screen.
  5. For one site-wide plan: turn on Use Global Subscription Mode and paste the product ID into Subscription ID for Global Subscription Mode.
  6. Leave Attach to Subscription blank on every video and channel product the plan should cover. Blank is not an oversight here, it is the instruction: the global toggle grants access, and the per-item field is what pulls an item out of the global plan and hands it to a specific one.
  7. For per-channel plans instead: keep Use Global Subscription Mode enabled, but empty the Subscription ID field, then set each protected item’s Attach to Subscription field to the subscription product it belongs to. What tells the two shapes apart is whether that Subscription ID field holds anything. The multiple subscription plans documentation walks through it screen by screen, and warns about the consequence people miss: a viewer who bought your Fitness plan cannot open a video attached to a different plan.
  8. Point the plan at your library. Every video on demand item you want included, with the same Attach to Subscription setting. An item left pointing at a different subscription is what makes a paying member hit a buy button.

Now test it with an account that isn’t yours.

Open a private browser window and register as a normal customer. Load a gated video: buy button, no player. Buy it, and the player should appear on reload. Log out, open the same page again: buy button.

If your administrator account is the only one that has ever loaded that page, you have tested nothing, because an administrator can see content a customer cannot. Do the same check on a phone.

Arranging those videos into a grid, adding categories and making the library pleasant to browse is a separate job, and our Netflix-style video library guide covers it.

What viewers of a video membership site see: never bought, active, expired, cancelled

Four states, and every viewer is in one.

Never bought. The page loads, the description is public, the player is not there and a buy button is.

Paid and active. A matching order exists in a paid status. WooCommerce’s order statuses guide defines Processing as “Payment has been received (paid)” and Completed as the fulfilled state.

On hold and Pending payment both mean the money has not landed. The gate looks for a paid order.

Cancelled, but still inside the paid term. This one generates support emails. When a customer cancels a subscription with a pre-paid term still to run, WooCommerce Subscriptions gives it the Pending-Cancellation status, and its status guide says “the user associated with the subscription retains the subscriber role and may still receive special access… When the pre-paid term ends, the subscription’s status transitions to Cancelled.”

Someone who quits on day 3 of a paid month can still be watching on day 30. Correct behavior, not a bug.

Expired. Access is gone, and there is no way back: “You cannot reactivate subscriptions with the Expired status. Customers must manually create a new subscription or repurchase…”

One honest gap. Nobody has documented whether a video that is already playing stops the second a subscription changes status. What is documented is that WordPress has no real-time clock: the WordPress Plugin Handbook describes WP-Cron as checking “on every page load, a list of scheduled tasks”. Entitlement gets rechecked on the next page load or scheduled pass.

What happens after a paid live event

A pay-per-view live product always shows the live player. That is right during the event, and it’s why the recording doesn’t appear there by itself once the stream is over.

The fix takes a minute. Open the same product you sold, change its type from Live stream to Video on demand, and pick the recording under Choose video. Everyone who already bought it keeps access and can watch the replay without paying again: the order still matches the product.

We settled this in an August 2026 support ticket, where someone had sold a live event and wanted buyers to have the recording.

While you’re in there: recording hours measure the total length of video you keep in storage, not the time you spent live. The WP Admin bar reports the same number as storage hours, which is why it can look higher than you expect: old recordings still count.

What a video membership website does not stop

A paywall controls who can start the video. It doesn’t control what happens once the video is on screen.

Screen recording. Recording software can always capture what plays on screen. It isn’t a WordPress problem: it’s the analog hole. Our senses are analog, as the Electronic Frontier Foundation puts it, so anything you can watch can be recorded again.

Shared logins. WooCommerce’s own Memberships FAQ admits the gap: “there is not any built-in functionality to detect or prevent a single member from being logged in on multiple devices…” WordPress core is built that way on purpose: its WP_Session_Tokens class holds several sessions per account.

Forwarded links. The same FAQ says Memberships “does not restrict downloadable file URLs specifically” because it assumes a URL you share is meant to be shareable. That is about files rather than video streams, so treat it as direction, not proof.

One honest note on cost: there is no free WpStream plan, only a free trial with no credit card. The pricing page carries current figures, including recording-hours caps of 25 on Lite, 100 on Plus, 500 on Pro and 1,500 on Ultra.

Key Takeaways

Frequently Asked Questions

Do I need WooCommerce to restrict video content on WordPress?

Not always. Membership plugins such as MemberPress, Paid Memberships Pro or s2Member gate content against their own member records and take the payment themselves. You need WooCommerce for an order-based paywall, which is what WpStream reads: WooCommerce creates the product, runs the checkout and writes the order when payment lands, and the player loads only if that order matches.

Does a cancelled subscription lose video access right away?

Usually not. On a WpStream site, access follows the WooCommerce Subscriptions status. A customer who cancels while a pre-paid term is still running gets Pending-Cancellation and keeps the subscriber role, so access can run to the end of that term. Then the status becomes Cancelled.

Can two people watch with one paid login?

By default nothing stops them, on a WpStream site or any other WordPress site. WooCommerce’s Memberships FAQ says it has no built-in way to detect or prevent one member being logged in on several devices at once, and WordPress core allows more than one session per account.

Does a refund cancel a subscriber’s access immediately?

By default, no. Refunding an order does not cancel the subscription by itself, which is why the WooCommerce GitHub organization carries unsupported add-on code that adds exactly that behavior. On a WpStream site, treat the refund and the cancellation as two separate actions.

What happens to a paid live event once it ends?

The recording does not appear on the live product by itself. Open the same product in WpStream, change its type from Live stream to Video on demand, and pick the recording under Choose video. Buyers keep access and can rewatch without paying twice.

Build the gate first, then watch what it earns. After a month on a video membership website, the numbers worth reading are watch time, renewals and repeat purchases: our guide to video membership site metrics covers them.

Exit mobile version