Question guards (also called consent gates or validation rules) are server-side validation rules on onboarding questions. They determine whether a participant is eligible to join a quest based on their answers.
How They Work
- Participant fills out onboarding questions
- Answers are sent to the server:
POST /quest/validate-onboarding
- Every question with a guard is evaluated
- If any guard fails → participant is blocked with rejection messages
- If all guards pass → participant can proceed to join
Guard validation is server-side — it cannot be bypassed by participants.
Guard Configuration
Each guard has three fields:
| Field | Type | Description |
|---|
| Operator | string | The comparison operator (see table below) |
| Value | string | The expected value. Single value for eq/neq/gt/gte/lt/lte. Comma-separated for in/not_in. |
| Rejection Message | string | Custom message shown to the participant if they fail. Default: “Your response does not meet the requirements for this study.” |
Available Operators
Which operators are available depends on the question’s response type:
| Response Type | Available Operators |
|---|
text | eq (Equals), neq (Not equals) |
yesno | eq (Equals), neq (Not equals) |
number | eq, neq, gt (Greater than), gte (Greater than or equal), lt (Less than), lte (Less than or equal) |
numberRange | eq, neq, gt, gte, lt, lte |
customOptions | eq (Equals), neq (Not equals), in (Is one of), not_in (Is not one of) |
Operator Details
| Operator | Label | Behavior |
|---|
eq | Equals | Case-insensitive exact match |
neq | Not equals | Case-insensitive non-match |
gt | Greater than | Parses as float: answer > value |
gte | Greater than or equal | Parses as float: answer ≥ value |
lt | Less than | Parses as float: answer < value |
lte | Less than or equal | Parses as float: answer ≤ value |
in | Is one of | Value is comma-separated. Answer (lowercased) must be in the set |
not_in | Is not one of | Value is comma-separated. Answer (lowercased) must NOT be in the set |
When you change a question’s response type, the operator resets to the first valid option if the current operator is no longer available for the new type.
Rejection Behavior
When a participant fails validation:
- Per-question: Each failed question shows its rejection message in a red inline box below the question
- Global: A yellow warning banner appears: “You do not meet the eligibility criteria for this quest.”
- The participant cannot proceed and cannot join the quest
Adding a Guard
- Open a quest and navigate to the onboarding section
- Click on an onboarding question (or add a new one)
- Check “Add validation rule (consent gate)”
- Select an operator from the dropdown
- Enter the expected value
- Optionally customize the rejection message
Worked Examples
Must Be 18 or Older
| Field | Value |
|---|
| Question | ”How old are you?” |
| Response type | number |
| Operator | gte |
| Value | 18 |
| Rejection message | ”You must be at least 18 years old to participate in this study.” |
Behavior: If a participant enters 17, they see the rejection message and cannot join.
Must Consent to Data Collection
| Field | Value |
|---|
| Question | ”Do you consent to your data being collected and used for research purposes?” |
| Response type | yesno |
| Operator | eq |
| Value | Yes |
| Rejection message | ”Consent is required to participate in this study.” |
Behavior: If a participant selects “No”, they see the rejection message and cannot join.
Must Be in Target Demographic
| Field | Value |
|---|
| Question | ”What is your occupation?” |
| Response type | customOptions |
| Options | Student, Professional, Retired, Other |
| Operator | in |
| Value | Student,Professional |
| Rejection message | ”This study is only open to students and working professionals.” |
Behavior: If a participant selects “Retired” or “Other”, they see the rejection message and cannot join.
Exclude a Specific Condition
| Field | Value |
|---|
| Question | ”Do you have a history of epilepsy?” |
| Response type | yesno |
| Operator | eq |
| Value | No |
| Rejection message | ”Due to the nature of the visual stimuli in this study, participants with a history of epilepsy cannot participate.” |
Behavior: If a participant selects “Yes”, they see the rejection message and cannot join.