--- title: Workflow Studio flow trigger types description: Each trigger type defines when a flow starts and the starting data available to it. There are triggers for record operations, dates, and application operations. locale: en-US canonical_url: https://www.servicenow.com/docs/r/build-workflows/workflow-studio/flow-triggers.html release: australia product: Workflow Studio classification: workflow-studio topic_type: reference last_updated: "2026-03-12" reading_time_minutes: 15 breadcrumb: [Flows, subflows, and actions reference, Flows, subflows, and actions, Workflow Studio, Build workflows] --- # Workflow Studio flow trigger types Each trigger type defines when a flow starts and the starting data available to it. There are triggers for record operations, dates, and application operations. ## Record triggers Use record triggers to start a flow when a record is created or updated.
| Trigger | Description |
|---|---|
| Created | Starts a flow when a record is created in a specific non-system table.**Note:** Some common record types such as requests have their own dedicated triggers. See the application trigger types for a list of application records that have dedicated triggers. |
| Updated | Starts a flow when a record is updated in a specific non-system table. Requires selecting when to run the flow.- **For each unique change**: Triggers the flow for every unique update to a non-[system field](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/platform-administration/r_GlobalDefaultFields.md) even if the flow is currently running. **Note:** The system stores a history of every change to a record and determines whether the change is unique. For example, if an incident record's **State** field changes from In Progress to On Hold, the flow can run. However, if the **State** field then changes back to In Progress, the flow can't run. **Note:** Flows that have a record trigger that runs **For each unique change** can produce recursions when run in a non-interactive session. When this type of flow makes a change to the trigger record, the change meets the flow trigger conditions and causes a recursion. - **Once**: Triggers the flow once for the life of the record. - **Only if not currently running**: Triggers the flow for every unique record change if the flow is not currently running on this record. This behavior is the same as the **Always** option in previous releases. - **For every update**: Triggers the flow every time that the record is updated, regardless of whether there has already been or currently are any running contexts for the flow. |
| Created or Updated | Starts a flow when a record is either created or updated in a specific non-system table. Requires selecting when to run the flow.- **For each unique change**: Triggers the flow for every unique update to a non-[system field](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/platform-administration/r_GlobalDefaultFields.md) even if the flow is currently running. **Note:** The system stores a history of every change to a record and determines whether the change is unique. For example, if an incident record's **State** field changes from In Progress to On Hold, the flow can run. However, if the **State** field then changes back to In Progress, the flow can't run. **Note:** Flows that have a record trigger that runs **For each unique change** can produce recursions when run in a non-interactive session. When this type of flow makes a change to the trigger record, the change meets the flow trigger conditions and causes a recursion. - **Once**: Triggers the flow once for the life of the record. - **Only if not currently running**: Triggers the flow for every unique record change if the flow is not currently running on this record. This behavior is the same as the **Always** option in previous releases. - **For every update**: Triggers the flow every time that the record is updated, regardless of whether there has already been or currently are any running contexts for the flow. |
| Trigger | Description |
|---|---|
| Kafka Message | Starts a flow when there's a message in a topic in your Kafka environment. For more information, see [Create a flow with a Kafka Message trigger](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/build-workflows/workflow-studio/create-flow-kafka.md). |
| MetricBase | Starts a flow when a MetricBase trigger is met. Requires the MetricBase application. For more information, see [Create a flow with a MetricBase trigger](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/build-workflows/workflow-studio/create-mb-flow.md). |
| Proactive Analytics | Starts a flow when Proactive Analytics KPI score or KPI threshold values are met. Requires a Performance Analytics subscription to Proactive Analytics. For more information, see [Create a flow with a Proactive Analytics trigger](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/build-workflows/workflow-studio/create-flow-proactive-analytics.md). |
| Service Catalog | Starts a flow from a Service Catalog item request. For more information, see [Create a flow with a Service Catalog trigger](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/build-workflows/workflow-studio/create-sc-flow.md).**Note:** Service Catalog triggers do not support catalog variables as part of the trigger condition. Instead, get or create catalog variables in the main body of the flow. |
| SLA Task | Starts a flow from an SLA Definition record. For more information, see [Create a flow with an SLA Task trigger](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/build-workflows/workflow-studio/create-sla-task-flow.md). |
| Option | Description |
|---|---|
| Run flow in background \(default\) | Flow that runs asynchronously in the background. Use this option for flows that don't require immediate updates and to allow other system processes to run at the same time. |
| Run flow in foreground | Flow that runs synchronously in the current session. Use this option to provide immediate updates to an end user. For example, if a flow opens a task after the previous task closes, use this option to open the next task immediately after a user closes one.**Note:** Running a flow in foreground may block the current session thread and prevent user input until the flow finishes. Avoid running flows in the foreground when they contain actions that cannot be interrupted, such as actions that run script. Actions or flow logic that pause a flow will not block a session. |
| Trigger Type | Data pills available |
|---|---|
| Record | - **\[Table Label\] Record** An object containing the triggering record. - **Changed Fields** An array of objects containing the field values that changed. This data pill is only available for the **Updated** or **Created or Updated** trigger types. **Note:** To process the **Changed Fields** array data pill, you will need to use [For Each flow logic](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/build-workflows/workflow-studio/flow-logic-for-each.md). For more information on working with array data pills, see [Complex data](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/build-workflows/workflow-studio/complex-data.md). - **\[Table Label\] Table** The Sys ID of the table containing the trigger record. - **Run Start Date/Time** Date/Time object that stores when the flow started in the system's local timezone. Use this data pill to pass a Date/Time value to other actions and steps such as the Create record action or the Update record action. - **Run Start Time UTC** Date/Time string that stores when the flow started in Coordinated Universal Time \(UTC\). Use this data pill to pass data to legacy flows that expect UTC date-time strings. |
| REST API - Asynchronous | - **Path Parameters** An object containing path parameters in the inbound request. - **Query Parameters** An object containing query parameters in the inbound request. - **Request Headers** An object containing headers in the inbound request. - **Request Body** Complex data object that defines the body structure of the inbound request. For more information on complex objects, see [Complex data](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/build-workflows/workflow-studio/complex-data.md). |
| Date | - **Run Start Date/Time** Date/Time object that stores when the flow started in the system's local timezone. Use this data pill to pass a Date/Time value to other actions and steps such as the Create record action or the Update record action. - **Run Start Time UTC** Date/Time string that stores when the flow started in Coordinated Universal Time \(UTC\). Use this data pill to pass data to legacy flows that expect UTC date-time strings. |
| SLA Task | - **Task SLA Record** An object containing the triggering Task SLA record. - **sla\_flow\_inputs** An Object containing Task SLA Definition values. |
| Inbound Email | - **Email Record** An object containing the triggering Email record. - **\[Table Label\] Table** The Sys ID of the table associated with the target email. - **Body Text** A String containing the body of the email message. - **Subject** A String containing the subject of the email message. - **User Record** An object containing the user who sent the triggering email. If the sender does not have an associated User record, the data pill lists the object for the Guest user. - **From address** A String containing the sender email address. |
| Metric Base | - **MetricBase Trigger Definition Record** An object containing the triggering MetricBase Trigger Definition Record. - **Level** The Integer value of the MetricBase trigger level. - **Time of Metric Event** The Date/Time value of when the metric event occurred. - **Record** An object containing the record for which metric events have been collected. |
| Service Catalog | - **Requested Item Record** An object containing the triggering Requested Item record. - **Run Start Date/Time** Date/Time object that stores when the flow started in the system's local timezone. Use this data pill to pass a Date/Time value to other actions and steps such as the Create record action or the Update record action. - **Run Start Time UTC** Date/Time string that stores when the flow started in Coordinated Universal Time \(UTC\). Use this data pill to pass data to legacy flows that expect UTC date-time strings. - **Table Name** The table name containing the requested catalog item. |
| Kafka Message | - **Messages** An array of objects containing the messages received from the Kafka topic. Each message has the following data pills. - Headers: An array of headers, with each header containing a Key and a Value. The Key-Value pair provides additional information about the message. Both the Key and the Value are strings. - Payload: A string containing the text of the message. - Key: A sting identifying the insertion order for the message. Messages with the same key are processed in order. |