Questions & Variables
When an end-user opens the Insight, a question dialog corresponding with the variables you've defined is presented as below:
Adding variables
The first step when creating a Insight is to decide if it needs any variables (inputs). Variables are presented to end-users of the Insight or template in the form of a question, and the options presented depend on what type of variable is used.
To define a new variable, click the Custom
menu at the top and select Variables / Questions
:
Variables can be divided into three categories:
Simple variables — a simple number, boolean, date or text (can be displayed as an options dropdown). An example is the monthly advertising budget in dollars.
Event variables — a specific event. Can be used for example to give insight into what behavior leads to
payment
, which is the conversion event input variable.User/event property variables — a specific number, boolean, date or text property of a specific event or user. An example of an event property variable could be the
price
of the item for theadd to cart
event, used for example to give insight into shopping cart abandonment related to value added to cart. Similarly, user properties can be defined as input variables and be used in any analysis.
Click the dropdown Select variable type
and then choose Template Variables
. For simple variables as describe above, choose one of Text
, Number
, Date
or Yes/No
. For event variables select Event
. For User/Event property variables choose either the correct type from Event Property
or User Property
.
The question to the end-user can be specified in the field Question for end-user
.
The description is optional, and can be used to give the end-user some ideas on what values to pick.
Under Enter a variable name
enter a valid JS variable name (use only letters, numbers and underscores), and a default value like 7
, e.g. for a pre-filled number of days to forecast.
By checking This variable is optional
, the end-user doesn't have to answer the question.
For event and user properties, if a specific property like price
of the event add to cart
is not available, but only the event add to cart
, the end-user can for the value of price
use an average item price such as 99
instead. If you don't want to allow the end-user to specify such values as substitutes for actual values, check [✅] Don't allow manual user substitute values
.
The final option is to decide if this variable should show up as soon as the end-user opens the Template, or only when a specific Insight is opened. For the later check [✅] This variable is needed only for Insights
and then visit the Custom Insight
from the top Custom
menu to edit your Insight. Then under the section Select variables for Insight
choose any Insight only variables. Template variables can be shared and used in all Insights, reports, intelligence, segments and user properties within a Template, while an Insight only variable are only available to that specific Insight.
note
If you'd like to pass through the end-user's answer as input parameter of an Intelligence plugin's input data parameter, choose here the Template Variables
and then Event Property
, with the right type of the parameter. For more details see the working with Intelligence plugins section later.
The reason is that Intelligence plugin input data is always based on specific properties of events a user interacted with. For example, a recommender plugin may use the color
property of the view_item
event, as input data to build a recommender model based on the color of items users have interacted with.
Reading assigned variables
Once the end-user has assigned all questions, they are available in the JS and JSX contexts using the global variable questions
.
For the example questions dialog screenshot above, here is how the questions
JSON object looks like:
Each key corresponds with the variable name specified. Each object has a few keys:
name
— a human readable name that can be presented to end-users. For events this is the event name, for user/event properties this is the human readable name of the property.value
— the value chosen by the end-user. For simple variables this is the value as-is. For user/event properties this is the actual property field such asu_col_initial_campaign_source
which can be used in reports, intelligence, custom SQL and more.event
— only available for event variables. This is actual name of the event such aspayment_completed
, and can be used in reports, intelligence, custom SQL and more.valid
— if a variable is optional this property istrue
if the end-user has filled in the value, andfalse
if left empty.substitute
— if a user/event property variable allows end-user substitution, this is set totrue
. Used when the end-user used a substitute value for an event/user property, such as99
instead of an actual event numeric property.