[role="xpack"]
[[condition]]
== {watcher} conditions
++++
<titleabbrev>Conditions</titleabbrev>
++++

When a watch is triggered, its condition determines whether or not to execute
the watch actions. {watcher} supports the following condition types: 

* <<condition-always,`always`>>: set the watch condition to `true` so the watch 
actions are always executed.
* <<condition-never,`never`>>: set the watch condition to `false` so the watch
actions are never executed.
* <<condition-compare,`compare`>>: perform simple comparisons against values
in the watch payload to determine whether or not to execute the watch actions.
* <<condition-array-compare,`array_compare`>>: compare an array of values in the
watch payload to a given value to determine whether or not to execute the watch 
actions.
* <<condition-script,`script`>>: use a script to determine whether or not to
execute the watch actions.

NOTE: If you omit the condition definition from a watch, the condition defaults
      to `always`.

When a condition is evaluated, it has full access to the watch execution context,
including the watch payload (`ctx.payload.*`). The <<condition-script,script>>,
<<condition-compare,compare>>  and <<condition-array-compare,array_compare>>
conditions can use the payload data to determine whether or not the necessary
conditions are met.

In addition to the watch wide condition, you can also configure conditions
per <<action-conditions,action>>.

include::condition/always.asciidoc[]

include::condition/never.asciidoc[]

include::condition/compare.asciidoc[]

include::condition/array-compare.asciidoc[]

include::condition/script.asciidoc[]
