All Quire Formula Operators and Functions Permalink

This guide provides a complete reference to all operators and functions supported in Quire formulas, with clear explanations and practical examples to help you build powerful calculations, conditions, and task logic.

Numeric Operators

Numeric operators allow you to calculate values stored in number-based fields.

Operators What it does Example
+ Add values timeSpent + 100
- Subtract values Cost - 100
* Multiply values Cost * 100
/ Divide values Cost / 100
% Calculate remainder Cost % 3
^ Calculate power Cost ^ 3

Note: You must create a numeric custom field (e.g. Cost) before using it in formulas.

Text Operators

Text operators allow you to merge or concatenate text strings into a single output.

Operators What it does Example
+ Concatenate text ‘This is’ + ‘a task’

Comparison Operators

Comparison operators return true or false based on how two values relate to each other.

Operators Meaning Example
< Less than 3 < 1 -> False
> Greater than 4 > 3 -> True
<= Less than or equal to 4 <= 2 -> False
>= Greater than or equal to 5 >= 1 -> True
= Equal to 2 = 2 -> True
!= Is not equal to 3 != 2 -> True

Logical Operators

not

Reverses a true/false result.

Example:

Not (Cost > 50)

If Cost is greater than 50, the result is false. Otherwise, it returns true.

Note: You must create a numeric custom field (e.g. Cost) before using it in formulas.

in

Use in to check whether values from the first list are fully contained in the second list.

Example:

assignees in subtasks.assignees

Returns true if all task assignees are also assigned to its subtasks.

&

Finds and returns common values between two lists.

Example:

assignees & subtasks.assignees

Returns assignees shared by both the task and its subtasks.

and

Evaluates all conditions and returns true only if every condition is met.

Example:

(Cost > 50) and (due > <today>)

Note: You must create a numeric custom field (e.g. Cost) before using it in formulas.

or

Checks each condition and returns true if any condition has a value.

Example:

Cost or Budget

Note: You must create a numeric custom field (e.g. Cost) before using it in formulas.

List Operators

[field, field]

Use square brackets to combine multiple values into a list.

Example:

[me, #23.assignees, subtasks.assignees]

Returns a list of me, the assignees that are assigned to task with the ID#23 and all the assignees of the subtasks.

Learn more about Quire’s array formulas that allows you to list out or do calculations to a collection of data.

field[index]

Access list items by index (starting from 0).

Example:

subtasks[3]

Returns the 4th subtask.

order by

Sorts tasks based on a specified field.

Example:

subtasks order by any.Cost

Returns a list of the subtasks and orders them based on their values of their Cost fields.

Note: You must create a numeric custom field (e.g. Cost) before using it in formulas.

Tip: You can also specify the sorting order by adding asc or desc at the end of the expression. For example, you can type something like: subtasks order by any.Cost asc.

map

Applies a calculation to each item in a list.

Example:

subtasks map any.Cost * 2

Returns a list of the values in the Cost field of the subtasks and times the values by 2.

Note: You must create a numeric custom field (e.g. Cost) before using it in formulas.

Tip: You can use the any identifier with the map operator to call out the field you want to calculate.

Conditional Operators

??

Checks if the task fits the expression in front of the ?? and returns a true/false value. If the task doesn’t match the expression, then returns the value of the expression after the ??.

Example:

(Cost > 10) ?? 'Reconsider'

If the value in the Cost field is larger than 10, then it will return as true. If smaller than 10, then it will show as false. When there’s no value entered in the Cost, then it will show “Reconsider”.

Note: You must create a numeric custom field (e.g. Cost) before using it in formulas.

?:

Checks if the task fits the expression in front of the ? and return the expression after ?. If the task doesn’t match the expression in front of the ?, then will return the expression after the :.

Example:

(Cost > 10) ? 'Too expensive': 'Reconsider'

If the value in the Cost field is larger than 10, then it will show “Too expensive”. If it is smaller than 10 or if there’s no value entered at all, then it will show “Reconsider”.

Note: You must create a numeric custom field (e.g. Cost) before using it in formulas.

Filtering and Limiting Results

where

Filters tasks that meet specific criteria.

Example:

subtasks where any.Cost > 10

Subtasks that have a cost value larger than 10 will be listed.

Note: You must create a numeric custom field (e.g. Cost) before using it in formulas.

Tip: You can use the any identifier with the where operator to specify the field you want to filter.

limit

Limits the number of returned tasks after sorting.

Example:

subtasks order by desc any.timeSpent - any.estimated limit 3	

It will list out the top 3 subtasks that have a larger time spent value than the estimated time value.

Operator Precedence

In some cases, the order of the calculation can affect the return value of the formula, that’s why it is important to understand the order of the operations in Quire. If you combine different operators in one formula, Quire will perform the operation in the order shown in the below table. If the formula has operators that have the same order, then Quire will calculate from left to right.

Operator Description
( )
.
[ ]
( )
Parentheses
Dot operator
List (Array)
Function call
+
-
not
Unary operators
^ Exponentiation
*
/
%
Multiplication and division
+ - Addition and subtraction
<
>
<=
>=
in
&
Comparison operators
=
!=
Equation operators
not Logical not operator
and Logical and operator
or Logical or operator
?? Conditional operator
where Filter operator
?: Conditional operator

All Built-in Functions

Function Description Example Expected results
SUM() Returns the total of the values. SUM(subtasks.estimated) It will add up all the values in the Estimate fields of the task’s subtasks.
MAX() Returns the largest value in a set of values. MAX(subtasks.estimated) It will show the largest value that can be found in the Estimate fields from the task’s subtasks.
MIN() Returns the smallest value in a set of values. MIN(subtasks.estimated) It will show the smallest value that can be found in the Estimate fields from the task’s subtasks.
AVG() Returns the average value of the numbers. AVG(subtasks.estimated) It will calculate the average of the Estimate fields from the task’s subtasks.
COUNT() Returns the number of items. COUNT(subtasks) It will show the total number of subtasks.
SORT() Returns the sorted order of the arguments. SORT(subtasks.estimated) It will show all the values from the Estimate fields from the task’s subtasks in a sorted order.
DISTINCT() Removes duplicate values and returns only with distinct values. DISTINCT(subtasks.estimated) It will show all the distinct values from the Estimate fields from the task’s subtasks and remove the duplicate values.
ISEMPTY() Checks if the input arguments are empty or not and returns a true/false value. ISEMPTY(estimated) If the Estimate field of the task is empty, then it will show a checked checkbox.
ISNOTEMPTY() Checks if the input arguments are empty or not and returns a true/false value. ISNOTEMPTY(estimated) If the Estimate field of the task is not empty, then it will show a checked checkbox.

Last updated on

Please contact us if you need more assistance.