Flow Designer Triggers in ServiceNow: Every Type Explained

The trigger is the most important decision in any Flow Designer flow. For the specific case of triggering a flow from an external system via REST, see our step-by-step guide. It determines when the flow runs, what record or object it operates on, what data is available as data pills, and how frequently the flow fires. Choosing the wrong trigger — or misconfiguring the right one — is the most common source of flows that run too often, not at all, or at the wrong time. This guide covers every trigger type with real configuration examples, the run trigger settings explained clearly, trigger conditions vs flow conditions, and performance guidance.

Why the trigger matters so much

In legacy Workflow, triggers were simple — a workflow attached to a table and fired on transitions. Flow Designer is more powerful but also more nuanced. The trigger determines:

  • What initiates the flow — a record change, a schedule, a platform event, or an explicit call from another flow
  • What data is available — a record trigger provides the triggering record as a data pill; a scheduled trigger may not have a single record context
  • How often the flow fires — an over-broad trigger on a busy table can fire thousands of times per day
  • Whether the flow can run multiple times for the same record

Getting the trigger right is worth more than any amount of optimisation elsewhere in the flow.

Record-based triggers

The most common trigger type. Fires when a record on a specific table is created, updated, deleted, or any combination.

Created

Fires once when a new record is inserted into the table. Use for onboarding flows, initial notifications, or setting up related records when something new is created.

Table: incident
Trigger: Created
Condition: Priority = 1 (Critical)

Use case: When a P1 incident is created, immediately notify the on-call manager and create a war room record.

Updated

Fires when a record is updated and the trigger condition evaluates to true. The most common trigger type and the one most prone to being misconfigured.

Table: incident
Trigger: Updated
Condition: State changes to Resolved

Use case: When an incident is resolved, send a satisfaction survey to the caller and update the related problem record.

Important: "Updated" fires on any field update if no condition is specified. On the incident table in a busy instance, that means thousands of executions per day. Always add a specific condition.

Created or Updated

Fires on both insert and update. Use when the same logic should run whether the record is new or has been changed. Less common — most use cases benefit from separating create and update logic.

Deleted

Fires when a record is deleted. Use for cleanup logic — removing related records, logging deletion events, or notifying stakeholders. Note: the record is already deleted when this trigger fires, but the data is available as a data pill from the trigger context.

The run trigger setting — the most misunderstood option

On record-based triggers, the Run trigger setting controls how many times the flow can execute for a given record. It is the setting developers get wrong most often.

Once

The flow runs the first time the trigger conditions are met for a record, then never again for that record — even if the conditions become true again later.

Use case: Onboarding notification — send a welcome email when a user's first incident is created.
Setting: Once
Why: You want this to fire exactly once per record, not every time the state changes.

Always

The flow runs every time the trigger conditions evaluate to true on any update. If the triggering field changes to the triggering value, then back, then to the triggering value again, the flow fires three times.

Use case: Send a notification every time a comment is added.
Setting: Always
Why: Every comment addition should trigger the notification, not just the first one.

For each unique change

The flow runs when the triggering condition changes from false to true. If it is already true and remains true, the flow does not re-fire. If it becomes false and then becomes true again, it fires again.

Use case: Escalation flow — escalate when priority changes to P1.
Setting: For each unique change
Why: Fire when state transitions TO resolved, not on every update while resolved.
This prevents re-escalating a P1 that was already P1.

The practical decision: if you want the flow to fire once ever, use Once. If you want it to fire every time the condition is true, use Always. If you want it to fire when a condition transitions from false to true, use For each unique change.

Trigger conditions — the gatekeeper

The trigger condition is evaluated before the flow starts. If it evaluates to false, the flow does not execute at all — no execution record is created, no data pills are resolved, no steps run. This is why trigger conditions are important for performance.

// Expensive — fires on every incident update
Table: incident
Trigger: Updated
No condition

// Better — fires only when the specific relevant change happens  
Table: incident
Trigger: Updated
Condition: State changes to 6 (Resolved) AND Resolved by is not empty

Build trigger conditions using the condition builder — you can use the same field conditions, operators, and dot-walking as in list view filters. See encoded query operators for reference on the condition syntax.

Schedule-based triggers

Runs on a timer rather than in response to a record change. Use for periodic processing, reports, SLA monitoring, cleanup jobs, and any automation that should run at a specific time regardless of record changes.

Daily

Trigger: Daily
Time: 07:00 UTC
Use case: Send daily digest of open P1 incidents to the service desk manager.

Weekly

Trigger: Weekly  
Day: Monday
Time: 08:00 UTC
Use case: Generate and email the weekly SLA performance report.

Monthly

Trigger: Monthly
Day: 1 (first of month)
Time: 06:00 UTC
Use case: Archive completed change records older than 90 days.

Repeat (every N minutes/hours)

Trigger: Repeat
Every: 15 minutes
Use case: Check for incidents that have breached SLA in the last 15 minutes and escalate them.

Caution with high-frequency schedules: a flow that runs every 5 minutes and queries large tables can cause significant database load. Always set appropriate query limits inside these flows and consider whether a Scheduled Script Execution might be more efficient for high-volume data processing.

Application-based triggers

These triggers fire in response to specific platform events rather than direct record changes.

Service Catalog

Fires when a catalog item request is submitted. This is the recommended way to automate catalog item fulfillment in modern ServiceNow implementations.

Trigger: Service Catalog
Catalog Item: New Employee Laptop Request

Use case: When an employee submits the laptop request catalog item, create provisioning tasks for IT, update the asset management table, and notify the requester.

Data pills available:
→ Requested Item (the RITM record)
→ Requested Item > Variables (all catalog variables as pills)
→ Requested Item > Requested For (the user who submitted)

Inbound Email

Fires when an email arrives matching specific filter conditions. Replaces legacy email business rules for most use cases.

Trigger: Inbound Email
Condition: Subject contains "URGENT"

Use case: When an email with "URGENT" in the subject arrives, create a P1 incident and assign it to the on-call team.

Data pills available:
→ Email > Subject
→ Email > Body  
→ Email > From
→ Email > Reply To

SLA

Fires when a task SLA reaches a specified breach percentage. Replaces legacy SLA workflow stages.

Trigger: SLA
Table: Incident
SLA Definition: Resolution SLA
Percentage: 75 (fires when 75% of SLA time has elapsed)

Use case: When an incident is 75% through its resolution SLA, notify the assignment group manager and add a work note.

You can add multiple SLA triggers — one at 50%, one at 75%, one at 100% — each triggering a progressively more urgent escalation. For more on SLA management, see the SLA management guide.

Metric

Fires when a Performance Analytics metric crosses a defined threshold. Use for automated responses to KPI breaches.

Trigger: Metric
Metric: Average resolution time
Threshold: Exceeds 24 hours

Use case: When average resolution time exceeds 24 hours, create a management report and schedule a review meeting.

Subflow triggers

Subflows are not triggered by external events — they are called explicitly from a parent flow or another subflow. The "trigger" of a subflow is really its input variable definition: you specify what inputs the subflow expects, and those become the parameters the calling flow must provide.

Subflow: Send Manager Escalation Notification
Trigger: (Subflow — no external trigger)
Inputs:
  - incident_record (Reference: Incident) — required
  - escalation_reason (String) — required  
  - urgency_level (Integer) — optional, default 2

Outputs:
  - notification_sent (Boolean)
  - notification_sys_id (String)

The subflow is called from a parent flow using the Run Subflow action. For the full subflow guide, see Subflows in Flow Designer.

Trigger performance — what every developer should know

Every trigger execution has a cost, even if the flow exits immediately after the trigger condition check fails. On busy tables, a poorly scoped trigger can create thousands of executions per hour — each one consuming resources even before the first step runs.

Trigger performance guidelines:

  • Always use a trigger condition on record-based triggers — a trigger with no condition on the Incident table fires on every single incident save across your instance
  • Use "changes to" conditions, not just "equals" — "State = Resolved" fires whenever the state is Resolved (including every subsequent save of a resolved incident); "State changes to Resolved" fires only on the transition
  • For high-frequency tables, prefer For each unique change over Always — prevents repeated executions when a condition stays true across multiple saves
  • Scheduled triggers with short intervals need careful scoping — a flow that runs every 5 minutes must be designed to complete quickly and not queue up executions
  • Consider the table volume — a trigger on cmdb_ci that fires on any update will fire constantly during Discovery scans; scope it to specific CI classes or change types

For a broader discussion of when Flow Designer is the right tool versus other options, see Flow Designer vs Business Rules. For building maintainable flows once the trigger is configured, see Flow Designer best practices.

Trigger data pills — what each trigger type provides

Each trigger type provides a different set of data pills as starting points for the flow:

Trigger typeAvailable data pills
Record Created/UpdatedTrigger record (all fields), Previous values (on update)
ScheduledExecution time only — no record context unless you add a Look Up step
Service CatalogRequested Item, catalog variables, requested for user
Inbound EmailEmail subject, body, from, reply-to, attachments
SLATask record, SLA record, breach percentage, elapsed time
SubflowInput variables defined in the subflow trigger

For the complete data pills reference, see Flow Designer variables and data pills.

The complete Flow Designer reference

The NowSpectrum Flow Designer Playbook covers triggers, actions, subflows, error handling, and 10 production-ready flow examples in 29 pages.

Get the Flow Designer Playbook →
← Back to all posts