Secret shopper

  1. Create a project
  2. Add a task pool
  3. Upload tasks
  4. Start the pool and get the results

Walking (field) surveys are completed in the Toloka mobile apps for Android and iOS. A performer chooses a point on the map where they need to go to check something and take photos.

You may need additional projects for your task, such as dataset pre-check or checking performers' responses. Learn more about this in Designing the solution architecture.

The “Secret shopper” template is suitable for various checks, such as:
  • Monitoring the work of employees.
  • Checking the condition of cars, for example, taxis.
  • Checking the employees' appearance.
  • Checking the service of stores and restaurants.

Let's say you need to check the work of employees in one of your restaurants.

To do this, create the following task: the performer will need to come to the point, buy the product, fill out the questionnaire after the purchase.

Example of a prepared task

Create a project

The project defines what the task will look like for a performer.

  1. Click the + Create a project button and choose the Secret shopper template in the field task block.

  2. Enter a clear name and a short description for the project. Performers will see this in the task list.

  3. Write brief instructions or edit existing ones (see the recommendations). Use HTML tags to insert links, pictures, and so on. Field task instructions should be easy to read even on a mobile phone screen.

  4. In the template, the Map option is enabled automatically. So a user will see tasks as points on the map and be able to choose any.

    Address and Coordinates will be displayed when the performer chooses a point on the map. These fields contain an input field that will be changed later.

  5. To show the name and description of the point in the task, edit the fields:
    • Address: {{inputParams['address']}}.
    • Coordinates: {{inputParams['coordinates']}}.
  6. Note. This tutorial shows how to create a task interface in the HTML/JS/CSS editor. You can also try creating a task interface in the Template Builder.
    Define which objects you are going to pass to the performers and receive from them in response. To do this, add input and output fields in the Data specification section.
    What are input and output data?

    Input data is types of objects that are passed to the performer for completing the task. For example, this could be a text, an image, or geographic coordinates.

    Output data is types of objects that you receive after the task is completed. For example, this could be one of several response options, typed text, or an uploaded file.

    Learn more about input and output data fields.

    The template includes:
    Input data fields
    • skill_name — The restaurant name.
    • address — The task address.
    • coordinates — Coordinates of the point where toloker should come.
    Output data fields
    • audio — Array of files, the audio files the performer will upload.
    • photo — Array of files, the photos the performer will upload.
    • video — Array of files, the video the performer will upload.
    • result — The JSON file with the toloker's responses.
    • address — The task address.
    • agreement — The “Yes / no” (boolean) variable — toloker's consent to the task terms (they won't be paid if the task isn't completed correctly).
    • coordinates — The task coordinates.
    • worker_coordinates — The performer coordinates at the moment of task completion, with the “Current location” option turned on.

  7. The task interface describes where the task elements should be arrange, what they should look like, and what logic they should follow.

    You can use standard HTML tags and special expressions in double curly brackets in input and output data fields in the HTML block. HTML describes how the task elements should be arranged in the task.

    JS is used to describe the task logic. Also, the main content of this task is embedded in JS for ease of editing.

    In this project, the texts variable stores the texts for the information and brief instruction blocks.

    The warning variable stores the text for agreeing to the task terms.

    The button_1, button_2, button_3 variables store the questionnaire question blocks.

    The MAX_DISTANCE variable specifies the maximum distance in kilometers from a designated point that the performer must stay within during task completion. You can specify a value that suits you.

    The MAX_AGREEMENT variable specifies how many times the consent block is shown to toloker. For example, if the number 2 is specified, toloker will need to agree to the task terms when completing the first two tasks. If the toloker doesn't accept the task terms from this block (doesn't tick the checkbox), they won't be able to submit the task.

    The template logic includes the ability to add audio, photo, and video files. The minimum number for each format is 1 file.

    Let's say you want toloker to take at least 2 photos, then in this check, replace 1 with 2:
    if (! || < 1) {
        this.errors = this.addError('You should attach a photo', "__TASK__", this.errors);

    If you don't need media files of any of the formats, you can remove them. Don't forget to remove the minimum number of such media files from JS or replace the 1 value with 0. See the example above.

    The template already contains CSS styles, you don't need to change them.

  8. Click the Preview button to see the performer's view of the task.
    Note. The project preview shows one task with standard data. You can define the number of tasks to show on the page later.
  9. Save the project.

Add a task pool

A pool is a set of paid tasks sent out for completion at the same time.

  1. Open the project and click Add pool.
  2. Give the pool any convenient name and description. The pool info is only available to you. Performers can view only the project name and description.
  3. Set the price per task, for example $0.2. For field surveys, always add one task per page.
    What is a task suite?

    A page can contain one or several tasks. If the tasks are simple, you can add 10-20 tasks per page. Don't make pages too long because it slows down loading speed for performers.

    Performers get paid for completing the whole page.

    The number of tasks on the page is set when uploading tasks.

    What is the fair price for a task suite?

    The general rule of pricing is the more time the performer spends to complete the task, the higher the price is.

    You can register in Toloka as a performer and find out how much other requesters pay for tasks, or see examples of cost for different types of tasks.

  4. Set the Time allowed for completing a task suite. It should be enough to get to the place, find the specified point and upload photos. For field surveys, we recommend allocating a day — 86,400 seconds.
  5. Set Overlap, which is the number of performers to complete the same task. For field surveys, it is usually 1.
  6. Turn on the Non-automatic acceptance option and enter the number of days for checking the task in the Deadline field (for example, 7).
    What is non-automatic acceptance (assignment review)?

    The non-automatic acceptance option allows you to review completed task suites before accepting them and paying for them. If the performer didn't follow instructions, you can reject the task. The maximum allowed period for the review is set in the Deadline field.

  7. Add Filters to select performers. To make your tasks available in the Toloka mobile app to English-speaking performers located in Moscow, set the language and region.
  8. Save the pool.

Upload tasks

  1. Click Upload. In the window that opens, you can also download a sample TSV file by clicking Sample file for uploading tasks.

    What is TSV?
    A TSV file presents a table as a text file in which columns are separated by tabs.
    You can work with it both in a table editor and a text editor, and then save it to the desired format. More about working with a TSV file. There is a CSV format that is similar to TSV, but you should use a TSV file for uploading.
    Note. Before uploading the file, make sure it is saved in UTF-8 encoding.
  2. Add input data in it. The header of the input data column contains the word INPUT. For field surveys, you also need to specify the latitude AI:latitude and longitude AI:longitude of the point. You can use a service like Yandex.Maps to get the coordinates.

  3. Upload the tasks by choosing Set manually and set 1 task per page.

Start the pool and get the results

  1. Start the pool by clicking .
  2. Track the completion of tasks in the Pool statistics section.
  3. When the first results come in, you can start reviewing.

    To review assignments, go to the pool and click Download results. To download attachments, click the button next to and choose Download attachments.

    Note. After the specified time period, all responses are automatically accepted, regardless of their quality.