Move from s2member to Optimizemember

While s2member support is pretty dead - Optimizemember which was/is a fork of s2member seems to be better in that regard - or at least I guess as good. The big difference however is - that Optimizemember is both supported by SamCart and ThriveCart - so moving to Optimizemember would be an easy solution to get rid of the dreaded s2member checkout experience and support way more payment processors.
As it at least once was a fork of s2member - the structure should be very similar and easy to move.

Maybe they even fixed a lot of the open bugs in s2member. Not sure? But they do seem to have reactive support.
Anyone looked into moving a site with active subscriptions to Optimizemember?

Alternatively - anyone tried to integrate Thrivecart with s2member by simply choosing optimizemember integration?

Hi Felix,
OptimizeMember (OPM) is s2Member on steroids.

The Support Staff top notch and they recently added 30+ training videos on setting up and using OPM. I do not think any cover Thrivecart or export/importing members but again, their Support staff is very good.

  • Steve D.

well it’s clear optimizemember is a fork/clone of s2member (in optimizepress there are even still quite a few files called s2member… ) - however they definitely improved some things, e.g. checkout pro-forms are way better than s2member, they did get it right to implement stripe in the same window and not via the awful popup, they got tax handling, they got proper address support so it seems usable in European Union unlike s2member which only works with Quaderno.io or Taxamo (and well only with Stripe). I’m not sure how good they handle if information is missing though - I don’t think they can compare to Quaderno.io or Taxamo in this field at all still - so it looks to me more like another 90% solution that is not acceptable if you are over 100.000€ turnover in EU. So they really cannot compare to Woo/Thrivecart.
Also support from what I could gather is much better.
I guess they kinda realized the payment processors via the custom payment gateway functionality.

Most of the articles/videos I have seen are the same bu…it as on s2member however - there is not much improvement. Originally Optimizepress just asked people to install s2member free version - With OptimizePress 2 they integrated it. Now the big question is - did they fix those countless bugs that plague s2member or is it as unstable as s2member and only works in 90-99.99% of cases (e.g. new user emails not being sent in I would say 1% of new user registrations, (s2Member / API Notification Email) - Payment, emails being dropped. Or even worse Stripe subscription users not demoted if payment fails in 75% of cases.

Thrivecart provides on their page a tutorial on how to make it work with Optimizemember/Optimizepress - so that’s fine.

I hope their 30 day money back guarantee is flawless - if they have the same import/export users module like s2member which I guess - then it would be very simple to move over users.
Export users - change levels to the optimizemember naming scheme in CSV, then reimport them.

I do wonder how they got into s2member - guess they bought the sourcecode once? Problem with optimizemember stays the IMHO horrible to read and cluttered source code of s2member. But it 's probably by far the easiest membership plugin to migrate to - and it does have some support and maybe they did fix the main shortcomings of s2member? The kinda strange thing is - Even though Optimizepress definitely has the edge on s2member Pro- it is the same price more or less.

Question is really also about emails on expiry? For s2member there are quite a few plugins as s2member never did something about it - and then finally 2-3 years ago created a bit lackluster implementation. The thing is of course - if optimizemember is improved a lot - I guess those plugins will not work anymore - if they still work I guess then it’s just from one hell to another hell.

Actually I really think OptimizePress is not having their own Stripe handling - and s2member Stripe Subscriptions simply do not work well with Demotions. I exported all my users - only to find out that s2member also did not demote many users who just cancelled their Stripe subscription.
Now in theory that would be easy to filter those users and demote them - however not with s2member - as could be expected. While for Paypal the last payment date in the user export usually is there - I miss it in 95% of all Stripe payments. So that means you need to check on Stripe/your email tool - if there actually are still payments or not. I had always thought this bug only affects stripe subscription that ran out because the payment did not go through on the 4 try (80% of them are not demoted, 20% are) - but also users who cancel are sometimes not demoted (20% not demoted, 80% demoted).

As well after reading up a bit more about OptimizePress - their Live Editor seems to really suck. Pages built with OP2 are very slow and editing the theme is not on par with other tools like Thrive Themes either. I think OP2 can be used also without using it as a theme. But probably many things then are broken too??? Optimize Press 1 once was a really good page builder - many people loved it. But OP2 seems to be way behind and support that is not too basic also problematic.

I might just give OP2 a try - and see if it works also on its own without using it as a theme (and still provide the enhancements in checkout/proform layout over s2member) - and maybe they are willing to fix the underlying horrible code that gets EOT wrong with Stripe (no it’s not the website that’s missing it - it’s s2member wrongly ignoring it as can be seen by enabling debug logs).
Im really not sure if changing from s2member to OP2 is just a walk from the drain into the gutter for me.

1 Like

How do we know what’s fixed or improved considering there doesn’t appear to be any visible changelog on the site?

If you go to their knowledgebase and search for “changelog” it’ll point you to a link that’s protected by their members area. But you have to be a purchased member to see this content.

yeah - it is all a bit shady in that area. Based on their tutorials you can see that they did their own proforms - but I think the backend is 100% identical to s2member except for patching what they needed to get their proforms working (else not possible to have an embedded Stripe ProForm).
I would also guess they try to sync in changes from s2member as published on github - but not even that is clear. I think they forked it around 2013.

One thing I noticed about OptimizeMember that is an upgrade from s2Member is the number of levels and the ability to increase levels to as many as you want by way of a code snippet in the wp-config.php file.
I tried the same code in an s2Member site and it was a no-go.

I mentioned to one of their Support staff (who was passing my comments to the developers), that one of the features - I forget which, would not work in php7x and some of the language in the setup pages no longer applied due to the updates OptimizeMember had made. That language was directly from the original s2Member setup pages from when they forked.

I’m sure there are more improvements OPM have added but the ability to have 99 levels is what stood out to me. Just to be clear, that is levels - not one level with multiple packages. You can have 99 levels with each having a ton of packages if you wanted to.

well I think I will give it a go next week and try out. The really problematic thing is for me if they fixed the Stripe subscription expiry that is partly broken in s2member (members not always demoted because s2member decides to ignore Stripe API messages as can be seen with logging enabled), but that is virtually impossible to test out in short time.

I’m not fully sure if it is possible to move and if it makes sense - however I will gather below the process what you need to do to try it.

  1. Take your website offline - or at least stop any new user registration/payments/whatever - because this will take some time. Backup everything.

  2. Export all Users

  3. Export s2member settings
    3b) Create a set of test users for each level you need - export them with s2member csv file you you can see the format

  4. Install Optimizepress and Optimizemember - do not activate Optimizemember until you fully finished installing OPM with all plugins and so on.

  5. Deactivate s2member

  6. Activate Optimizemember

  7. Now here comes the funny part - simply import s2member configuration! Note - the levels you set up may be broken. Most other things are fine. Watch out on the General tab - here some settings are missing.

  8. Check Optimizemember Levels and name them the same as s2member levels before
    8b. Delete all users that were created with s2member (first of all their role will not work, second OPM does not read in the paypal/stripe fields and EOT field)

  9. Create the same set of test users as before with s2member - export them. Check the CSV file format if you need to adjust anything - then import the test users from step 3b). Adjust things if needed. Note this will take long if you have many users - as there is this stupid limitation of 1000 users in one go. Stupidly low limitation of s2/OPM.

  10. Redirect https://domain.org/?s2member_paypal_notify=1 to https://domain.org/?optimizemember_paypal_notify=1 so Paypal IPNs arrive properly. With Nginx this is an easy rule in your nginx.conf that does not pose any performance problems. Not sure about Apache.
    Same for https://domain.org/?s2member_pro_stripe_notify=1 and https://domain.org/?optimizemember_pro_stripe_notify=1
    Now is also the time to protect optimizemember-files folder in your nginx rules plus look for any other specific rules in nginx that you wrote for s2member.

  11. Replace all instances of [s2Member with [optimizeMember in your website - I would use the plugin “search-regex” for this. Note that it’s very easy to create havoc here! Test each command on a test site before doing it on the real database or do it before importing/exporting users so you do not have to restart / do another database backup before. 11b Create a symlink from s2member-files directory in plugins to optimizemember-files directory. 11c Rename all instances of [s2If to [opmIf and [s2Get to [opmGet as well as of course [/opmIf] and [/s2If] - best search case insensitive.
    Finally search and replace s2member_ with optimizemember_ and lastly though I think this should not find any occurrence s2member with optimizemember

  • if there are too many occurences of one of the terms - use “Better Search and Replace” plugin instead - it does not show nicely where you change something though.
    I do end up with several
    Post #3093: (s2Member / API Notification Email) - Payment
    s2member-api-notification-email-payment-
  • not sure if they should be changed too? Such hidden posts do not exist for Optimizemember. They are actually found in the Post-URL table.

If you don’t care knowing exactly what you change or not - you could also run a search/replace for s2member --> optimizemember on all database tables with Better Search and Replace plugin. If you do this - you do not need to export/import members!

  • Specifically I ended up with:
    wp_options 59 46 2.396 seconds
    wp_postmeta 48 48 0.094 seconds
    wp_posts 166 134 0.662 seconds
    wp_say_what_strings 24 12 0.068 seconds
    wp_usermeta 110419 102914 71.778 seconds

I’m a bit wary if I should change those leftover s2member instances in wp_postmeta, wp_posts and wp_options.

Watch out for
[optimizemember
vs
[optimizeMember

Maybe it’s best to run all this search/replaces BEFORE Installing optimizemember! It’s really confusing that they use sometimes optimizemember and sometimes optimizeMember.

11d - If you use custom capabilities they have been ported over in 11c.

  1. Actually Optimizemember DOES NOT have a better checkout experience by much than s2member - you can only style it a bit nicer. HOWEVER OPM should be compatible with ThriveCart - actually Optimizepress is using ThriveCart on their own website for the checkout (haha - what a disaster - they sell you something which has same crappy UI as s2member just nicer looking and do not tell you that if you want to have a good looking checkout you need to spend 6x as much as their basic plugin price on Thrive-Cart). So fork out 599 USD plus Sales tax for Thrive-Cart in order to get a nice looking and functional Checkout experience! Well actually you will get one of the best Check Out experiences for that money.

  2. I’m not sure if OptimizePress is of any use, I think you can more or less just think of it as whatever - if you want a modern page builder go for Divi, Beaver, Thrive Architect or whatever - but don’t waste your time with OptimizePress. I would install it just to make sure it’s fine.

  3. Hope that they solved all those s2member bugs with subscriptions not terminating from time to time, and so on. Test the ■■■■ out of it and hope that they honor their support. You have 30 days to return Optimizepress should it be no more stable than s2member. I’m not sure if and which addons for s2member would also work with Optimizemember - because they also never got around turning s2member into a proper membership system with proper user management, proper email system and soever. What you do get is however a really nice modern UI for the checkout with Thrive Cart!
    Actually a support team that maybe is actually reacting - but I’m not fully positive here yet.

Is there any reason to change to OPM? Well yes if you also buy Thrive-Cart then yes. 800USD for finally having a good UI on checkout is worth a lot. I did pay some money to program even a small enhancement to a well known programmer on this forum and besides a lot of time lost trying to explain how it should work it took ages for him to understand - and in the end he refunded me the money because he could not find out how to get it running. Thrive-Cart solves all of this. No more emails every couple of days of people complaining about having no account when they got lost on the s2member pro form with UI from the 90s. A/B testing for the leadpages/checkoutpages. Modern payment solutions because Thrive-Cart fully supports Stripe and not only Stripe payment methods from 5-6 years ago like s2member. Well actually here OPM is better than s2member because they already support 3D-Secure (which I really hate but without it declines are ever increasing for German and Dutch customers - not having any problems with other nations credit cards though. )
If s2member would be compatible with Thrive-Cart - then I guess there would be absolutely no need for OPM - however s2member is not.
OPM did organize the menu a bit better and managed to put some things to where they actually belong and removed some options that only have one sensible value anyhow (plus removed some features in their documentation but they still do work of course just like in s2). I’m really not sure they are any better than s2member when it comes to updates though - clicking on changelog on their website is broken. I somehow doubt a certain developer has been behind s2member and OPM and as he does not do much anymore it is doomed in the same ways. Maybe if enough people asked - Thrive-Cart could include support for native s2member instead of the need to go via OPM which is essentially just the same outdated, not finished, unpolished product like s2. If only there was a way to get subscribers into a modern membership system. S2member does many things right - like shortcodes, conditionals, and so on which are a lot easier than modern click here, click there systems. But everything included into s2member pro would really need to be rewritten from ground up, and maybe directly requiring a leadpage/funnel tool like Thrive-Cart instead of trying to write all that from scratch. s2member free is not that bad, but the pro module is really stuck in the past.

I’m not finished yet and still on testing website - above points will maybe still change. I will have to test out their support too. I hope in 1-2 days I can switch to OP2 on my live site and see how it will go. I’ll switch on debugging and lets see. Sadly I’m 99% sure Stripe demotions are as unreliable as in paypal - and let’s see how easy it will be to integrate Thrive-Cart (too bad that only Thrive-Cart advertises compatibility with optimizepress 2 - and not the other way round. Even though of course noone at Thrive-Cart they use the outdated OP2, but OP2 uses Thrive-Cart as it’s the only way to get a nice checkout). Also only then I will be able to tell if my treasured s2 Renewal Reminders by Jonathon Williams (it’s the only reliable renewal reminder for me - as s2emails Pro (s2plugins.com) has inherent problems (i bought it too - but last time I tried it out - 4 month ago - it would not send all emails that should have been sent will still work. If not hopefully it will be easy to adapt.

One thing I’ve learned so far - support at OPM is great. They respond quickly and know their stuff. Also they agree that the proform checkout/Stripe Pop up is just horrible - and email management way too basic and not good, no proper user account site for members, no invoice integration except via Quaderno or Thrivecart and so on. Something at s2 no one ever acknowledged or deemed important (and well - what that leads to - is clear to see).

Missing Features:
No sortable EOT column for members list (can be added via mu-plugin - as it had to with s2member many years ago).
No last login Time column for members list.

Problems: ThriveCart integration is really easy and great - well it’s too easy. It’s impossible as it seems to pay for a fixed price period! You can pay for subscription but they do not seem to offer X years for X Euros. That really sucks. I opened a ticket and will see how it goes.
Also ThriveCart taxation integration is simply great - I do wonder how they can finance this for the 599 USD - as they claim to be using Taxamo like service for this. Now assume that you have like 900 invoices each months - then Taxamo alone would cost around 599 € for a year. There is a big problem with the integration however - it’s not possible to include the taxes in the sales price - it can only be added up on top. Usually Taxamo or Quaderno.io (the two best taxation solutions by far!) offer such an option. Now of course I could keep on Using Quaderno.io - but for Paypal this would be very difficult - as Quaderno also needs the IPN message and Thrivecart wants itself to receive the IPN. Well maybe I use ThriveCart only for Stripe - and keep Paypal buttons for Paypal. Let’s see.
The ThriveCart integration is clearly not possible with s2member - seems quite a bit of customizing here on the part of optimizemember.

In the end with OPM sharing the huge shortcomings from s2member - meaning horrible UI proforms, bad email management, it does not help that they seem to have a much better support, and more stable Stripe integration (they wrote that part themselves). I will move over to OPM if there is no way to port my users to Memberpress.
I will however try if it’s possible to use OPM or S2 for restrictions/locking - and use Memberpress only for signing up new users, user account management, invoices, emails and so on.
The big problem is that right now they are building a new/improved pagebuilder - and resources for revamping or ditching s2member legacy code won’t happen before mid 2019 most likely. They did hint to me that they will probably write it newly from scratch - but keep support for the old OPM/s2 for some more years.

I really wish I knew all of this before buying s2 pro forms.

Good news from the ThriveCart front - Josh, the CEO of Thrivecart just confirmed to me that they will correct the OPM integration - plus also very soon provide Sales tax inclusive pricing within 1-2 weeks timeframe - and much better VAT/invoicing support arriving in 6-8 weeks of time.

So I look forward to soon migrate away from s2 to OPM - will see what I have to adapt on my EOT email plugin to also work with OPM - but I think that cannot be too bad.

So finally there will be a really nice and highly converting checkout - coupled with s2member/OPM content protection plus a really well working support team (something s2member NEVER had - even 7-8 years ago support with s2 was really lacking in my eyes).

Hi,

This news is interesting and encouraging indeed, but if the OptimizeMember plugin was designed from the s2Member plugin, how is the future of OPM not as dark as that of s2Member?
If s2Member is totally abandoned, what will happen to OPM based on it?

Thanks.

well they do have a team of developers - plus good support and a working business model as it seems to me - so they will not let it die. They do think about starting from scratch on Optimizemember however in future. I also think they have way more paying users than s2member ever got. S2member was popular - but mainly the free version - and the pro Version was very cheap.

Also for example they did their own Stripe integration. Paypal and Pro-Forms plus content protection is more or less identical to s2. they forked in 2013.

Yes you have to live with the really bad email integrations - Memberpress is much better in that regard for example. But the main culprit - the proforms are solved with ThriveCart - plus you most likely save the money for Quaderno.io (around 1000€ a year for me right now) as ThriveCart claims to catch up here in the next couple of month.

News from Thrivecart Update -
Most seems to be done - however setting over 365 days as expiry is not working (EOT empty) - and even though especially said to be able to do so - extensions so far do not work and act like new payments.

I guess soon it will all be fixed though - as it’s supposed to work now just a little buggy.

Hi,
Thanks for your help and news :wink:

Actually - new user checkout works now via ThriveCart. So also EOT is set correctly!

Last thing missing now: Renewals with adding time are not yet possible. So far renewal will overwrite existing time on account.

I’ve contacted Thrivecart and optimizemember about it - Best would be of course if the ThriveCart would be prefilled with existing user data - editable except the email address.

I’ve found out that some (very little) shortcodes do not work with OPM. The Auto_EOT shortcode for exmple - but they implemented another solution here.

so I guess I will pretty soon move over from s2 to OPM - I just really hope that ThriveCart can be enabled for renewals with adding time. Else I could try to only offer it for users who have less than 7 day of time left (and then just add 7 days by default). Will have to find a shortcode conditional for that however.
With that shortcode that would mean that like 75% of checkouts could be handled via Thrivecart. If they add proper renewals of course it would be 100% - and thus time to switch for me.

Looking at the shortcodes they did change also quite a bit of s2member core (sadly here reducing some options in terms of simplicity). Rough overview of how this looks like is here: https://help.optimizepress.com/article/414-optimizemember-shortcodes-library
or here: https://help.optimizepress.com/article/418-scripting-custom-capabilities-packages
or here: https://help.optimizepress.com/article/1096-using-optimizemember-shortcodes-to-hide-show-content

It must be noted that at the same time they added content dripping which does not exist with s2member plus improved ccaps

Hey Felix,

The development team have reviewed this and we’ve reached out to OPM directly for guidance on this.

Their API doesn’t appear to offer the ability to add time to the EOT setting. We’re already passing it through to add the time, but this doesn’t appear to work. They also don’t provide the current EOT setting when checking if the member already exists (so we can’t take that information and then add our value to it to overwrite).

So we’ve reached out to OPM support to seek further clarification on if their API supports this functionality you are referring to.

Thanks

Problem is there right now the same as in s2member. The API does not support extending EOT. Optimizepress is likely adding a setting just like paypal that will allow to specify if in that case it should overwrite or be added. Does not look like it’s coming very soon however.

I’m also do not manage to display information based on expiry with OPM (the php code that works for s2member here - fails for me - maybe I’m doing something wrong).
So right now - Thrivecart can only be enabled for new users and level 0/subscribers. It cannot be used for extensions of still active accounts (I would have liked to enable it for all accounts that have less then 8 days left - and then just add 8 days more than announced to keep customers happy - but do not find working PHP code for that yet).

People considering Optimizemember should read their Terms & Conditions carefully.

S2Member software is mostly GPL licensed. Optimizemember is completely proprietary. S2Member license allows you to fix software issues in their free version and in the PHP software in their Pro version. Optimizemember does not allow you to make any software changes…"…you must not…Modify or adapt the Software or merge it into another program in any way".

S2Member pricing model was “pay once supported forever”. Optimizemember states “There are no monthly fees with OptimizePress” and “optional renewal” but you must not “Modify or adapt the Software or merge it into another program in any way”. So their claims are true…you CAN only pay once and choose NOT to pay an annual support fee BUT if the software has a bug and stops being usable then you will have to buy the software again since you can’t fix the bug yourself or pay someone to fix the bug.

Please note that this is my personal interpretation of the Optimizemember Terms & Conditions so CAVEAT EMPTOR (Buyer Beware). Please read the terms yourself and come to your own conclusion.

None of this is a criticism of the Optimizemember product or its licensing. Optimizemember product terms are clearly visible and appear to be commensurate with industry standard proprietary software products T&Cs in the market.

If Optimizemember disagrees with any statements I have made here they are free to join the forum and clarify.

I just thought people should be aware that S2Member and Optimizemember have different license terms.

OptimizeMember has exactly the same license files inside the plugin as s2member.com - actually not even error checked as for example the domain optimizemember.com does not exist and they simply CTRL-F exchanged s2member with optimizemember and S2Member with OptimizeMember and so forth…
And it is also comprised of a pro folder and a free folder (just that they packed the pro folder inside a subfolder of the free folder - instead of toplevel.

Actually as it is inside the free folder, here a case could actually be made for Optimizemember Pro being fully GPL - as you need to dive town into the relevant folders to find out about the split license.

It’s even simply wrong as they have not updated some things:

Copyright: © 2009 optimizePress, Inc. ( coded in the USA )
mailto:support@optimizepress.com http://www.optimizepress.com/

This WordPress plugin ( optimizeMember Pro ) is comprised of two parts:

(1) Its PHP code is licensed under the GPL license, as is WordPress itself.

(2) All other parts of ( optimizeMember Pro ); including, but not limited to:
the CSS code, some JavaScript code, images, and design;
are licensed according to the license purchased.

Unless you have our prior written consent, you must NOT directly or indirectly license,
sub-license, sell, resell, or provide for free; part (2) of the optimizeMember Pro Module;
or make an offer to do any of these things. All of these things are strictly
prohibited with part (2) of the optimizeMember Pro Module.

Your purchase of optimizeMember Pro includes free lifetime upgrades via optimizeMember.com
( i.e. new features, bug fixes, updates, improvements ); along with full access
to our video tutorial library: http://www.optimizepress.com/videos/