Constraints are optional and can be used to allow or prevent a macro/action from running based on certain conditions.

Constraints can be placed on macros to allow or prevent the entire macro firing based on the set condition(s). You can also add constraints directly to individual triggers and actions from the 'Edit Macro' screen, by clicking on the trigger/action and selecting "Add constraint"

A constraint is evaluated at the point a trigger fires or actions runs and a macro/action will only run if the constraint condition is true.

By default if adding more than one constraint to a macro they will be combined with an AND condition (e.g. all added constraints must be true). This can be changed in the dropdown in the constraints title to an OR condition. In this case only one of the added constraints needs to be true for the macro to run.

Nesting constraints

If you need more sophisticated logic applied to constraint there is a special AND/OR/XOR/NOT constraint that can be used. Any constraints nested under the logic constraint will have that logic operator applied. It's also possible to nest multiple logic constraints to create complex logic. For example:

AND
 | - Constraint 1
 | - OR
     | - Constraint 2
     | - Constraint 3


List of Constraints

Airplane Mode

AND / OR / NOT

Application Running

Auto Rotate

Auto Sync

Battery Level

Battery Saver State

Battery Temperature

Bluetooth State

Brightness

Calendar Entry

Call State

Cell Towers

Dark Mode

Day of the Month

Day of the Week

Device Facing

Device Locked/Unlocked

Device Orientation

GPS State

Headphone Connection

Is Roaming

Light Sensor

Location Mode

Macro(s) Enabled/Disabled

Macro(s) Invoked/Not invoked Recently

MacroDroid Mode

MacroDroid Variable

Mobile Data On/Off

Mobile Service Status

Month of the Year

[[