The Open Lab is organized by study. A study contains a number of tasks and aggregates participants’ data. After registering as a researcher, the first page that you will see suggests the creation of a new study. Just give that study a name and click on "Enter". If you already know someone in Open Lab with whom you want to share the study, you can enter their email address (or leave it blank and do it later).

After adding a study, you will see the new study’s card, which shows its name and status along with two buttons (to edit and delete the study). The toggle switch at the bottom of the card is gray, meaning that your study is currently not publicly available, i.e., it is hidden from Open Lab participants. However, you can invite participants using a special link that is provided for you. When your tasks are ready and you want to open your study to the public, you can toggle the button to activate it.

If your study already has some research members or participants, this will be displayed on the study card.

After creating a new study, the next step is to add tasks. You can select tasks from the list of existing available tasks and add them to the list on the right by clicking on the green plus button. The order of the tasks on the list corresponds to the order in which your participants will see them. This allows a study to include more than one task.

You can define parameters which will be available for all tasks in your study. You can also randomize these parameters across your participants.

To use it, first, add a new study parameter on this page by entering the name of the parameter and clicking Add. This parameter will be available inside all tasks of this study under the name this.parameters.parameterName. For example, you can create a parameter with the name experimentalCondition. Then, inside of each task in the study, you can get this parameter with this.parameters.experimentalCondition.

After you added the new parameter, you can enter the value of this parameter. Here is where randomization comes into play. If you need several conditions, separate them by a comma. For example, if you enter baseline, treatment into the field, then for one group of participants the value of the parameter experimentalCondition will be baseline, and for the other group the value will be treatment.

Select the replacement type. "With replacement" means that the variable is returned to the urn every time after it is taken from it. "Without replacement" means that the variable is taken out of the urn. The variable can be taken out of the urn when a participant starts the task ("update with the start of the task" option) or when a participant completes the task ("update after the task completion" option). In both cases, the urn is refilled with all variables after it is completely emptied. Watch this demonstration video of the "Without replacement" option to understand what happens to the urn during sampling. Click the "Update study parameters" button at the end to save your changes.

The parameter value will be accessible for you in the table of all participants (under the tab "Data" in the top navigation bar). If you don't need randomization across participants, you still can use constant parameters. For that, do not use the comma in the value of parameter. If you want to delete a study parameter, clear the field and click the button "Update study parameters".

In the current moment, randomization is done with the equal probability for each value to be assigned to each participant. Let us know if you need a more complicated design, and we will be happy to help.

Using parameters enables the customization of your study without having to change and upload the json file again. If a study has parameters, you will initially see them listed next to the task. You can subsequently change and save them using the "Customized" tab. After saving, the task will run with your new parameters.

To create parameters in your experiment script, place all your individual screens into one general sequence in the lab.js builder. For the main sequence screen, add parameters using the special page. Next, in your script in lab.js, you can use the name this.parameters.parameter_name to refer to parameters. When the json script is uploaded to Open Lab, the parameters are extracted and listed on the "Parameters" tab.

The “Invitations” page contains links that allow you to invite more participants to your experiment. You can test these links by opening them in a new window in incognito mode (or after logging out). When a participant is logging in with a participant code, they will be prompted to enter a code. This code can also be sent to a participant, or it may already be known, e.g., as a student ID or other personal number.

If a participant registers using an email address, they will be asked to create an account with an email address and password. The email and password will later be used for authorization. This provides a higher level of security than a participant code alone.

If your study is publicly accessible, it can also be discovered by participants after they have registered using any of the available methods (code, email, or social networks such as Facebook, Google, or Github). Your study will appear in the list of studies in which a user can participate.

With the option to send personalized email invitations (Professional and Lab plan), you can enter the email addresses of the participants, who will then receive an email invitation to your study. Each of the participants will be assigned an individual, unique code, which will also be displayed in your data.

First, we have to redirect participants from Sona Systems to the Open Lab. On the Sona Systems study information page, enter the link to your study in the Open Lab as the study URL. Use one of the invitation strategies described here and include the placeholder %SURVEY_CODE% in the link. For example, in the case of a direct invitation (the participant code is not displayed), a link would look like In the case of an invitation with the code (the participant code is displayed), a link would look like You can find the exact link for your study here. Sona participants will use their Sona ID as their participant code in Open Lab – in the background, the placeholder %SURVEY_CODE% will be replaced by the Sona ID for each participant.

Second, we need to send the Open Lab participants back to Sona Systems when the study has been completed. This will allow us to confirm their completion of the study automatically. Go to the page with your studies and click on the pencil icon to edit your study. You will need to enter the Sona Systems completion URL in the redirect URL field. This URL is usually displayed as the completion URL (client-side) on the page with your study in Sona. Copy this URL and paste it into Open Lab. Replace XXXX in the query survey_code=XXXX with the placeholder %PARTICIPANT_CODE%, so that the url looks like this, for example, In the background, the placeholder %PARTICIPANT_CODE% will be replaced by each participant’s participant code, which in this case is their Sona ID.

You can already start each task individually, but this demonstration page will show you what the whole experiment will look like to participants. A participant will see the test’s name, description, and status (completed or not yet completed). The tasks on the list appear in the order which you specified in the study. Once a task is completed, a participant cannot repeat it.

To get an idea of what the raw data looks like, you can view and download your own demonstration results here. The data is stored as a CSV file with comma-separated values. During the experiment, data is saved in two formats: "incremental", i.e., a new portion of the data is logged each time there is a sufficient time window during the experiment (e.g., when a participant reads the instructions for a new experimental block); and "full", i.e., data are transferred at the end of the experiment. So if a participant interrupts their task, only the incremental data up to the last snapshot will be saved. The results of the demonstration also show you how many records (rows) are stored in the data file.