Ask SkyVerge

While WooCommerce Memberships is flexible in how your customers can become members, it’s useful for some sites to let customers apply for a membership and then accept or reject their membership. This is desirable for merchants who want a great deal of control over who gets access to membership perks on their site.

If you’re interested in setting up Memberships to require application and approval, please let us know! In the meantime, here are a couple of ways you can make this happen on your site today. Either option can work, so you’ll need to decide what kind of workflow you want for your potential members.

Method 1: Use a “waiting room” membership plan

There are a couple different ways to use this method, but the general premise is that you setup a membership plan that acts as a “waiting room” while you decide whether or not the customer should be approved to join your plan. This “waiting room” plan doesn’t have any restriction rules configured, so it won’t grant access to any special content, but it does help you keep all your applicants in one place. Then, when they’ve been approved, you can move the members to the true plan, containing all the restricted content, discounts, and other perks. 

Here’s how you can use this method for different types of plan access:

Registration memberships

If you only require customers to register for an account to become members, you’ll setup your “waiting room” plan to grant access upon registration and your true plan to grant access by manual assignment. 

Memberships: registration-based membership
The waiting room membership grants access upon user registration. You can set this membership to expire after a few days or a week to keep the list clean.
Memberships: manual access membership
The true plan is only available to members that you add manually, ensuring that you have complete control over who gains access to its perks.

✅ Note: If you need more information to make this decision beyond their email address, which is part of the default WooCommerce registration process, consider using a plugin like Gravity Forms to build a custom registration form. Their User Registration add-on is compatible with registration-based memberships!

When a customer registers for an account, they’ll be added to the “waiting room” plan. Once you’ve reviewed the application form (i.e. their registration), you can move them manually to the true membership plan. Now you’re all set!

Here’s an overview of the workflow:

  1. Customer fills out your registration form.
  2. Customer is added to the registration plan.
  3. Merchant reviews user details.
  4. If approved, merchant moves the customer to the true plan.

Product purchase memberships

There are two ways to use the “waiting room” method while requiring product purchase. They vary based on when in the process the user purchases the product. 

Apply > approve > purchase

This method uses three plans to ensure that only your approved candidates are able to purchase the product that grants access to the membership:

  • Registration plan – the waiting room
  • Manual access plan – the approved candidates pool
  • Product purchase plan – the true membership

With this method, the registration plan doesn’t have any special content assigned to it, as in the previous setup. However, you’ll restrict the product that grants access to the true plan to your manual plan. This means that only approved candidates can purchase the product that grants membership access.

Here’s the workflow for this setup:

  1. Customer fills out your registration form.
  2. Customer is added to the registration plan.
  3. Merchant reviews user details.
  4. If approved, merchant moves the customer to the manual plan.
  5. Customer can now purchase the product that grants access to the true plan. 
  6. Once the customer purchases the product, their membership will begin. 

While this method adds an additional step for the user, this lets you approve the member before they make any purchases. So, you don’t need to worry about offering refunds for rejected members. 

Purchase > approve

⚠️ Caution! With this method, you’re collecting payment before you decide if a customer should be allowed membership access. Click here to read our warning about this type of setup.

This is a more streamlined, but a slightly less conservative way of adding an apply/approve component to your membership plan. This method involves only two plans:

  • Product purchase plan – the waiting room
  • Manual access plan – the true membership

In this case, the product purchase plan is the “waiting room”, so it doesn’t have any particular perks on its own. If you decide to use this style, you’ll require applicants to make a purchase first. If you need to gather information from the customer during this process, consider using WooCommerce Product Add-Ons to add some extra fields to your product. You can also include some notes in the product description to inform users that their membership may start after 1 business day, to give yourself some time to review their order.

Here’s how this process will work:

  1. Customer purchases product and is added to the waiting room plan.
  2. Merchant reviews the order and any other details.
  3. If approved, merchant moves the customer to the manual plan. 

Three easy steps! 

Method 2: Grant membership access for Completed orders only

⚠️ Heads up! This method requires adding a snippet to your site, which we consider a customization not covered by our support policy. Proceed at your own risk! We highly recommend using Code Snippets to safely add snippets. 

⚠️ Caution! With this method, you’re collecting payment before you decide if a customer should be allowed membership access. Click here to read our warning about this type of setup.

With this method, you’ll install this snippet on your site. Once installed, all orders for products that grant access to membership plans must be placed in “Completed” status before the plan begins. 

By default, WooCommerce only places orders for products that are both Virtual & Downloadable in “Completed” status after receiving payment. So as long as your membership products are not setup as Virtual & Downloadable (Virtual on its own is no problem), all orders for these products will go to “Processing” status after receiving payment. This gives you the opportunity to review the order and the user (since membership products can’t be purchased by guest users) to determine if they qualify for membership. If so, change the order status to “Completed” to start their membership plan!

✅ Note: If you like the simplicity of this method, but don’t want to require payment for your membership plan, you can also setup your membership to grant access upon the purchase of a free product! If you decide to go that route, please check out our guide to simplifying free checkouts in WooCommerce.

Here’s a look at the workflow for this method:

  1. Install the snippet on your site.
  2. Customer purchases product that grants access to membership.
  3. Once payment is received, order moves to “Processing” status.
  4. You review the order and, if approved, move the order to “Completed” status.
  5. Customer’s membership begins.

⚠️ On gathering payment before granting membership access…

For the methods above that collect payment before you’ve approved the member, there’s one major pitfall you should consider – you may need to issue refunds for customers whose “applications” you reject. Be very sure that you’re okay with having to process refunds before setting up this process. 

We only recommend using this method if you have the time and resources to issue refunds quickly, and use a payment gateway that supports automatic refunds

Published by Lindsey Fogle

Lindsey is a product manager at SkyVerge based out of Charlottesville, Virginia. When not sneaking Harry Potter references into SkyVerge docs, you’ll find her hiking up/skiing down a mountain or perfecting her homemade pizza.


  1. Thanks for this info! Hoping, in the near future, you can enable some sort of functionality that will capture payment details of “Pending” users, without charging them until they are “Approved”. Would be very useful to have baked-in functionality for membership approvals.

  2. HI,
    We are trying the code snippet on our membership and subscription. Two issues are happening; 1. The processing order and completed order email triggers are not working. If we deactivate the code, then email triggers happen.

    The membership is not changing to active. Event manually, it’s stuck for some reason on delay.

Hmm, looks like this article is quite old! Its content may be outdated, so comments are now closed.