Re: Question about EOTs (and grace periods)

Hi Cristian,

I offer current members a discount if they renew before their EOT. The trouble is that some members remember that their EOT is (say) 23 May, forget that it’s actually 23 May at (say) 11am, and so try to renew their membership at (say) 1pm on 23 May and are disappointed that they’re no longer eligible for the discount. I’ve been trying to think of potentials solutions for this issue, but each of them creates its own problems …

  1. I know that under “PayPal Options” > “Automatic EOT Behaviour”, I could set the “EOT Grace Time” to say “86400”, which would give members an additional 24 hours of access. The problem with this option is that it changes the actual EOT, so in the above case the member would now see that their EOT is 24 May and then (potentially) try to renew their membership at (say) 1pm on 24 May (so they would still be disappointed). Another problem with this solution is that for annual memberships it means that each EOT moves forward by 1 day every year, which can be a bit confusing (e.g. for members who put a reminder in their diary, etc).

  2. I wondered whether it might be possible for “s2Member’s Auto-EOT System” (through WP-Cron) to have the option to only process EOTs a certain period (e.g. 24 hours) after the EOT. For me, this would be a better solution than the above “EOT Grace Time”. For example, in the above situation, the member would still see that their EOT is 23 May, but if they try to renew their membership at (say) 1pm on 23 May, they would still be eligible for the discount. Is such an option for s2Member’s Auto-EOT System something that you might be planning to implement in the near future by any chance? I guess that one (potential) issue with this option is that if the member renews their membership within the grace period (i.e. after their EOT, but before their EOT has been processed), then a decision needs to be made as to whether their new membership period would start from their EOT (which is now a few hours in the past) or would start from the exact point in time when they renew their membership (note: the former option would be better for me, but other people might have different views on this).

  3. I also wondered whether an alternative solution might be to make all memberships end at (say) 11.59pm, which would avoid the above issue. For example, in the above situation, if a member remembers that their EOT is (say) 23 May, then whatever time they renew their membership on this date they would still be eligible for the discount. Is there any straightforward way to implement such a system? For example, if a member buys an annual membership on (say) 23/05/2019 at 11am, is there any straightforward way to automatically set their EOT as 23/05/2020 at 11.59pm?

Thanks,
Steve

Hi Steve.

Those are all excellent points. I have thought about these myself in the past. I’m afraid of changing that behavior because it will affect hundreds of sites that already have it all working the current way and it’ll just introduce confusion. I may introduce this separately, though, because I agree that it makes better sense.

About implementing something in the current one, you could probably create a hack that adjusts the EOT times to your liking. Here’s an example to modify EOTs, it may help you start your own: https://s2member.com/kb-article/can-i-mass-update-eot-times/#toc-6cec260a

About the EOT users see, you could show them a different one without changing the actual one in their profiles. Just change the display with a bit of PHP. E.g.: If it ends in the middle of Tuesday, then tell them Monday at midnight.

:slight_smile:

Hi Cristian,

Thanks for your quick reply.

Yes, I agree that if you introduce a new option into s2Member to set a grace period for “s2Member’s Auto-EOT System” (i.e. for the cron job to process EOTs a certain period after the EOT), then it would be best to leave as a separate option the current “EOT Grace Time” system (i.e. to change the actual EOT by a certain period). This means that you wouldn’t be affecting existing sites, and site owners would be able to choose which of the 2 different approaches to grace periods best suits their needs.

I’ve looked at the KB article you’ve mentioned, and also at the following one:

I think the problem for me is that the only way s2Member can set a fixed date/time EOT for new users is to use PHP on the Pro-Form page to calculate the number of seconds until that fixed date/time. So, for example, if I want a system where a membership bought at any time today will end on 24/05/2020 at exactly 11.59pm, then I need to use PHP to calculate the number of seconds until 24/05/2020 at 11.59pm. The trouble is that I use PayPal buttons, rather than a Pro-Form. This means that by the time the user actually clicks on the registration URL in the Signup Confirmation Email (which could potentially be hours or days after they purchase the membership), this number of seconds will no longer correspond to this same fixed date/time.

I guess that if there was actually a way to set a fixed date/time EOT (e.g. 1 year from registration, but at exactly 11.59pm) using PayPal buttons, then I could use this for new members, whilst for current members I could do a mass-update via s2Member’s “Advanced Import/Export” functionality (i.e. as per the KB article you’ve mentioned). However, without being able to do this for new members, I’d have to regularly do the mass-update for current members (i.e. to keep changing any new members since the last mass-update), which probably isn’t worth it.

Thanks again,
Steve

Yes, I understand what you mean.

In that case, I’d probably use a hack that changes the user’s EOT times to the 11:59pm standard you want, and run it on a cron, maybe once a week, or run it after signup with a hook…

Here’s an example hack to update user access, but in your case you’d modify their EOT time. https://s2member.com/kb-article/rolescapabilities-via-php/

:slight_smile:

Thanks for your help Cristian.

1 Like