I like Doug's solution, but we solved this by creating a select one question (${contact}) that asks the user "how do you wish to be contacted" with (text message, email, phone) as options. Then you make the email and phone questions (both set to required) visible/hidden with a relevant expression. selected(${contact},'email') on the email question or selected(${contact},'phone') or selected(${contact},'text_message'). if the question is relevant, it will be required.