Using the Woods platform

The platform

Woods is a research platform that recreates an online supermarket. It is designed to support experiments into health behaviour and nudging.

To participants, Woods has all the features of a normal online supermarket. They can browse and search for products, add products to their basket and check out. Woods also contains additional features that help to create a realistic shopping experience, such as shopping lists and basket budgets.

Woods is highly customisable and offers researchers control over various components of the supermarket to support their experiments. Researchers can customise the webpages that comprise the supermarket, the products that appear, how products are organised and more. They can also create banners and customise where they appear (such as on certain products or the basket), and design product swaps that offer alternative items to participants when they try to add certain products to their basket.

How to use manipulations

When a researcher logs in to Woods and creates a study, they will be able to set various manipulations that will change how the supermarket looks and behaves. Below is a list of these manipulations with guidance on how to set them up on the platform.

Grocery set

The setting

The grocery set is an Excel file that contains product information. The products in the Excel file will be the products that are shown on the Woods supermarket to participants.

Press “Upload new grocery set” to upload a CSV. This will populate Woods with the products in the CSV.

Press “Download as CSV” to download the CSV that is currently being used by Woods.

The dataset

The Excel file that contains the product information is organised in a particular way with specific columns.

The Department, Aisle and Shelf columns represent the categories of products on the site, organised into three levels of hierarchy. Shelves are located within Aisles which are located within Departments.

The Products column contains the names of the food and drink items that users can put into their baskets.

The Image column contains IDs that correspond to image files that we have on the database. The portal will take whatever ID is in this column, match it to the image file we have with the same name, and put this image file with the item that is in the same row.

The EAN column contains barcodes.

The Price column contains the price of the item in pounds sterling.

The PackSize and PackUnit columns together specify the size of a product: PackUnit contains the unit of measurement that is used for the product and PackSize shows the size of the product in terms of PackUnit.

EnergyKJ, EnergyKCAL, Fat, SaturatedFat, Carbohydrates, Sugar, Salt, Fibre and Protein all populate the nutritional information tables for each product.

The researcher can add as many items to the dataset as they like. Note: each of the columns above need to have an entry in every row.


The grocery set can contain as many “Flag” columns as the user wants. We call these columns flag columns because they mark items to be treated in specific ways. In particular, products with the same entry in a Flag column will be able to be referred to as a group. These groups can be used as criteria in other settings, such as swaps and badges.

For example, a researcher might want to make a particular setting apply only to organic products. To do this, they could create a flag column called “Organic” (or any name as long as it is not the same as another column name) and type “Organic” (for e.g.) in the rows that contain organic products and “NotOrganic” in rows that contain non-organic products. Now they can add swaps or badges that use this grouping as a criterion (more on how flags can be used in Swaps and Badges sections).

Keywords and searching

The Keywords column is primarily used to guide the Search function.

Woods allows users to search for items using a search bar. This search function works by first looking for full matches (not partials) in the Keywords column. Then, it will look for matches (including partials) in product and shelf names. For example, searching the word “ban” will first prioritise products that have “ban” as an entry in the Keyword column (but not “banana”, as the search matches the keyword exactly, not partially), then it will prioritise products whose shelf and product names contain “ban” anywhere (including “banana”).

The best way to create an effective search function is to use the Keywords column. This column can be populated with terms that people will search for. If more than one keyword is desired, each keyword must be separated by commas in the Keyword column.

For example, if you expect someone looking for Butternut Squash to type “squash”, “butternut” or “butternut squash”, these can be entered into the Keywords column as “squash, butternut, butternut squash” (without the speech marks) in the rows that correspond to the products that you want to come up when people search these terms.


The Pages setting can be used to create custom webpages that contain content specified by the researcher.

Press “Add Page” to add a new webpage. You can then specify its Path (what URL the webpage will use), its Title (how the webpage is referred to on the site) and add Content to the page.

You can specify content by adding and configuring Content Blocks. Content Blocks are configurations of images (either one, two or three images), or a list of products. You select which configuration using the dropdown menu under “Content Block x”. If you are choosing images, after you press one, two or three, prompts to add images will appear. If you are choosing a list of products, after you press Products in the dropdown menu, you will see a Criteria section that will ask you to add some criteria that will specify what products to show on this page.

You can do this for multiple content blocks and pages, allowing you to create pages containing sophisticated configurations of images and specific kinds of products.

Shopping list

Pressing “Add shopping list” will bring up a box in which you can write a list of items that users can refer to as a shopping list. Users will see this list on the right side of the screen and can click the items on the list to cross them off.

Product nutrition

Use this setting to enable or disable the presentation of nutritional information on product pages.


This setting can be used to add item offers that will be presented to users when they select an item. When users choose a certain item, a window will appear showing them the item they chose and one/two items that the user can choose instead of the one they originally chose. Which items are offered and which items prompt an offer when selected are specified using criteria that the researcher can customise.

Pressing “Add Swap” will bring up a list of entries and criteria.

The entries under the Titles heading control the global heading of the swap window and the text that appears in the swap window above the item the user originally selected. These titles will be the same across all swaps.

Under the Swap x heading, you specify the criteria that are used to select items involved in a swap. In the Show title entry, you can type what text will appear above the offered item in the swap window.

Under the Swap Candidates heading, you can choose the first restriction on what items are offered in a swap: whether the items offered have to be on the same shelf, or whether they match on other criteria, including any Flag columns.

Under the Criteria heading, you specify the rest of the criteria that determine what items are involved in swaps using the dropdowns. You can add as many separate criteria as you like.

The criteria are structured as follows. For criteria based on nutritional values, offered items will have [any nutritional value] that is [more, less or the same] than [the chosen item, a fixed value or the shelf mean] by [an amount].

For criteria based on flags, any numerical criteria such as less than, more than or relative to a shelf mean do not make sense, as flags are categorical. Therefore, these criteria are structured more like: offered items will have [an entry in a chosen Flag column] that is [equal to] [the chosen item or a fixed value (which is an entry in the Flag column)].

Using the dropdown at the end of the section headed Criteria, you can choose whether items that are offered must match all the criteria you have specified, or any criteria.

Under the Matching heading, you can choose whether the items that are offered as swaps are within a certain price or quantity range relative to the item originally selected by the user.

The swap window also contains a “Show me another” button that users can press to show other items that have been offered in cases where numerous items can be offered as they all fulfil the criteria. You can turn this button off by ticking the “Disable ‘show me another’ button” option.

Using these criteria alongside entries in Flags columns in the CSV can create sophisticated swaps. For example, you might want paired swaps in which any item only ever has one other item offered for it. To do this, you would give these pairs of items the same entry in a Flag column, then create a criterion where the Flag column entry is equal to that of the base product. You also might only want this to happen for a subset of items, in which case you would make a separate Flag column (“Flag2”) with entries that group items within the subset (“within”) and outside of the subset (“outside”), and have another criterion in the same swap that matches products where this Flag2 column is equal to the fixed value of within.

You can create numerous swaps. If two swaps with different settings are both fulfilled when pressing a given item, two swap offers will be shown alongside one another in the swap window. More than two cannot be shown.


Badges refer to images that appear underneath Products on the Woods pages. You can specify what images are used and for what products.

Pressing “Add Badge” will allow you to upload images and specify the criteria determining when the images appear. There are two image types: Large and Small. Large images appear underneath the product pictures on the screens on which users will browse through products. Small images appear after the product has been added to the trolley and will be positioned to the right of the Product name in the trolley.

The Criteria are used in the same way as criteria for swaps. You can make Badges come up only for items that have a given nutritional value (either fixed or relative to shelf mean) or for items that have a given entry in any Flag column.

Note: these badge images can be any size you like, but boxes and text will be skewed and moved around if images are too big, which will look messy.


Taxes of different amounts can be added to items that fulfil given criteria. Any taxes will be added to the item’s price and below this price it will be stated that a tax of x amount has been included.

Pressing “Add Tax” will allow you to specify what percentage of the item’s price is added on as tax, what this tax is labelled when users view how much they are paying in tax in their trolley, and what is stated below the product price on the screens on which users will browse through products when products have had taxes applied to them.

Note: this label can refer dynamically to whatever has been specified as the amount of tax applied using “${amount}”. That is, if a researcher wants to write below taxed items that “A tax of [amount] has been applied”, if they type “A tax of ${amount} has been applied” as the label, this will automatically print the tax amount applied in place of ${amount}. This makes it easy to keep the labels accurate when changing the tax.

Again, the criteria are used in the same way as Badges and Swaps.


The Sorting setting determines in what order Products are presented on the screen when participants are searching or just browsing.

Pressing “Add sorting” under the Browsing heading will bring up a criterion setting that translates to: when participants are scrolling through products, make sure that items are sorted so that items with [lower/higher] of [any nutritional value] are at the top with [an amount] of noise.

Noise in this case refers to how strongly this ordering is applied. If the weighting applied is 100%, items will be perfectly ordered by the selected nutritional value. If it is 0%, they will not be ordered at all. Percentages between 0 and 100 mean that to different extents, the ordering will apply. If the weighting is relatively high, the objects will be mostly ordered, but not perfectly. If it is relatively low, there will be some ordering, but it will not be very stringent.

The same mechanism applies for the sorting setting under the Searching heading, but this will change how products are organised on the page that users land on after they search for a product, instead of the pages they will see when they are browsing the supermarket.

Basket rating

The Basket Rating is a box that appears in the Trolley section on the right side of the screen. It can contain text, an image and a rating calculated from criteria specified by the researcher. Ratings only appear if they are within a specific range specified by the researcher.

Pressing the “Show a basket rating” button will allow the researcher to specify first how ratings are calculated, and then how ratings appear to the user.

The rating can either be calculated by dividing the total of any nutritional value in the basket by either the total number of items in the basket or the total price of the basket.

The name of the rating that will appear on the screen can be typed in the Name entry and an image that will appear alongside the name can be uploaded. The background colour of the rating box can also be selected using the dropdown. You can then specify the range within which the rating has to be in order to appear.

This allows the researcher to create numerous ratings that appear differently depending on what is in the user’s basket. For example, one might want to warn users of their fat content. In which case, they could specify a rating that is calculated from the total fat divided by the total number of items, then create three separate ratings. The first might have a positive image, message and colour, and would appear if the rating is within a low range. The second might have a warning image, message and colour, and would appear if the rating exceeds the first rating. The third might have a severe image, message and colour, and would appear if the rating exceeds the second. Another example could be showing environmental impact, in which case the images that you specify to appear might be environment-related.

Checkout swaps

Checkout swaps are the same as Swaps, but they appear when the user tries to check out.

They are set up in the same way as Swaps, with the addition of an Eligibility criterion, which determines what items in the basket are pulled out as items for which the researcher wants to offer alternatives. For example, you might want to offer swaps for the top 3 items with the highest fat, or single item with the lowest protein.


This setting allows you to set various conditions users need to meet before they can check out.

You can set a trolley budget that will only allow users to check out if they have not spent over this budget, and you can prevent users from checking out with nothing in their trolley.

You can make a window appear after a user has checked out that asks for their name, address and the times/dates on which they would like to receive their food delivery. This window will offer 5 consecutive days for delivery, so in this setting you can also specify when this delivery window begins.

Under the Trolley Requirements heading, you can make it so that users need to have a certain amount of items that meet criteria, such as x items that have a certain entry in a Flag column (e.g. Organic), to check out. You can specify a message the user receives if they do not meet this requirement.

Onward URL

In this setting you can specify the website to which users are sent after they have checked out. To maintain IDs taken from Prolific or other services into this next website, you can use ${id} as the identifier. Note: you will need to find out the next website’s way of signifying IDs so you can put ${id} in the right place.