I added a “Reason for joining” custom field, and put a checkmark on “Required at signup?”. That works well for those that sign up for an account without an invitation. With an invitation, the account is created and the custom field is left blank. So far not a problem.
But when the user then wants to change his/her profile, that empty custom field blocks saving. It is not easily seen why saving was denied, and the error message is also not pointing to the custom field. Also, there is no need anymore to require that field.
Is there a better solution to require new members to declare a reason for signing up?
Thank you, Jeff! Ideally, there’s some better way to ask for a registration reason, but if the error message clearly points to the field in the profile that is empty, I think that would do it. I will probably give all existing members a value, so that they don’t have to fill one in.
I have another version of the issue described in the OP. I have a consent clause to which new users have must agree (tick the box) at sign-up. The custom user field is configured so that it cannot be edited afterwards, but since it is nevertheless displayed on the user preferences, users can still attempt to change it. But when they try to save the preferences they are told “You have not completed all the user fields”, which is confusing for several reasons:
they don’t know what “user fields” are
there is no indication as to which user field is missing
since it is a tick box, there is nothing to “fill in”
the real problem is not that they have not filled in everything, but that they have withdrawn their consent by unticking the check-box
I will work-around this by hiding that user field via CSS, but the UX regarding user fields can definitely be improved.
This is something I’m trying to solve now. I’m breaking up the preferences into tabs. Then we can set preferences within each tab separately, and in the tab where there’s a custom field that needs to be set it should be easier to spot it.