One way of incentivising compliance with your EMA project is incrementally rewarding interaction, making participants work towards rewards they can redeem themselves. The coinstore in m-Path is an implementation of this method, and allows you to define digital rewards, which participants can unlock with coins they collect through completing surveys (or by giving certain answers).
How to set up a coinstore
Defining a coinstore is done through a setting in the award module, by ticking the setting: “Is a coinstore/coinpurse”. This setting allows you to either create a store or award coins to use in the store. When you click the setting the following fields will pop up

For now, we will focus on the last field, the “Coinstore JSON”. Here you will enter the main coinstore JSON object, which will define a coinstore. Here’s a sample coinstore:
{
"stores": [
{
"type": "tidbit",
"items": [
{
"type": "tidbit",
"price": 20,
"shortdesc": "Evolutionary psychology",
"tidbittext": "Evolutionary psychology is baloney"
},
{
"type": "tidbit",
"price": 30,
"shortdesc": "IQ",
"tidbittext": "The average IQ is 100"
},
"type": "picture",
"price": 40,
"shortdesc": "Mental Health Doggo",
"pictureURL": "https://i.imgur.com/OB0y6MR.jpeg"
},
],
"categoryname": "Psychologie"
},
{
"type": "visualiser",
"items": [
{
"type": "tidbit",
"price": 20,
"shortdesc": "Bike racing",
"tidbittext": "Bike racing is optimized so much that nowadays, you have to possess a certain genetic configuration to even stand a chance in the professional rankings."
},
{
"type": "tidbit",
"price": 40,
"shortdesc": "Roland Garros",
"tidbittext": "The tennis tournament Roland Garros is played on grass"
},
{
"type": "tidbit",
"price": 20,
"shortdesc": "Healthy",
"tidbittext": "Playing sports is healthy!"
},
],
"categoryname": "Sport"
},
{
"type": "visualiser",
"items": [
{
"type": "visualiser",
"price": 20,
"vizId": "blijzijn",
"shortdesc": "-"
},
{
"type": "visualiser",
"price": 20,
"vizId": "verdrietig",
"shortdesc": "-"
},
],
"categoryname": "Visualisaties"
}
]
}
We will go through the structure level by level.
Top Level
stores:
The only object on this level. It is a list of “stores”, which you can sort of equate to “aisles” in a physical store. They are often grouped by theme.
Store level
categoryname:
This will be the name of this “aisle”, give it a descriptive name that says something about what users will be able to purchase in this menu.type:
This field has two possible values,"tidbit"
or"visualiser"
. These terms are not very descriptive since they are leftovers from a project, and are used now for legacy compatibility reasons, we will explain here what to expect from each possible value:tidbit
: When your store is of the tidbit type, the user will not be able to choose which item they want to purchase; there will just be a button at the bottom of the page that they can click to purchase a random item. The randomisation works as follows: if there is an item cheaper than any other item, this will be the next purchasable item, if there are multiple cheapest options (or all items cost the same) the choice is completely random.visualiser
: When your store is of this type, all items in this category will be listed with their respective prices, and the user can freely choose which they want to purchase right now.
items:
The list of items for sale in this category.


Item level
price:
The amount of coins the user needs to pay to receive this item.type:
This is the type of item this is. This has three possible types:"tidbit"
,"picture"
and"visualiser"
.tidbit
: This item type allows you to reward the user with a bit of text. Using this type allows you to utilize the following item attributes:shortdesc:
A short description of this item: This will be shown as the bit of text on the list tile. Keep this short, ie. “Saturn” or “Stochastics”.tidbittext
: The text you want to show as the reward. A few examples: a fun fact, some feedback, a gift code, etc.
picture
: Reward the app user with an image in the app. Using this type allows you to utilize the following item attributes:shortdesc:
A short description of this item: This will be shown as the bit of text on the list tile. Keep this short, ie. “Saturn” or “Stochastics”.pictureURL:
The URL of where this image is located. Make sure the URL ends in a valid image file format extension like .png, .jpeg or .gif.
visualiser:
This item allows you to hide certain question feedback visualisations (in the homepage) behind a store item. This means that app users will not be able to see the feedback visualisation until they buy the relevant item in the store (they will also be able to buy it straight from the homepage). Using this type allows you to utilize the following item attributes:vizId:
Here you enter the label of the question you want to hide behind the store unlock. They have to match exactly, or this will not work.



How to award coins
If you’ve successfully sent your users a coinstore, it’s time to award them some coins. Functionally, coins work the same as other awards, you can customize them and choose when and where to give them in the survey. There’s two ways of awarding coins, depending on which field you fill in in the coinpurse object.


Award value
If you fill in this field, the amount of coins you filled in will be awarded. So if you fill in 20, the user will see 20 coins added to their coinstore when they get this award.
Award expresion string
If you fill in this field, the amount of coins will be calculated from the calculation you entered. You can use various labels and system values to calculate the amount of coins: refer to the award expression explanation in the Award object for extra info on this. You can for instance use system values like in computations to reward streaks or compliance dynamically.