Previous subscribers not auto-upgraded after modification

Hi, I’ve checked the previous threads, found something similar but not the same and have had no luck in contacting the s2member authors over the course of three months. So I very much hope one of the community can help.

My issue, which started seemingly arbitrarily about three months ago (I know it won’t have been arbitrary!), is that when a Level 0 (free) subscriber uses the modification form to upgrade to Level 1 (paid) access, their subscriber level no longer automatically upgrades.

All funds are received, and the paid subscription id and, if relevant, EOT date/time are populated. But the user remains with a site role of ‘Registered (Free)’ rather than ‘Gold (Monthly)’, i.e. L0 not L1.

Over time, I’ve come to realise that (I believe) this impacts only members who have one or more previous L1+ subscriptions. That is, those paying users whose membership lapsed and they then re-subscribed to a paying level.

Below is an example ipn log file, with all sensitive data redacted (hopefully). I would be very grateful if any of you wonderful community members was able to see what I cannot, and point me in the direction of a possible solution.

Obviously, very happy to share more information on request.

Thanks a million in advance,

LOG ENTRY: Sun Jul 25th, 2021 @ precisely 6:13 pm UTC
PHP v7.4.12 :: WordPress v5.8 :: s2Member v210526 :: s2Member Pro v210526
Memory 47.08 MB :: Real Memory 49.90 MB :: Peak Memory 52.10 MB :: Real Peak Memory 52.99 MB
User-Agent: s2Member v210526;
[txn_type] => web_accept
[txn_id] => 1BP63532XF23xxxxxx
[custom] =>|
[mc_gross] => 6.00
[mc_currency] => GBP
[tax] => 0.00
[payer_email] =>
[first_name] => bxxxx
[last_name] => xxxxx
[option_name1] => Referencing Customer ID
[option_selection1] => 22738
[option_name2] => Customer IP Address
[option_selection2] =>
[item_name] => £6 / One Time Payment (for 2 days’ access, non-recurring)
[item_number] => 1::2 D
[option_name] => Referencing Customer ID
[option_selection] => 22738
[proxy_verified] => paypal
[s2member_log] => Array
[0] => IPN received on: Sun Jul 25, 2021 6:13:10 pm UTC
[1] => s2Member POST vars verified with a Proxy Key
[2] => s2Member originating domain ($_SERVER["HTTP_HOST"]) validated.
[3] => s2Member txn_type identified as ( web_accept|subscr_signup ).
[4] => s2Member txn_type identified as ( web_accept|subscr_signup ) w/ update vars.
[5] => Automatic EOT (End Of Term) Time set to: Tue Jul 27, 2021 6:13:11 pm UTC.
[6] => s2Member Level/Capabilities updated w/ advanced update routines.
[7] => Modification Confirmation Email sent to: “xxxxx xxxxx”
[8] => User exists. Handling payment for Subscription via ( web_accept ).
[9] => Payment Notification URLs have been processed.
[10] => Storing IPN signup vars now. These are associated with a User’s account record; for future reference.

[subscr_gateway] => paypal
[subscr_id] => 1BP63532XF23xxxxxx
[subscr_baid] => 1BP63532XF23xxxxxx
[subscr_cid] => 1BP63532XF23xxxxxx
[level] => 1
[ccaps] => 
[eotper] => 2 D
[ip] =>
[period1] => 0 D
[mc_amount1] => 0.00
[period3] => 2 D
[mc_amount3] => 6.00
[initial_term] => 0 D
[initial] => 6.00
[regular] => 6.00
[regular_term] => 2 D
[recurring] => 0
[currency] => GBP
[currency_symbol] => £
[s2member_paypal_proxy] => paypal
[s2member_paypal_proxy_use] => pro-emails
[s2member_paypal_proxy_coupon] => Array
        [coupon_code] => 
        [full_coupon_code] => 
        [affiliate_id] => 

[s2member_paypal_proxy_verification] => 5a48cb0d4d1ad604daffa9a4e9c10xxx


LOG ENTRY: Sun Jul 25th, 2021 @ precisely 6:13 pm UTC
PHP v7.4.12 :: WordPress v5.8 :: s2Member v210526 :: s2Member Pro v210526
Memory 47.01 MB :: Real Memory 49.90 MB :: Peak Memory 52.12 MB :: Real Peak Memory 52.99 MB
User-Agent: PayPal IPN ( )
[mc_gross] => 6.00
[protection_eligibility] => Ineligible
[item_number1] => 1::2 D
[payer_id] => CB74HX6WB2xxx
[tax] => 0.00
[payment_date] => 11:13:09 Jul 25, 2021 PDT
[payment_status] => Completed
[charset] => windows-1252
[first_name] => bxxxx
[mc_fee] => 0.31
[notify_version] => 3.9
[custom] =>|
[payer_status] => unverified
[business] =>
[num_cart_items] => 1
[verify_sign] => APKiNHykbcLt7PoiWc-ZVdLLpYvYAqvNv9xxxxnHFmL93LiAg22-Vcw
[payer_email] =>
[memo] => £6 / One Time Payment (for 2 days’ access, non-recurring)
[txn_id] => 1BP63532XF23xxxxxx
[payment_type] => instant
[last_name] => xxxxx
[item_name1] => £6 / One Time Payment (for 2 days’ access, non-recurring)
[receiver_email] =>
[payment_fee] =>
[shipping_discount] => 0.00
[quantity1] => 1
[insurance_amount] => 0.00
[receiver_id] => QSCGPPM8ExxxC
[txn_type] => cart
[discount] => 0.00
[mc_gross_1] => 6.00
[mc_currency] => GBP
[residence_country] => GB
[receipt_id] => 5226-5054-xxxx-8117
[shipping_method] => Default
[transaction_subject] => £6 / One Time Payment (for 2 days’ access, non-recurring)
[payment_gross] =>
[ipn_track_id] => 8xxbe4e04bd50
[item_number] => 1::2 D
[item_name] => £6 / One Time Payment (for 2 days’ access, non-recurring)
[quantity] => 1
[s2member_log] => Array
[0] => IPN received on: Sun Jul 25, 2021 6:13:32 pm UTC
[1] => s2Member POST vars verified through a POST back to PayPal.
[2] => s2Member originating domain ($_SERVER["HTTP_HOST"]) validated.
[3] => s2Member txn_type identified as ( cart ).
[4] => The txn_type does not require any action on the part of s2Member.
[5] => s2Member Pro handles Cart events on-site, with an IPN proxy.

[subscr_gateway] => paypal


Any changes in domain name? Try to recreate the payment buttons/forms you use.

Also check IPN at your Paypal account. And other credentials too, as well.

1 Like

Hi Krum

Thank you very much for taking time to reply.

I can confirm that this is a mature (running for seven years) instance of s2member, always on the same domain.

I have recreated the modification forms but still the same.
And the IPN looks fine as far as I can tell.

To be clear, new customers are able to register and pay and get upgraded without a problem; recurring subscriptions are being managed without a problem, and EOT dates are being honoured/access being downgraded appropriately.

The one thing that is not working is when a user who previously subscribed but reverted to the free level after subscription expired, re-subscribes. In this case, the PayPal details are stored and displayed in the Users WP view, so too any EOT date. BUT… the user level is not automatically upgraded as per the modification forms.

A further update on this. It looks like it may be specifically in relation to users who have previously had a “non-subscription” transaction on their account. That is, they previously paid for a fixed period of access.

I still have no idea why this should cause the issue it is…

Did you ever resolve your issue?

About a month ago, I started experiencing similar behavior when free members upgrade their accounts. Payments go thru just fine (both Paypal and Stripe) but accounts do NOT get upgraded.

Can figured out what changed.

No, this has not been resolved. I’m at the point now where I need to engage a developer because I’ve had zero response from s2member staff over the course of a number of months and in spite of several email contacts and this forum thread. Pity, as I used to really rate s2member (still do, actually, but support has evaporated).

Hello Matt,

Not sure if this will help but I was able to resolve my problem.

1.) Look at your /etc/hosts file and make sure the ip address for your server is correct. I had changed my ip address on my server and forgot to change the host file.

2.) Download the s2member scanner and see if you get any errors.

3.) Check your /etc/php.ini file and make sure allow_url_fopen = On

Hope this helped.

I have a similar issue, but with custom capabilities. Existing users that buy more courses on my website do not get their profile upgraded. I have to do it manually after I receive the payment. They don’t receive the automatic email either.

I’m really sad there are no answers from the owner of the plugin anymore, it’s been a while now I don’t see him around in the forum and that makes me think the plugin has been abandoned (again).

Thanks everybody if you can give me an hint to solve this issue.

After some tests I discovered what was causing the issue on my website: Cloudflare Bot Fight Mode.
I turned off this feature on Cloudflare, and everything is working again on my website.
I hope this can help someone what may face a similar issue.

Hi leoravera

Thanks for posting.

It could possibly be to do with Wordfence Security, I guess, but that has a thousand options to test. Turning it off is not really an option as it’s a crucial part of the site security…


1 Like

Hi Hamid

Thanks for your messages.

The server scanner showed all passes. On the /etc/ files I wasn’t sure where to locate them. There is a root etc file which seems to relate to email. Aside from that, I’m not sure where to look.


Hey Matt,

Not sure what to say. I have ssh access to my entire server so I’m able to edit files in the /etc directory. In my case, I have the both the “hosts” and the “php.ini” files in that directory.

On a different note, I too had Wordfence Security plugin installed but had to turn it off because it broke a few things within my site. I would suggest turning it off just long enough to test if your problem (of upgrading users) gets resolved with it off… it may help pinpoint where the problem is stemming from. If it works with it off then you know the problem is the plugin. If it still doesn’t work, then I would suggest you look at the files I mentioned earlier.

To make it easier to test, you can create a coupon code for 99% off the membership fee and try upgrading a dummy free account. That way you only charge yourself a few cents to see if it works or not.

Good Luck

An update on this. It might be to do with a contention with Wordfence plugin, and possibly WP Rocket as well. The problem is all three of these are integral to the running of my site :-/