Skip to main content

Which trigger, when

A flow cannot run without a trigger. Which one you choose depends on a single question: Who determines the timing? The clock, a monitored variable, a connected system, or your own code. The triggers are then organized into families here.

The time-based triggers and the variable trigger are part of ’s built-in tools , which are available in every flow. All others come with their own plug-in and require a configured connection.

A flow can contain multiple triggers; whether one is sufficient or all must be triggered is determined by the trigger linkage ( Settings for Flows and Templates ). For each trigger, only one transfer runs at a time ( How a Flow Is Executed ).

Time-based: the clock determines it

The Time-Trigger fires at a freely selectable interval, either with a start delay or once a day at a fixed time. The interval is counted from the end of the last transfer, so a slow transfer delays the next one. The Cron Trigger , on the other hand, triggers at times specified by a cron expression—down to the second and up to the day of the week, month, and year.

Typical examples: a nightly export, a metric updated every minute, or periodically fetching data from a source that doesn’t report anything on its own.

Value-based: a monitored variable changes

These triggers monitor a data point or a query result and fire when the value changes or a condition is met. They therefore only perform a transfer when there is data to transfer.

  • The variable trigger responds to a change in a global variable and can be mitigated using a minimum and maximum wait time as well as relative and absolute differences.
  • The triggers of the OPC client cover the following scenarios: value change, threshold value with hysteresis, a set bit, an incremented counter, and the absence of a change. The Data-Change-Trigger does not reliably capture every single change—where no value must be lost, the message or bit trigger with handshake is intended.
  • In the database, the Data-Change Trigger monitors the result of a query, while the Transfer Status Trigger fires as long as records are marked as not yet transferred, and subsequently marks them as transferred or failed.

Typical scenarios: a measured value falls outside the tolerance band, a controller signals the end of a job, or new rows in a table need to be retrieved exactly once.

Event- and message-based: the connected system sends a signal

Here, the remote system determines the timing: It sends a message, calls an endpoint, or uploads a file. The flow waits until this happens and then processes the provided content.

  • MQTT Subscribe subscribes to a topic via a broker connection and makes the message content available to the flow.
  • The Apache Kafka trigger () responds to the projected topics and outputs the payload and key.
  • Conversely, the REST trigger provides an endpoint that an external client calls.
  • The email trigger monitors an email inbox and triggers when messages arrive.
  • The file trigger fires as soon as a file is added to a directory; the Network File Access trigger and the Cloud File Access trigger do the same for a network share and a container or bucket in the cloud, respectively—even when an existing file is modified.
  • On the SAP® side, the IDoc trigger receives IDocs, and connected SAP® systems trigger the transfer themselves via the RFC trigger.

Typical scenario: A machine publishes its data to a broker, a third-party system submits a request via REST, or a supplier uploads a file.

Script-based: Custom code determines the behavior

The script trigger fires when the CheckTrigger method returns true. Its input parameters are fixed during engineering and are not populated at runtime; if the condition requires current values, the script retrieves them itself.

Typical example: a trigger condition that none of the other triggers cover—such as a combination of multiple variables or a state that can only be determined after a calculation.

If none of them fit

You don’t need a trigger at all for a test run: In the status tree, you can trigger a flow manually ( How a flow is executed ). The complete list of triggers for a plug-in can be found in the chapter for that plug-in at Plug-ins .