One question I’ve gotten a lot is how to give members or subscribers a periodic discount for products on your site, which is no easy feat to accomplish. Sites that have subscriptions or memberships that entitle members to a set number of free or discounted products each month have difficulty in creating this kind of system.

WooCommerce Memberships can let you create “Member Discounts”, which essentially give your members a members-only price on your products. However, these member discounts are not limited in usage, e.g., five discounts per month.

WooCommerce Memberships Review: Product Discounts

Create Member Discounts

Limiting automatic discounts like this to a number of usages can be a very resource-intensive process, which isn’t great for your site performance. Instead, this is a much better use case for a usage-limited coupon.

The downside is that member coupons are on the roadmap for WooCommerce Memberships, but not added into the plugin yet. The good news is that there are plugins that can generate coupons for you automatically and restrict them to the customer, making this much simpler.

Using AutomateWoo to Generate Member Coupons

AutomateWoo is a very useful plugin for automating several kinds of marketing and promotional workflows in your shop. We’re going to use it with WooCommerce Memberships to generate a new coupon for your members each month. This could let you:

  • Give members 3 products from the “Downloads” category free each month
  • Give members a new discount each month for all or some products
  • Drip out discounts so member usage is limited each month (whereas a member discount via Memberships is unlimited)

You’ll need just two plugins to get started with this kind of set up:

  1. WooCommerce Memberships$199 currently $149
  2. AutomateWoo – $99

However, I should note that many sites use WooCommerce Subscriptions. Generating coupons based on the subscription renewal instead of time into the membership would be far better, so we’ll be publishing a tutorial on that very soon. If you use WooCommerce Subscriptions, just know that Subscriptions support is coming to AutomateWoo soon, and we’re eagerly awaiting it so we can publish a tutorial on creating Subscriptions coupons (rather than Memberships coupons) 🙂

WooCommerce Member Coupons: Create a Coupon Template

First we’re going to create our coupon template, which will be used to send coupons to our members. You can create one or more templates, and AutomateWoo will use this template to generate a unique coupon for the member that’s restricted to his / her email address. You can also set the expiration date on the coupon so that it expires each month.

Create your template coupon with a generic name, and determine the coupon value. As we’re using this for free “Download” products, we’ll make it a 100% coupon.

WooCommerce Member Coupons AutomateWoo: create template coupon

Create template coupon

We’ll also restrict it to that product category:

WooCommerce Member Coupons AutomateWoo: usage restrictions

Create Usage Restrictions

Finally, we’ll set the usage limit of this coupon so the customer can only use it 3 times:

WooCommerce Member Coupons AutomateWoo: coupon template limits

Configure Usage Limits

Now AutomateWoo can use this template in workflows — it will generate a unique coupon based on this template, but will add the email restriction and expiration date for us automatically.

WooCommerce Member Coupons: Create Coupon Workflow 1

Once we have a template that AutomateWoo can use to generate coupons for members only, we can set up workflows to email members our coupons.

AutomateWoo will let us choose a “trigger” for the workflow. All of our workflows will have a similar trigger: “Order includes a specific product”. We’ll run this workflow for any customer order that includes our “membership” product, as that signifies that someone has purchased a membership.

WooCommerce Member Coupons AutomateWoo: Workflow Trigger

Create Workflow Trigger

Next, we’ll determine when to run the workflow. You can do this right after the purchase, or a set time after the purchase, to send the member the first coupon. The timing is pretty much the only thing that will change between our workflows; workflow 1 will be triggered first, then every new coupon will be a new workflow triggered later (i.e., 30 days, 60 days, 90 days, etc).

WooCommerce Member Coupons AutomateWoo: Workflow Options

Set Workflow Delay

Finally, we’ll add the action AutomateWoo should take when the customer purchases the membership product. While you can add other actions if desired, the one we’ll need at minimum is to email the member the coupon code using the “Send Email” action, and the coupon code will be generated by AutomateWoo in the email. To generate the coupon, we’ll include the merge tag with our template coupon:

{{ user.generate_coupon | template: template-member-free, expires: 30, prefix: wcm }}

WooCommerce Member Coupons AutomateWoo: workflow email

Action: Send Coupon Email

Now our new members will get their first coupons after purchasing:

AutomateWoo WooCommerce Member Coupons: first email

First email sent

And we can then add subsequent workflows to email the next months’ coupons.

WooCommerce Member Coupons: Create Other Coupon Workflows

Now we can set up the rest of our coupon emails, which will be very similar. We’ll need a workflow for each email, and we’ll just increase the delay for each one. We’ll still trigger on membership product being purchased, as there’s not really another way to determine if a customer is a member.

AutomateWoo WooCommerce member coupons: follow up workflows

Create Follow Up Workflows

As with the first email, you’ll generate a coupon code for the member and set the expiration date. This can be the same template coupon, or you can use a different one if desired.

WooCommerce Member Coupons AutomateWoo: Workflow 2 email

Workflow 2 email

Keep adding workflows for each coupon email you want to send to your members, and remember to change the delay for the workflow each time until you have all coupon emails configured.

AutomateWoo WooCommerce Member Coupons: all workflows

WooCommerce Member Coupons: (Optional) Check for inactive members

Since memberships sold with only WooCommerce Memberships are set-length and paid up-front, you probably don’t have many cancellations or refunds, so these workflows should almost always be run.

However, if you do end up refunding a membership, you may want to remove the workflows for that customer so that coupon emails are no longer sent. As a workflow is set up at the purchase (since we’re checking the order for a product), it will not be removed if the order is refunded.

You can easily delete the workflows for your former member by going to WooCommerce > Reports > AutomateWoo. Under the “Queue” section, you’ll see all waiting workflows. Delete the workflows for the customer whose membership you’ve refunded to ensure they no longer get remaining coupon emails each month.

AutomateWoo WooCommerce member coupons: managing scheduled workflows

WooCommerce Member Coupons: Summary

While WooCommerce Memberships can let you create member discounts, these are basically members-only sale prices, and thus can’t be limited to a certain number of purchases. Instead, coupons restricted by email are a much better choice for limiting discounts per month (or overall), and AutomateWoo does an excellent job of generating these on a schedule.

While coupon emails are not tied into active membership status, as WooCommerce Memberships only sells set-length memberships by itself for an up-front cost, you probably don’t need to cancel these emails unless a member is refunded.

Support for WooCommerce Subscriptions is coming in AutomateWoo, which would make generating coupons based on a subscription renewal instead of a membership purchase possible. If you sell memberships with a recurring payment via Subscriptions, this would make your coupon generation much easier and consistent with the member’s billing. We’ll be keeping an eye out for this and will post a similar tutorial using AutomateWoo and WooCommerce Subscriptions when it’s available!

Cover Photo Credit: Carol Pyles (CC BY 2.0 license)
Note: This post may contain affiliate links, which means we get a commission from the plugin, theme, or service provider if you choose to purchase. Regardless of this, we are committed to providing high quality, unbiased resources. Have more questions? See our affiliate policy. You can use the plain links below if you prefer that we not receive a referral commission:

Posted by Beka Rice

Beka Rice manages the direction of Sell with WP content and writes or edits most of our articles to share her interests in eCommerce. Or she just writes as an excuse to spend more time jamming out to anything from The Clash to Lady Gaga. Who knows.


  1. Hi Beka,

    i was asked by automatewoo to contact you here regarding a question i have.

    i have read your post where you use automatewoo and dynamic pricing plugin to give different roles customers a different pricing.

    but i think it will be a better approach to combine automatewoo and woocommerce membership instead as the interface and layout of the membership plugin is much better.

    so my question is this, can we use automatewoo to automatically change the membership plan of the customer after they have spent an XX amount in our store?

    automatewoo support team said that i will need to use the custom action function to achieve it and it’s better to ask you

    looking forward to any replies or help from you


    1. Hey Desmond, I’m pretty sure there’s an AutomateWoo trigger for lifetime spend already, so you’d need some custom code to handle the part about changing membership plan. This would definitely be possible, but it would require the help of a developer to achieve. I’m afraid this isn’t something I have any sample code available for, but the basic gist of what the code would need to do is:

      1. Get the WP user ID for the user (probably provided by AutomateWoo in its action trigger)
      2. Get all memberships for this user so we can see if they have the one we want to change
      3. Loop through each membership to find the plan you want and get the ID of that plan.
      4. This plan is a WP_Post object, so to give the user access to a different plan, change the parent post from the current plan to the target plan’s post.

      I would pass this onto AutomateWoo to see if it’s something they wanted to add support for, and if not, then any WordPress developer should be able to put something like this in place. I typically recommend Codeable for these sort of jobs 🙂

  2. Thanks for finally writing about >Automate WooCommerce Member Coupons with
    AutomateWoo <Loved it!

  3. Hi, I’m wondering which of these plugins can allow tired members only coupon–that means if a premium member got an automatic coupon, gave it away to a friend, and the friend creates a basic membership account, the friend would not be able to use the coupon. Thanks!

    1. Hey Ron, they can indeed — when using the user.generate_coupon field as above, this restricts the coupon to the recipient: “Creates a unique coupon that is restricted to the user’s email.” So it won’t be valid for someone else’s email.

Comments are closed.