Why WooCommerce Memberships Ending Soon Email Doesn’t Work?

I’ve been working with WooCommerce Memberships and Subscriptions projects since 2015, and I had to do this research long time ago. Well, but better later than never, right?

#WooCommerce, #WCMemberships  /    /   6

If you use both WooCommerce Memberships and Subscriptions plugins on your website you may wonder why "Memberships Ending Soon" email is never sent.

WooCommerce Memberships Ending Soon email
WooCommerce > Settings > Emails

First reason – there is a hook, which turns off this email if a Membership is connected to a Subscription

There is a hook woocommerce_email_enabled_WC_Memberships_User_Membership_Ending_Soon_Email deep inside WooCommerce Memberships plugin, so, the Subscriptions plugin connects to this hook and:

  • gets a user membership with wc_memberships_get_user_membership(),
  • checks if this membership is connected to a subscription or not with wc_memberships_is_user_membership_linked_to_subscription(),
  • returns false if connected.

Example of overriding this scenario:

add_filter( 'woocommerce_email_enabled_WC_Memberships_User_Membership_Ending_Soon_Email', 'misha_override_ending_soon', 30, 2 );
function misha_override_ending_soon( $is_enabled, $user_membership ){
	return true;

Do you think anything will change if you use that hook? Lol, it won’t.

Second reason – scheduled action will not be created for Memberships without an expiration date

But as you can see below, all Subscription-based memberships doesn’t have an expiration date.

Memberships connected to subscriptions do not have an expiration date
Go to WooCommerce > Memberships and look at the Expires column.

So, even if you run the hook I mentioned above, Ending Soon emails (wc_memberships_user_membership_expiring_soon hook) won’t be scheduled anyway.

But why WooCommerce does it? I think it is because subscriptions doesn’t support early renewals at this moment. So, there is just no reason to send a reminder a couple days ago because you can not put the renewal link into the email.

How to Make Ending Soon Emails Work for Subscription-based Memberships?

Currently I’m working on a plugin that allows to turn the Ending Soon emails on for Subscription-based memberships too. Leave a comment down below 👇 if you want me to send you the link to the plugin once it will be ready.

Misha Rudrastyh
About the author Misha Rudrastyh

Passionate about WordPress and snowboarding, creating websites for over 10 years! Let's work together — just contact me.

If you are a developer too, subscribe to my facebook page.

Comments 6

  • Hi Misha,
    I would be very interested to see your plugin once it is ready.

    • Hi Scott,

      I’m glad to hear that and I need your help.

      Please describe here in details how are you going to use the plugin? Because I’m a bit stuck in functionality. Not sure what is needed for people.

      Are you using both Subscriptions and Memberships? Do your customers have multiple memberships or subscriptions? etc :)

      • I think that the elements you have outlined in your article are the features I would be looking for.
        The option to have subscription renewals send a reminder a couple days/weeks before the end date is really important to ensure the subscriptions are renewed.

        When a subscription is linked to a membership level, this becomes even more important.

        The “Membership Ending Soon” email (and/or the “Subscription Ending Soon” email) should ALWAYS be sent.

        I would like to see all Subscription memberships have an end date enforced.
        If this is not possible, then adding options for Admins to dictate what time-frames to use to send the “Subscription Ending Soon” email would work.
        Eg: Send renewal reminder email 330 days after start & 355 days after start.

  • Misha,

    Thanks for the excellent post.

    I have a site where I have a Membership plan enabled for a free trial and a separate plan for the actual paid product. I have people with expiration dates (which I have manually modified via SQL query to extend the trial) and these individuals are not linked to a subscription. Emails are not being sent on what I think is the correct schedule.

    I’m really interested to understand how the hook works – does it trigger at the exact time and date of a membership expiry? Is there a batch process running at some point? Any info would be helpful.

    • In regards to functionality of your plugin – I get why they have set it up this way – as a recurring monthly subscription (my use case) does not want an email sent to customers each month – I simply want the system to take a card payment and send a paid invoice.

      I can see however other use cases where you would want membership ending emails to be sent in all cases.

      Happy to chat on DM / Slack etc

    • Hey,

      Does WP_Cron work on your website?

Comments are closed.
If you need my personal help, please contact me. Contact me