Custom Registration Fields for level 1 and higher

I set up custom fields (address, city, state, zip) for levels 1 or higher.

Level 0 (free subscriber) doesn’t require these fields.

So I put in them in required, comma separated for levels: 1,2,3

The problem is they don’t show up at all.

If I put in 0,1,2,3 or all, the fields show up.

So I am unable to have these fields not needed for level 0 and needed for levels 1 and higher.

Interesting… I’ll take a look now.

The problem is they don’t show up at all.

Where did you look? e.g. free registration form, user profile.


I have a free registration form. Then I have Stripe pro form for level 1 and a monthly subscription. And forms for level 2, etc)

I do not need the address for initial registration (in fact it would reduce conversions)

So I set the fields to show up on 1,2,3. But they don’t show up at all anywhere.
They do show up with 0,1,2,3, or ALL.

So it’s either ALL or NOTHING

Thanks for the details.

I tested it with a custom field I have, applied it to just levels “1,2,3”, and tried a free registration form. With the free registration at level 0, the field doesn’t show, but with the registration set for level 1, it does. I wasn’t able to reproduce the behavior…

What version of s2Member are you using? Could you show me a screenshot of your field’s option, and the shortcode you’re using for the registration? Thanks!


Framework Version 240218
Pro Version 220421

I’m not sure I had the concept right

:"(i.e., they do not appear for any user that is currently logged into the site)."

So I guess there is no way to actually require those fields when an existing user who is logged in upgrades.

Ah, ok… So it’s not on registration, but on upgrade…

Right, I think those aren’t enforced on upgrade, only if they try to update their profiles (e.g. [s2Member-Profile /]).

I think this is something that can definitely be improved in pro-forms. I’m adding it to the feature requests with your vote.

For now what could be done is check (e.g. with s2If’s PHP attribute maybe) the user’s role and if at those levels and missing that required field (e.g. with get_user_field), send him (e.g. with a JS window.location.replace redirect perhaps) to the profile page to update it before he can open other pages, I guess.