Participant ID from Prolific to Qualtrics to Pavlovia to Qualtrics

Hi @wakecarter

I can see the participant ID appearing in the ‘participant’ column in my data output, but would it also be possible to have it show in the filename too? I would like the actual ID ‘62d02eea7e03a717bfda7f35’ to show in the filename instead of ‘474144’ which seems to be randomly generated.

474144_low_wm_2022-10-21_08h54.06.775.csv (2.8 KB)

Thanks

In that case you’d need to send the “actual ID” as participant and the PROLIFIC_PID as session or id.

so I would need to change the value in Default of my experiment properties?

This is what I currently have as my Data filename: u'data/%s_%s_%s' % (expInfo['participant'], expName, expInfo['date'])

The PROLIFIC_PID is my actual participant ID.

Yes, delete that assignment of a random number to participant which is overwriting your Prolific ID

I deleted it but it still doesn’t show the Prolific ID in the first part of the filename
_low wm_2022-10-23_17h37.04.315.csv (2.3 KB)
Could you please guide me with setting that up?
Thanks

That one has nothing as participant in the data file. Did you delete participant from the dialogue box completely? You still need the field called participant, but with not default.

If you arrive from Prolific, you should get the PID as the participant value. If you start at Pavlovia, you should be prompted to enter an id.

I think there is at least one version of PsychoPy with a bug relating to this. What version are you using? Possibly there is still an issue:

I’m using v2022.2.1
I also did a run through of the experiment through the Piloting mode - does this result in the Prolific participant ID not being carried over from Qualtrics to Pavlovia? The previous data output was from the Run mode.

While piloting you could set a value as an embedded variable in Qualtrics to test.

Yes, I do have an ID from Prolific in my participant field on Qualtrics. This is the Redirect URL that I am using when piloting: https://run.pavlovia.org/ym25/low-wm/?__pilotToken=b6d767d2f8ed5d21a44b0e5886680cb9&__oauthToken=c82137a35b1b11622aaa3387832e6c95408c2b9cd673b6a272237df6801367fd?participant=${e://Field/PROLIFIC_PID}
I am aware that I will have to change it each time its used, but I thought I could test out the participant field without using up a credit through the Run mode.

For that URL to work you need to have &participant= not ?participant= because you already have a ? earlier in the URL

Got it. So now the participant ID does appear in the ‘participant’ column but it still doesn’t show in the filename :confused:
_low wm_2022-10-24_24h17.10.097.csv (2.8 KB)

That’s useful information. It looks like there is a bug in all 2022.2.x versions which means that only the randomly set participant ID is used for the file name. You might be able to solve it by changing the version to 2022.1.4 in Experiment Settings / General.

I’ll make sure this extra detail is in our “to do” list.

You might also be able to solve the error by adding the following code to a Before Experiment JS code tab

util.addInfoFromUrl(expInfo);
1 Like

From what I can tell, this bug is present in all versions of 2022.x.x from 2022.1.0 to 2022.2.4. If you want to revert versions you need to go back to last year’s release (2021.2.3).

I submitted a bug fix for this issue, so the next release should have participant IDs in the file name as expected.

Thanks for the clarification @wakecarter and @shabkr
I included util.addInfoFromUrl(expInfo); in the Before Experiment tab of my code component, but it didn’t work.
low wm.psyexp (37.2 KB)
low wm_lastrun.py (37.2 KB)

I’m also trying to make the Prolific PID appear in the second Qualtrics survey that my participants are redirected to, but the participant ID doesn’t get carried over to the Qualtrics participant ID field

I’ve set it up as an Embedded Data in my survey flow:

And I’ve added the ?PROLIFIC_PID={{%participant%}} parameter to be passed along in my Completed URL: https://uwaterloo.ca1.qualtrics.com/jfe/form/SV_78IfjUqhD16sBJc?PROLIFIC_PID={{%participant%}}

Would greatly appreciate any help on where I’m going wrong. Thanks!

My test of the browser version of your experiment seemed to work fine in terms of adding the participant id to the filename. Do you have more details regarding what went wrong?
Small note, I would recommend using a separate Javascript only code component for the Before Experiment code you need to add. Currently the code is part of your Python → JS component, which might cause problems, since the code is only for Javascript, not for Python.

I have not used Qualtrics specifically, but I have worked with redirects to other survey sites. You could try $"https://uwaterloo.ca1.qualtrics.com/jfe/form/SV_78IfjUqhD16sBJc?PROLIFIC_PID="+expInfo['participant'] for your completed URL.

Thanks for your reply.

The ID does get added to the filename if it is manually entered, for instance:
apple_low wm_2022-10-24_23h40.55.721.csv (2.4 KB)
but I’m actually getting my ID from Prolific which is passed on to Qualtrics and then Pavlovia.

It works now! I guess it didn’t properly sync up the first time.

I tried formatting the Completed URL as you suggested and can now see the participant ID show up in the second Qualtrics URL
image
but it doesn’t get populated in this Prolific ID field:


My Embedded Data value is also called “participant”

The Qualtrics URL in your screenshot appears to missing the participant= portion. I would double check how the Completed URL in PsychoPy is formated, make sure it includes participant=. My example uses PROLIFIC_PID=, it depends on what you tell your Qualtrics field to look for (in your most recent screenshot, it is looking for participant, so use participant=)

1 Like

Thanks that worked!
Really grateful for your help @wakecarter :smiley:

Hi ymurzello , I think I am having the same issue as you (recruiting participants from Prolific, which are then sent to Qualtrics, then to Pavlovia and back to Qualtrics).
I would like to implement just like you did a seamless ID transition between the plaforms.
Could you please walk me through once again the steps that you implemented?

Thank you very much in advance :))