NetSuite Workflows

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.

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.

TermWhat it means
Base recordThe record type the workflow runs on, such as Sales Order, Vendor Bill, Customer, or a custom record.
InitiationWhen a workflow instance starts: on create, on view or update, or on a schedule, optionally limited by conditions, event types, and execution contexts.
StateA stage of the process. A record is in one state of a workflow at a time.
ActionA task the workflow performs in a state, such as Set Field Value or Send Email.
TransitionA move from one state to another, triggered by a condition, a button click, or a trigger event.
TriggerThe moment an action or transition runs, such as Before Record Load or After Record Submit.
ConditionA rule that must be true for initiation, an action, or a transition. It can use field values, formulas, or a saved search.
Workflow instanceOne 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.

TriggerTypeWhen it runsTypical use
EntryServerThe first time a record enters a stateSend a notification or set a value once per state
Before Record LoadServerBefore the record loads in the browserAdd or remove buttons, hide or lock fields
Before Record SubmitServerAfter the user clicks Save, before data is writtenValidate data and set values before saving
After Record SubmitServerAfter the record is saved to the databaseCreate related records, send emails, route approvals
ExitServerThe first time a record leaves a stateClean up or log when a stage ends
ScheduledServerOn a defined scheduleReminders, escalations, periodic updates
Before Field Edit / After Field EditClientWhile a user changes a field on the formSet dependent values or show messages
After Field SourcingClientAfter dependent field values are populatedAct on sourced values, such as customer terms
Before User SubmitClientAfter Save is clicked, before Before Record SubmitConfirm 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

ActionWhat it doesCommon use
Set Field ValueSets a value on the recordApproval status, approver, dates, flags
Send EmailSends an emailApprover notifications, escalations
Add Button / Remove ButtonAdds a custom button or removes a standard oneApprove and Reject buttons; hide Edit while pending
Lock RecordLocks the record for the workflow instancePrevent edits while awaiting approval
Return User ErrorShows an error and stops the actionBlock a save that breaks a business rule
Set Field Required / Display Type / Display LabelChanges how fields behave or look on the formRequire a reason on rejection; make fields read-only
Create RecordCreates a new recordCreate a task or case for follow-up
Transform RecordTurns one transaction into another typeCreate an invoice or fulfillment from an order
Initiate WorkflowStarts another workflow from this oneSplit complex processes into smaller workflows
Go To Record / Go To PageRedirects the userSend users to the next record to work on
Show MessageDisplays a message to the userExplain why a record is locked
Custom actionRuns a workflow action script written in SuiteScriptLogic 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.

  1. 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.

  2. Enable SuiteFlow

    Go to Setup > Company > Enable Features, open the SuiteCloud subtab, and check SuiteFlow.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

OptionWhat it isBest forTrade-off
Standard approval routingBuilt-in routing preferences for certain transactions, based on employee approvers and limitsSimple, hierarchy-based approvalsLimited conditions and exception handling
SuiteApprovals SuiteAppOracle's approval SuiteApp with approval rules, hierarchical or custom routing, delegation, drafts, and email approvalsStandard multi-level approvals on supported records, including custom recordsWorks within the SuiteApp's rule model
Custom SuiteFlow workflowA workflow you build for any record type and ruleUnusual routing, exceptions, and approvals tied to other process stepsYou 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 study

Choosing the tool

NetSuite workflow or SuiteScript: which should you use?

RequirementBetter fit
Approvals, notifications, field rules, buttonsWorkflow. Faster to build and easier for admins to maintain.
Logic that business users need to see and adjustWorkflow. The visual design documents the process.
Processing thousands of recordsSuiteScript, usually map/reduce.
Calling external systems or complex calculationsSuiteScript, or a workflow with a custom action script.
Mostly simple rules with one complex stepWorkflow 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 StatusWhat happensUse 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
ReleasedRuns for all users. Scheduled workflows, actions, and transitions run only in this mode.In production use
Not InitiatingNo new instances start; the workflow stays on the list, similar to inactivating it.Retiring a workflow while existing instances finish
SuspendedNo 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 K

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

Blogs Form

What do you think?

Related articles

Contact us

Have questions? We're here to listen.

We’re happy to answer any questions you may have and help you determine which of our services best fit your needs.

Your benefits:
What happens next?
1

We Schedule a call at your convenience 

2

We do a discovery and consulting meeting

3

We prepare a proposal 

Schedule a Free Consultation
By providing a telephone number and submitting this form you are consenting to be contacted by SMS text message. Message & data rates may apply. You can reply STOP to opt-out of further messaging.