NetSuite Workflow Not Triggering: Troubleshooting Checklist
NetSuite workflow not triggering or not running
Also searched as
- NetSuite workflow not firing on record save
- NetSuite workflow condition not working
- workflow does not run on CSV import NetSuite
- NetSuite workflow history shows no instances
Short answer
A NetSuite workflow that does not run is almost always one of five things: it is not Released, the trigger event or execution context does not match how the record was saved, the initiation condition is false, the record is out of scope by subsidiary or role, or an earlier workflow or script changed the record first. Check Workflow History to see which.
Applies to: NetSuite SuiteFlow (Customization > Workflow > Workflows), all supported record types, OneWorld and non-OneWorld accounts
How to find why a workflow did not fire
- 1Open Customization > Workflow > Workflows and confirm the Release Status is Released, not Testing or Not Initiating. In Testing, it runs only for the user in the Owner or tester field.
- 2Open the workflow and check Inactive is not selected, and that the Record Type and Sub Types match the record you saved (for example Sales Order, not Estimate).
- 3Check Event Type. A workflow set to On Create will not run on edit. Set it to On Create and On View or Update as needed.
- 4Check Execution Context. If it excludes User Interface, Web Services or CSV Import, saves from those sources will not start it.
- 5Review the Initiation Conditions. Temporarily clear them and save a test record to prove the workflow can start at all.
- 6Open the record, then System Information > Workflow History. If no instance appears, the workflow never initiated. If an instance appears, open it to read the state history.
- 7Check scope: if the workflow has a Subsidiary or Role condition, a record in another subsidiary will not start it. Also check the workflow owner's permissions for the actions.
- 8Check for other scripts or workflows that change the same field first. Use the Script Execution Log and Workflow History on a single record to see order of execution.
Release status and event type
The release status is the first suspect. A workflow in Testing runs only for the user set as the owner or tester, so it looks fine to a developer and silent to everyone else. Not Initiating is a deliberate state used when a workflow is meant to be called only by another workflow's Transition or Go To action.
Event type decides when the workflow starts. On Create fires once when the record is first saved. On View or Update fires on view and on save. Scheduled fires on a time pattern against a saved set of records. A workflow built to catch changes to a field needs On View or Update plus a condition on the field, not On Create.
A workflow starts only once per record per event unless you set Allow Multiple Instances or you use a recurrence. People expect a state to repeat on every save, but if the workflow remains in a state with no transition out, the instance stays there and later saves do nothing.
Execution context and the conditions that quietly fail
Execution Context lists where the save came from: User Interface, CSV Import, Web Services, Scheduled, Mobile, Workflow, User Event Script and others. Many teams exclude CSV Import to avoid a flood of emails, then forget the setting when they need the workflow to run on imported data.
Initiation conditions are evaluated against the record at the moment of the event. Conditions that compare to a prior value need the Before or After wording right. Using a Formula (Boolean) condition is valid, but errors in the formula make the workflow fail to start without an obvious message.
Conditions on fields that a script sets in the same save may see old data. A User Event script that sets a field in beforeSubmit runs before workflows that run After Record Submit, but the order differs by the workflow's trigger type (Before Record Load, Before Record Submit, After Record Submit).
Scope: subsidiaries, roles and form
In OneWorld, a workflow can be limited to specific subsidiaries. A record in a child subsidiary not included will never start the workflow. Check the Subsidiary field on the workflow and whether Include Children is set.
Workflows can also be restricted by role or by custom form through the initiation conditions. A common problem is a workflow tested with a custom form on the developer's account, then deployed to users with a different form, where a conditional field is absent.
Workflow actions run with the permissions of the user who saved, unless the action is configured to run as Administrator in the Execution context settings. A Set Field Value or Create Record action may fail silently for users without access to the target field.
Reading Workflow History and debugging
System Information > Workflow History on a record lists each instance, the states visited and transitions taken. If the instance exists but the action did not happen, look at the state where it sits and its transition conditions. If it never appears, the failure is at initiation.
Use the Workflow Instances list on the workflow itself for a view across records, and filter by state to find instances stuck waiting on a condition. Add a temporary Add Workflow Log or Send Email action to the first state to confirm entry. Remove it once solved.
Where you cannot find the reason, Execution Log entries of type Workflow under Customization > Scripting > Script Execution Log can show errors raised by an action, such as an invalid field value or permission error.
Common pitfalls
- !Leaving the workflow in Testing and wondering why only the author sees it fire.
- !Using On Create when the requirement is on update or field change.
- !Excluding CSV Import or Web Services from the execution context and then expecting it to run on integrations.
- !Testing on a record in one subsidiary or form and deploying to users with another.
- !Relying on conditions that read values another script sets later in the same save.
- !Leaving an instance parked in a state with no outgoing transition so later saves do nothing.
How an ERP-grounded AI assistant handles this
An assistant grounded in your NetSuite account can read the workflow definition and a record's Workflow History together, then state which of the five causes applies: release status, event type, context, condition or scope. ERPray is read-only by default, so it explains and drafts the corrected settings, and an administrator applies them in SuiteFlow.
Frequently asked questions
Why does my workflow run for me but not other users?
The most likely cause is Release Status set to Testing, which limits execution to the owner. Other causes are role or subsidiary scope, or a different custom form on the record. Switch to Released and verify the conditions against a user in the affected role.
Does a workflow run on CSV import?
Only if CSV Import is in its execution context, and only if Triggered Workflows is enabled on the import job. Both must allow it. If either excludes it, imports will silently skip the workflow.
Where do I see whether a workflow started on a record?
Open the record and use System Information > Workflow History. Each started instance is listed with the workflow name, current state and history. No entry means the workflow never initiated for that record.
Should I use a workflow or a User Event script?
Workflows suit simple approvals, field defaults and notifications maintained by admins. Scripts suit logic with loops, searches, external calls or governance control. Mixing both on one record is possible, but document the order of execution to avoid conflicts.
Related
How to build a workflow in NetSuite with SuiteFlow
Go to Customization > Workflow > Workflows > New, pick the record type and select Server, Client, or both as the trigger context, then build states and transitions on the workflow diagram, attaching actions (Set Field Value, Send Email, Create Record, Custom Action Script) to each state or transition. Release the workflow (top right dropdown, Testing to Released) once validated, since a workflow left in Testing only fires for the workflow owner.
How-toHow to Set Up Approval Routing in NetSuite
NetSuite offers two approval routing paths: native transaction approval (Enable Features > Transaction approvals, then per-employee Approval Limit and Purchase Approval Limit fields) for simple single-approver chains, and SuiteFlow (Customization > Workflow > Workflows) for multi-step, condition-based, or parallel approval routing with escalation and notification logic.
AdvancedChoosing between User Event and Client scripts in NetSuite
User Event scripts (beforeLoad, beforeSubmit, afterSubmit) run server-side on every save regardless of how the record was created, including CSV import, web services and workflows, and are the only reliable place to enforce business rules. Client scripts (pageInit, fieldChanged, saveRecord, postSourcing) run only in an interactive browser session and can be bypassed entirely by any non-UI record save, so they should handle UX (field visibility, warnings, defaults) rather than validation that must never be skipped.
Error fixFix NetSuite INSUFFICIENT_PERMISSION Error
INSUFFICIENT_PERMISSION means the role executing the request, whether a logged-in user or the role behind a script deployment, lacks a specific permission needed for the record type, transaction type, or subsidiary being accessed. Fix it by checking the role's permission list under Setup > Users/Roles > Manage Roles against the exact record and level (View, Create, Edit, or Full) the operation requires.
Error fixNetSuite CSV Import Stuck in Processing or Queued
A CSV import that sits in Queued or Processing is normally waiting for a free processor, blocked by long running scripts on the target record, or retrying because of a lock. Check Setup > Import/Export > View CSV Import Status, then the Script Execution Log and Map/Reduce Status for what is running on the same records.
Error fixFix NetSuite SSS_USAGE_LIMIT_EXCEEDED Error
SSS_USAGE_LIMIT_EXCEEDED fires when a SuiteScript execution consumes all the governance units (usage points) allotted to its script type before it finishes. Fix it by checking runtime.getCurrentScript().getRemainingUsage() before expensive calls, yielding or rescheduling in Scheduled scripts, and moving heavy record-count work into Map/Reduce, which yields automatically across stages.
AI for ERPAI for NetSuite, Beyond the Built-In Text Tools
NetSuite's built-in AI covers text generation, not grounded answers on your own data. See how a private LLM over SuiteQL adds real Q&A and controls.
Stuck on Oracle NetSuite?
Talk to engineers who work inside Oracle NetSuite every week, and who build private AI that answers these questions from your own ERP data.