Qualtrics to Psychopy back to Qualtrics

Hi Chelsea,

What do you have in Qualtrics apart from your participant information, demographics and debrief?

If that’s about it, then I now use my VESPR Study Portal for this instead.

It’s not possible to send all of the Pavlovia data to Qualtrics so I pair data (based on ResponseID or session from my portal) when I need extensive data from both platforms.

Theres also the Hexad player user type survey, emotion regulation survey and the attentional control scale survey.

Theres no way to bring the reaction time data over from pavlovia to qualtrics then? If not, is it possible to have step by step instructions of how to embed the link and move from qualtrics to pavlovia and back to qualtrics, as well as how to keep a track of the participant numbers? I have studied the other threads about this, but I am so confused on what all the URL things mean.

Id just like to add aswell that I am using the simple reaction time task in Pavlovia.

@Chelsea send me a message, I can walk you through the process as I have done this several times over for my own study.

1 Like

Thank you! I am having an utter noob moment and cant seem to find the message icon on your profile.

If you want to just send summary data (e.g. mean RT) to Qualtrics then you can do that via a URL variable by using psychoJS.setRedirectUrls(myCompletedURL, myCancelledURL) to add the variable and value.

1 Like

And that will do the mean/average RTT for each participant?
I am still really confused on how the custom URL works / how to know which goes where and how to add that to qualtrics to get to pavlovia and then pavlovia back to qualtrics.

I’m planning to create a video tutorial on this topic over the next few days, possibly with the example Prolific → VESPR Study Portal → Pavlovia → Qualtrics → VESPR Study Portal → Prolific

Would this cover the custom URL? Where would this video be to access?

Id also like to add that for the reaction time task there is a practise run. Would the means URL also copy in the data from that or is there a way to get psychopy/pavlovia not to record the practise run?
Sorry for all the questions!

I’ll post the link (which will probably be on YouTube) to this thread.

I’d rather focus on passing variables through unchanged in an initial video.

You can’t send all the data via URL variables,

So I can specifically use the URL to send the mean reaction time of the actual task and not the practise run?

I look foward to watching the video, im sure itll help immensely!


I recorded a video today. Please let me know if you find it helpful.


That definitely helps - Ill probably be able to get my head around it a bit more once the task is uploaded to Pavlovia.
I do still have a few questions though:

  1. In Qualtrics the participants have a random number generated for their ID, which is in the embedded survey flow. Will I be able to take this to Pavlovia and back?
  2. How will Pavlovia automatically record the average reaction time from the task (The Simple Reaction Time Task), and what will the variable be called to transfer over through the URL? Or will I have to transfer all of the reaction time data through? Keep in mind they do a short practise of the reaction time task, in which I do not want the reaction times recording.

If you are starting in Qualtrics then you could set participant to your random ID and session to ResponseID (a unique Qualtrics variable you can add - see slide 38 of
Qualtrics Primer - Google Slides)

The key to your second question is to calculate an average reaction time in PsychoPy (for example by appending the RTs to a list and then calculating the mean at the end of the experiment). You then need to modify the completed URL using psychoJS.setRedirectUrls()

Awesome thank you! In regards to the mean and list, how is it possible to do that in psychopy/pavlovia? Sorry for all the questions, Pavlovia and Psychopy do not get on well with me!

I am still having some issues with psychopy. I have imported an already made Simple Reaction Time Task (by Deary & Liewald, 2011) into psychopy, but it does not look to be measuring in milliseconds on the excel data sheet…nor do I understand which is the actual reaction times and if an average is being generated. If an average is not being generated, I am still very confused on how to add this in the builder from what you have said above. Any help would be much appreciated, this is for my Masters degree.

By default, reaction times are in seconds.

What I’ve done recently for a Stroop task is:

Begin Experiment in JS only code

median = function (values){
  if(values.length ===0) return 0;

    return a-b;

  var half = Math.floor(values.length / 2);

  if (values.length % 2)
    return values[half];

  return (values[half - 1] + values[half]) / 2.0;

Begin Routine (before trials loop)


End Routine in trial routine

if Response.corr == 1 or Score == 1:
    if thisCondition == 1:

Begin Routine (at end of block)

psychoJS.setRedirectUrls(weblink, 'https://moryscarter.com/vespr/portal/')

Is there any way to change it to milliseconds in the psychopy builder? My knowledge of coding is non-existent.

I don’t know a way of changing the settings for PsychoPy components, but it’s easy enough to save an extra column in milliseconds.


The -500 in my previous code was use to a .5 second fixation at the start of the routine.