Importing Qualtrics Surveys

My name is Nikita, I work on PsychoJS and all kinds of web-things together with @apitiot.
As many of you are aware we’ve launched a survey tool recently. One of the core features that we offer is the ability to import Qualtrics surveys using .qsf files. Currently the version available on Pavlovia provides basic capabilities to import one Qualtrics block of questions with page breaks. In reality of course there’s much more in the works so today I present to you our qsf importer prototype page:

This is the page where we test .qsf conversion to SurveyJS applicable model and survey flow running functionality. It has all the latest features that we currently have regarding importing .qsf files. It has a drag and drop file read available, so you can just toss your .qsf on the page and it will build you a survey. There’s no need to refresh the page for every new .qsf, you can just keep tossing your files in.
Everything on this page works locally in your browsers, so nor files nor survey answers are uploaded anywhere.

As you will notice surveys themselves have a bit different style. They look more like google forms, this is because we’ve created our own version of material design for them, essentially using the same design paradigm as google forms (also let us know your thoughts on it).

Use this page to test your own .qsf files to get an idea of the things to expect to come, report issues and just follow our progress.

Keep in mind this page is a working prototype that we update so it’s ok for things to break and fall apart unexpectedly.


Added support of in-block randomization of questions order. All types: randomize order of all, present only X of questions and advanced.

Hi @lgtst
Thank you for all your work on this.

I am currently working on a rather complicated survey with many nested conditional branching and embedded data. I gave it a go and as a feedback:

  1. does not show input box for radio options i.e. I don’t know (please specify below)
  2. when it reaches a conditional branching it throws me the message below:

Again my thanks


Hello @Yiannis,
Embedded data isn’t there yet. Conditional branching (including nested) currently works only based on responses in previous questions. I hope it’s coming, but not promising yet.
As for input field for radios, I assume that’s where you have a set of radio buttons and then the last one is text field - SurveyJS don’t have such things so it has to be developed for every type of questions I assume. @wakecarter usually goes about those by finalizing things in survey creator, by manually adding additional text field.


Thanks @lgtst
Yes, this is what I mean about input fields.
Yes your suggestion makes sense.

Many thanks

Survey JS does do a text field for the “Other” option which appears at the bottom. Look at the gender question in my PSQI demo

Huh, indeed, didn’t noticed that haha :laughing: But anyways, the point is that qualtrics allows to make any of the option from multiple choice to be a text entry, it’s just so happens that it’s often used to create “other, please specify” option, and they have that for matrices too. SurveyJS on contrary only has this as a setting that you can tick, which gives you one additional option and only for checkboxes/radios. So to fully have that, we will have to build a counterpart that has same capabilities - to supply any option and as many as you like with textfield.

1 Like

Added support of in-question randomization of choices order. Also all types, including random reverse.

1 Like


I have tried importing my gsf file in surveys and on the face of it it worked (see first screenshot), then when I go to the survey and open it it states it’s empty (screenshot 2). I am sure I am doing something wrong (I have tried different browsers (Mac OS CHrome and Firefox) as well as my partners windows machine and no luck. I also tried it on the importer prototype page you link to in your post and nothing (the page is blank)

Any ideas where I am going wrong?

Hi @delicato can you share that very .qsf here if possible?

Does your Qualtrics survey have multiple blocks?

Have you tried dragging it to Nikita’s importer and runner?

Ok, so to keep the conversation consistent and visible to everyone @delicato shared her qsf files to me personally since current settings of the forum engine can’t handle qsf files :slight_smile: .

Long story short - survey presented is quite sophisticated one. It has multiple blocks of questions, all kind of display logic and piped expressions right in the text of questions of the kind that aren’t handled yet. I even fixed few bugs in the converter as I was exploring what’s in that qsf. Currently prototype preview page is up to date so you can see what get’s converted and how it runs.

I added your files to my list of surveys that I’m testing against, so as we gradually improve conversion rate you’ll see your survey functioning more or less the way it’s suppose to be. I’ll keep posting to this thread as relevant advancements being pushed to the prototype page or pavlovia itself.


Embedded data of “Custom” type is now on prototype page. Arithmetic in embedded expressions also should work. Added random function to expression, can be used as rnd() inside expression, returns [0, 1] floating point.

1 Like

Many thanks @lgtst . Much appreciated. Will try these next time I’m back to work. Can I ask you and @wakecarter a couple of things?

  1. I may have missed it but is there a Pavlovia page where such work/changes/progress/new features is published e.g. some sort of a log page? Someone who is interested in knowing if a ```rnd`` function exists is unlikely to easily find this response from you :slightly_smiling_face:

  2. Last time I checked the results of a Pavlovia survey i.e. the CSV file, the order of the columns didn’t follow the order of questions as presented to the Ps. Tbh, I’m not sure what order it follows. Has this been reported before? If not, can this be fixed? Though I’m sure you have a lot on your plate at the moment.


Both (all three) of these points came up in our planning meeting yesterday, which is when @lgtst told us rnd now exists.

I think I might maintain a list of functions here:

Would that make sense to you?

Hi Igtst. Could I ask how/where you could call rnd()? This morning I’ve been trying to make a group allocation question (based on Wakefield’s demo, thanks Wakefield), and was trying to do different things, and one was possibly use a random number (say between 1 and 3). I then saw your rnd() expression answer here. I have tried different functions in the Expression Box on Expression Read Only Question Type (see below) such as random.randint(1,3), randint (1,3) and rnd(0,1) and rnd(), but can’t get it working. I was thinking if I can get a random number I would use it for group allocation (control, condition 1 etc) and then in display logic.

I was talking about a prototype page presented in this thread. You’ve found a correct place to specify an expression, but that’s pavlovia, which doesn’t have latest updates yet. This forum post is about qsf converter and survey runner’s latest features that are more or less possible to demo. My mention of rnd() becoming available in expressions is rather to note that it’s there and soon will be shipped for everyone to use, i.e. community engagement from my side.

1 Like

I was thinking something more like Status of online options — PsychoPy v2022.2.5 i.e. what doesn’t work, what is in progress, which new features are coming soon.

Happy to contribute in any way possible.


Hello @ lgtst
I have tried importing some qsf file in pavlovia survey using different account and browsers. Every time I tried to do so, the qsf files were successfully imported, but when I tried to open them, the pages with the surveys were empty. (like @ delicato)
I also used the importer prototype page and - in this case - it shows the survey correctly.

I attach some qsf files for you to use if you want to try importing them in pavlovia.

Thanks a lot for the help
Elias (9.1 KB)

I’m currently having the same issues when trying to import a consent form I created in Qualtrics. Have you (or anyone else on here) been able to have any success?

1 Like