Using Question Randomization or Loop and Merge to display questions from two different subsets | XM Community
Skip to main content

Hi, I need to set up a survey in a very particular way and I'm looking for help to make it all work:
I need to ask a MCQ with the same choices 20 times.
10 of those times, the question should come from Group A with 225 questions. The other 10 times it should come from Group B which also has 225 questions.
These 20 questions need to be displayed in a random order. How can I make this work?
I tried loop and merge but I couldn't get the order of the questions to be randomized. I also tried creating blocks which have 1 question from each group (2 questions per block) and then randomly displayed 10 blocks, with each block having it's own randomization. That worked, but I needed to manually edit 225 blocks and set up the survey flow for these and that took hours and is not scalable for future versions.
Is there any way I can make this survey work?

The solution depends on if you are willing to unwind data on the backend or not. Here is a solution that will NOT require you to unwind data, but requires a lot of display logic:

  1. Create a MCQ with your 225 A questions as choices, Use Advanced Randomization to display 10 choices evenly presented. Hide with JS.

  2. On the same page, do the same as above with your 225 B questions as choices.

  3. On the next page, create a MCQ with all 450 questions as choices. Add display logic to each choice to only display if it was displayed in one of the questions on the previous page. Randomize the choices. Use JS to click Next.

  4. Create a loop & merge block based on the displayed choices in the MCQ question from step (3). Pipe the question text from the loop & merge: ${lm://Field/1}


https://community.qualtrics.com/XMcommunity/discussion/comment/52575#Comment_52575Hi TomG, thanks a bunch! I tried your solution and it works.
However, as you mentioned, it requires a lot of display logic. Setting it up for 450 choices individually is quite a task. Could you help me understand what you meant by "unwind data on the backend" and if it's simpler to set it up that way?


Could you help me understand what you meant by "unwind data on the backend" and if it's simpler to set it up that way?

What I mean is that with other approaches you wouldn't have data for each question in your response data (i.e. loop 1 won't be the answer to question A1 and loop 450 won't be the answer to question B225).
An alternative way to do it would be to use a webservice or JS to randomly set 20 embedded data fields (your questions) then pipe those embedded fields into your loop & merge setup. With that approach an answer to your loop & merge question could be for any of the 450 questions and you would have to do a lookup to figure out which question the answer refers to.


Leave a Reply