SuiteFlow guide for admins and process owners
NetSuite Workflow Guide: How to Build, Test, and Maintain SuiteFlow Workflows
NetSuite workflows (SuiteFlow) automate approvals, notifications, field rules, and record handoffs without code. This guide explains how workflows actually execute, walks through building a real approval workflow, and covers the testing, troubleshooting, and governance that keep workflows reliable. If a workflow is already misbehaving in production, our NetSuite support services team can help.
By Santosh Krishnamoorthy, Principal ERP Consultant, EPIQ Infotech. First published May 9, 2024. Updated October 14, 2026 against Oracle's NetSuite Help Center.
What is a NetSuite workflow?
A NetSuite workflow is a point-and-click automation built with SuiteFlow, NetSuite's workflow engine. It moves a record, such as a sales order or vendor bill, through a series of states. In each state it runs actions like setting field values, sending emails, adding buttons, or locking the record, and it transitions between states when conditions are met. You build workflows at Customization > Workflow > Workflows > New, test them with a Release Status of Testing, then release them to all users. Workflows handle most approvals and process rules; SuiteScript takes over when logic gets too complex.
Key takeaways
- Every workflow is states, transitions, and actions, run on server or client triggers.
- New workflows start in Testing mode, where only the workflow owner can initiate them.
- Scheduled workflows run only when the workflow is Released.
- Restrict execution contexts so workflows do not fire on every import or integration.
- Too many workflows on one record type is a leading cause of slow saves.
The building blocks
How a NetSuite workflow is built
Every SuiteFlow workflow uses the same parts. Here is a simple approval workflow, mapped to those parts.
Order submitted
- Initiates On Create
- Condition: amount over your threshold
- Transition to Pending Approval
Pending Approval
- Lock Record
- Add Button: Approve, Reject
- Send Email to approver
Approved
- Set Field Value: approval status
- Send Email to sales rep
Rejected
- Set Field Value: approval status
- Send Email with reason
Transitions: Pending Approval moves to Approved or Rejected when the approver clicks the matching button. Rejected can transition back to Pending Approval when the rep resubmits.
| Term | What it means |
|---|---|
| Base record | The record type the workflow runs on, such as Sales Order, Vendor Bill, Customer, or a custom record. |
| Initiation | When a workflow instance starts: on create, on view or update, or on a schedule, optionally limited by conditions, event types, and execution contexts. |
| State | A stage of the process. A record is in one state of a workflow at a time. |
| Action | A task the workflow performs in a state, such as Set Field Value or Send Email. |
| Transition | A move from one state to another, triggered by a condition, a button click, or a trigger event. |
| Trigger | The moment an action or transition runs, such as Before Record Load or After Record Submit. |
| Condition | A rule that must be true for initiation, an action, or a transition. It can use field values, formulas, or a saved search. |
| Workflow instance | One run of a workflow on one specific record, with its own history. |
Timing
NetSuite workflow triggers explained
Choosing the wrong trigger is the most common reason a workflow "does nothing." Server triggers run when records are read or written; client triggers run while a user edits a form.
| Trigger | Type | When it runs | Typical use |
|---|---|---|---|
| Entry | Server | The first time a record enters a state | Send a notification or set a value once per state |
| Before Record Load | Server | Before the record loads in the browser | Add or remove buttons, hide or lock fields |
| Before Record Submit | Server | After the user clicks Save, before data is written | Validate data and set values before saving |
| After Record Submit | Server | After the record is saved to the database | Create related records, send emails, route approvals |
| Exit | Server | The first time a record leaves a state | Clean up or log when a stage ends |
| Scheduled | Server | On a defined schedule | Reminders, escalations, periodic updates |
| Before Field Edit / After Field Edit | Client | While a user changes a field on the form | Set dependent values or show messages |
| After Field Sourcing | Client | After dependent field values are populated | Act on sourced values, such as customer terms |
| Before User Submit | Client | After Save is clicked, before Before Record Submit | Confirm or block a save in the browser |
Two execution rules from Oracle's documentation explain many surprises. If a workflow initiates on Before Record Submit, the Before Record Load trigger never runs for that instance. And if a record enters its final state on Before Record Load, actions set to run on Before or After Record Submit in that state do not execute. Client triggers only run in the browser, so they never fire for CSV imports, scripts, or integrations.
Source: Oracle NetSuite Help Center, Workflow Triggers, Server Triggers Reference, and SuiteFlow Trigger Execution Model.
What workflows can do
NetSuite workflow actions reference
| Action | What it does | Common use |
|---|---|---|
| Set Field Value | Sets a value on the record | Approval status, approver, dates, flags |
| Send Email | Sends an email | Approver notifications, escalations |
| Add Button / Remove Button | Adds a custom button or removes a standard one | Approve and Reject buttons; hide Edit while pending |
| Lock Record | Locks the record for the workflow instance | Prevent edits while awaiting approval |
| Return User Error | Shows an error and stops the action | Block a save that breaks a business rule |
| Set Field Required / Display Type / Display Label | Changes how fields behave or look on the form | Require a reason on rejection; make fields read-only |
| Create Record | Creates a new record | Create a task or case for follow-up |
| Transform Record | Turns one transaction into another type | Create an invoice or fulfillment from an order |
| Initiate Workflow | Starts another workflow from this one | Split complex processes into smaller workflows |
| Go To Record / Go To Page | Redirects the user | Send users to the next record to work on |
| Show Message | Displays a message to the user | Explain why a record is locked |
| Custom action | Runs a workflow action script written in SuiteScript | Logic the standard actions cannot handle |
Source: Oracle NetSuite Help Center, Workflow Actions Overview. Additional actions, such as Send Campaign Email and Subscribe To Record, are available for specific scenarios.
Step by step
How to create a workflow in NetSuite: a sales order approval example
This builds the approval workflow from the diagram above. Build it in a sandbox first.
Write the rules down first
Define who approves what, at which amount, what happens on rejection, and which records are excluded. Most broken approval workflows were built from an unclear policy, not a bad configuration.
Enable SuiteFlow
Go to Setup > Company > Enable Features, open the SuiteCloud subtab, and check SuiteFlow.
Create the workflow
Go to Customization > Workflow > Workflows > New. Give it a clear name and script ID, set Record Type to Transaction and Sub Types to Sales Order, and assign an owner, who receives error emails.
Set initiation
Choose Event Based initiation On Create, with an After Record Submit trigger. Add a condition for orders that need approval, such as an amount threshold. Under event types and contexts, limit the workflow to the user interface if imports and integrations should not trigger it.
Add states and actions
Keep the first (entry) state and add Pending Approval, Approved, and Rejected states. Add a transition from the entry state to Pending Approval when the approval condition is met. In Pending Approval, add Lock Record, Add Button actions for Approve and Reject, and Send Email to the approver. In Approved and Rejected, use Set Field Value to update the approval status and Send Email to notify the rep.
Add transitions
From Pending Approval, add a transition to Approved when the Approve button is clicked, and to Rejected when Reject is clicked. Add a transition from Rejected back to Pending Approval for resubmissions.
Test with the right roles
Leave Release Status as Testing and Enable Logging checked. Test normal orders, orders just above and below the threshold, rejections, resubmissions, and each approver role. Review the Workflow History subtab on each test record.
Release and document
Set Release Status to Released, decide whether to keep logging on, and set Keep Instance and History. Document the rules, states, and owner so the next change is easy.
Approvals
NetSuite approval workflow options compared
You do not always need a custom workflow for approvals. NetSuite offers three routes.
| Option | What it is | Best for | Trade-off |
|---|---|---|---|
| Standard approval routing | Built-in routing preferences for certain transactions, based on employee approvers and limits | Simple, hierarchy-based approvals | Limited conditions and exception handling |
| SuiteApprovals SuiteApp | Oracle's approval SuiteApp with approval rules, hierarchical or custom routing, delegation, drafts, and email approvals | Standard multi-level approvals on supported records, including custom records | Works within the SuiteApp's rule model |
| Custom SuiteFlow workflow | A workflow you build for any record type and rule | Unusual routing, exceptions, and approvals tied to other process steps | You own the design, testing, and maintenance |
Source: Oracle NetSuite Help Center, SuiteApprovals SuiteApp. Oracle also offers a Purchase Order Approval Workflow SuiteApp that combines standard routing with Workflow Manager flexibility.
EPIQ case study
Fixing sales order approvals for a B2B distributor
A growing US distributor's orders that needed review were not routed consistently, staff chased approvers for status, and finance reconciled reports in spreadsheets.
- Reviewed SuiteFlow initiation conditions, routing, status transitions, and exception handling
- Refined routing so review cases reach the right approvers
- Realigned saved search filters, joins, and formulas with business rules
- Tested normal, exception, and role scenarios in sandbox, then documented the logic
The result was a clearer approval path, fewer spreadsheet workarounds, and the same approval controls.
Read the full approval workflow case studyChoosing the tool
NetSuite workflow or SuiteScript: which should you use?
| Requirement | Better fit |
|---|---|
| Approvals, notifications, field rules, buttons | Workflow. Faster to build and easier for admins to maintain. |
| Logic that business users need to see and adjust | Workflow. The visual design documents the process. |
| Processing thousands of records | SuiteScript, usually map/reduce. |
| Calling external systems or complex calculations | SuiteScript, or a workflow with a custom action script. |
| Mostly simple rules with one complex step | Workflow plus a workflow action script for that step. |
Workflow action scripts are SuiteScript that runs as a custom action. All actions in one workflow state share a limit of 1,000 usage units, and each execution has a 300-second time limit, so heavy logic in a custom action can stop the whole state. Our SuiteScript 2.x and 2.1 guide covers governance limits and the 2028.2 deadline for older script versions, which also applies to workflow action scripts.
Safe deployment
Testing and releasing workflows: release statuses explained
| Release Status | What happens | Use it when |
|---|---|---|
| Testing (default) | Instances initiate only for the workflow owner. Scheduled workflows do not run, but you can use Execute Now to test them. Execution logs appear on the Workflow History subtab. | Building and validating |
| Released | Runs for all users. Scheduled workflows, actions, and transitions run only in this mode. | In production use |
| Not Initiating | No new instances start; the workflow stays on the list, similar to inactivating it. | Retiring a workflow while existing instances finish |
| Suspended | No new instances start and existing instances stop. Changing the status resumes them from where they paused. | Emergency stop while you fix a problem |
Two settings on the workflow definition control the audit trail. Enable Logging creates an execution log for each state; it is on by default in Testing, but you must check it yourself once Released. Keep Instance and History controls whether instances and history are kept Always, Never, or Only When Testing. For processes auditors care about, such as approvals, keep history.
Source: Oracle NetSuite Help Center, Creating a Workflow and Release Status for Workflow Instances.
Troubleshooting
Common NetSuite workflow problems and how to fix them
The workflow is not triggering
- Release Status is Testing and you are not the owner, or it is Not Initiating, Suspended, or inactive.
- The initiation event does not match: On Create is checked but you are editing, or the reverse.
- Event type or execution context restrictions exclude how the record was saved, such as CSV import or web services.
- The initiation condition or saved search condition is false for this record. Test the condition on the record itself.
- An active instance of the same workflow is already running on the record, so a new one does not start.
An action or transition does not run
- The action's trigger does not fire in that state, for example a Before Record Submit action in a state entered on Before Record Load.
- The action is on a client trigger but the record was saved by a script, import, or integration.
- The action condition is false. Check the Workflow History subtab and execution log for the instance.
Records are stuck in a state
- No transition condition can be met, or the button that triggers the transition is hidden for the user's role.
- The approver left or changed roles and nobody else can act. Add an escalation or a scheduled transition.
- The workflow was suspended. Changing the status resumes instances from where they stopped.
Saving records got slow after adding workflows
- Several workflows plus user event scripts run on the same record and trigger. Consolidate them.
- Workflows fire on every import and integration. Restrict execution contexts.
- Heavy custom action scripts run inside a state. See our guide to why NetSuite is slow for how to measure workflow time with APM.
Approval emails are not being sent
- The recipient field is empty on the record, or the approver's employee record has no email address.
- The email action's condition or trigger never fires in that state.
- The workflow is in Testing, so actions run only for the owner's instances.
If workflows keep breaking after changes, the usual causes are overlapping automation and missing documentation. Our NetSuite support services team diagnoses and fixes workflows in sandbox before production, and top NetSuite support issues and fixes covers related problems.
Keep it maintainable
NetSuite workflow governance best practices
- Audit by record type. The Scripted Records page at Customization > Scripting > Scripted Records shows the workflows and scripts on each record type, with their status and triggers. Review it before adding anything new.
- One owner per workflow. The owner receives error emails, so use a monitored person or role-based mailbox, not someone who has left.
- Prefer fewer, clearer workflows. Consolidate overlapping logic on the same record, or use Initiate Workflow to call smaller sub-processes.
- Restrict contexts. Limit execution contexts and event types to where the rule actually applies.
- Use Return User Error and Lock Record sparingly. Hard stops frustrate users when conditions are too broad.
- Name and document consistently. Use clear names and script IDs, and record the business rule behind each workflow.
- Test before each NetSuite release. Run key workflows in your Release Preview account; see our NetSuite 2026.2 release guide.
- Inactivate what is unused. Old workflows add load and confusion; they are a common form of technical debt in NetSuite.
Workflow history also supports audit readiness; see how NetSuite audit controls strengthen governance.
Ideas you can build
NetSuite workflow examples by department
Purchase order approval
Route POs by amount, department, or subsidiary, with escalation if no action is taken.
Add Button, Lock Record, Send Email, Scheduled transition
Vendor bill approval
Require approval above a threshold or when a bill does not match its PO. See our AP automation guide.
Set Field Value, Send Email, Return User Error
Credit limit warning
Warn or block sales orders for customers over their credit limit or on hold.
Show Message, Return User Error
Customer data quality
Require tax and terms fields before a lead becomes a customer.
Set Field Required, Return User Error
Journal entry approval
Route manual journal entries above a threshold to the controller before posting.
Lock Record, Add Button, Send Email
Follow-up tasks
Create a task or case when an order ships late or a customer escalates.
Create Record, Send Email
For broader automation beyond SuiteFlow, see business process automation with NetSuite and NetSuite finance automation.
Need workflows that hold up in production?
EPIQ Infotech, an Oracle NetSuite Alliance Partner since 2013, designs, fixes, and documents SuiteFlow workflows, from approval routing to workflow action scripts, and tests every change in sandbox first. See our full NetSuite support services or NetSuite customization services.
FAQ
NetSuite workflows: frequently asked questions
What is SuiteFlow in NetSuite?
SuiteFlow is NetSuite's point-and-click workflow engine. It lets administrators automate processes such as approvals, notifications, and field rules by defining states, transitions, and actions in the Workflow Manager, without writing code.
How do I create a workflow in NetSuite?
Enable SuiteFlow at Setup > Company > Enable Features on the SuiteCloud subtab, then go to Customization > Workflow > Workflows > New. Choose the record type, set how the workflow initiates, add states, actions, and transitions, and test it with a Release Status of Testing before releasing it.
Why is my NetSuite workflow not triggering?
The most common causes are a Release Status of Testing when you are not the owner, an initiation event that does not match how the record was saved, execution context restrictions that exclude imports or integrations, or an initiation condition that is false for the record.
What is the difference between server and client workflow triggers?
Server triggers, such as Before Record Load, Before Record Submit, After Record Submit, and Scheduled, run when NetSuite reads or writes a record. Client triggers, such as After Field Edit and Before User Submit, run in the browser while a user edits a form, so they do not fire for imports, scripts, or integrations.
Can a NetSuite workflow run on a schedule?
Yes. Scheduled workflows can initiate, run actions, or transition on a defined schedule. They run only when the workflow is Released; in Testing mode you can trigger them manually with Execute Now.
Should I use SuiteApprovals or build a custom approval workflow?
Use SuiteApprovals when its approval rules, hierarchical or custom routing, and delegation cover your policy on supported records. Build a custom SuiteFlow workflow when you need unusual routing, exception handling, or approvals tied to other process steps.
Can workflows run SuiteScript?
Yes, through workflow action scripts, which run as custom actions. All actions in one workflow state share a 1,000 usage unit limit, and each execution has a 300-second limit, so heavy processing belongs in a map/reduce script instead.
Do too many workflows slow NetSuite down?
They can. Every workflow on a record type adds processing when records load or save. Consolidating overlapping workflows and restricting execution contexts are two of the fastest ways to speed up slow record saves.

Santosh Krishnamoorthy is a Principal ERP Consultant at EPIQ Infotech, with extensive experience in NetSuite and enterprise systems. He works with finance and operations teams to improve reporting accuracy, streamline workflows, and build ERP environments that support sustainable growth. His writing focuses on practical insights drawn from real implementation and support experience.
Free Consultation
Talk to a NetSuite Expert
Response within 1 hour





