I think it could be multiple things:
- If the users are self-reporting their ages, they might be not comfortable with sharing that information. If this covariate is not relevant to your analysis, maybe try adding it as an optional field. You can try and get this data by asking other questions that aren't so direct and would still place them in a particular age category. But if you really don't need this covariate, I'd just leave it out and assume your sample will be random enough for this experiment to work.
- It might also be the case that not all visitors are interested in your survey, so you are getting more respondents from a specific age range. Is there any other source of data you can use to determine how big each group is, and figure out better ways to solve your sampling issue? Did you, for example, get a different distribution on your email responses vs. website?
- About skipping, I'd actually worry about survey noncompliance if the skipped questions are generally the same or if a particular group is jumping questions at a higher rate. You might end up getting data only on people who feel good or positive towards your survey and disregarding the rest.
Validating the Experiment
I'd start validating the sample first, to make sure that the discrepancy between the expected and observed exists. If analytics is reporting visitors in the 18-24 range, and they are interacting with the site in some way, there are probably records of their interactions like emails, social accounts, etc. Normally I'd expect the distribution of users to be similar in all channels. If not, the problem is presumably related to the measurement tool, in this case, Google Analytics.
Let's say the measurement tool works fine and we do indeed have the reported distribution, then we need to verify if the survey prompt was equally distributed. If the plan was to assign the survey randomly, were the requirements met? Are we observing conditions which could make a certain group of users be active during a certain period of time, a moment of the week etc?
If this is not the case, then we need to look at pre-existing conditions that could have influenced their responses, maybe the majority of non-respondents participated in a previous experiment that was run on the site and, in the process, their confidence when interacting with the site was affected.
If we find no evidence for this, I think the simple solution is to redesign the survey or try other survey methods like interviews.