Select an object in the NetSuite object dropdown of a Read or Writeback step, or a drive in a File Upload step.
An object appears in the step only when the integration role has its permission. See Integration Role Permissions.
More NetSuite modules will be added to the app later. After a release, use Reload Objects on the connection to see them.
Contact is the NetSuite contact record: a person who works for a customer, a vendor, or another company.
The Read step offers the standard fields of the contact record and your custom fields: name and salutation, job title, email and phone numbers, company, subsidiary, assistant, supervisor, owner, comments, the default address, and the created and modified dates.
Writable: First Name, Last Name, Job Title, Email, Company Internal ID, Subsidiary ID, and custom fields. Every other field is read only.
Required: First Name, Last Name, Subsidiary ID. The step marks them with an asterisk.
5, not its name. See Subsidiary ID.Customer is the NetSuite customer record. Leads and prospects are customer records at an earlier stage, see Reading Customers.
The Read step offers the standard fields of the customer record and your custom fields: Customer ID, company and individual names, email and phone numbers, status, subsidiary, currency, terms, sales rep, start and end dates, credit limit and credit hold, balances, the default address, and the created and modified dates.
Writable: Customer ID, Company Name, Individual, First Name, Middle Name, Last Name, Job Title, Email, Alt. Email, Account, Print on Check As, Start Date, End Date, Subsidiary ID, Currency ID, Sales Rep Internal ID, and custom fields. Every other field is read only.
Required: Subsidiary ID, marked with an asterisk. Company Name or First Name and Last Name, depending on the customer type, see below.
Yes makes an individual; No, the default, a company. These fields carry no asterisk: a missing one fails the step.2026-10-02T23:30:00-07:00 is saved as 2 October. They read back as midnight UTC.AUTO, OFF, or ON.Last Name = tester does not find Tester.Opportunity is the NetSuite opportunity: a deal with a customer.
The Read step offers Opportunity #, Opportunity Date, Opportunity Title, the customer, status and stage, Probability, Expected Close, Range Low, Range High, Projected Total, Weighted Total, Sales Rep, Win/Loss Reason, Currency, Subsidiary, Details, Job, Location, the created and modified dates, and the custom fields that apply to Opportunity.
Writable: Opportunity #, Opportunity Date, Opportunity Title, Customer ID, Expected Close, Range Low, Range High, Sales Rep Internal ID, Win/Loss Reason ID, Currency ID, Job ID, Location ID, and custom fields. Every other field is read only.
Required: Customer ID, marked with an asterisk.
2295, not the Customer ID text shown on the customer record. Map it from the Record ID of a Read step on Customer. A name fails the step.Probability = 45, or a range such as Probability >= 40. A fraction such as 0.45 finds nothing.Quote is the NetSuite estimate. The object is called Quote in the step, and its fields keep NetSuite's names: Estimate #, Estimate Date, Estimate Title.
Open, Processed, Closed, or Expired.Vendor is the NetSuite vendor record. A vendor is a company or an individual, set by the Individual field.
The Read step offers the standard fields of the vendor record and your custom fields: Vendor ID, company and legal name, the individual's name, email, phone numbers, web address, subsidiary, currency, terms, category, primary contact, tax numbers, balances, the default address, and the created and modified dates.
Writable: Vendor ID, Company Name, Legal Name, Email, Subsidiary ID, Individual, First Name, Middle Name, Last Name, Tax ID, Business Number, VAT Registration No., Primary Contact Internal ID, and custom fields. Every other field is read only.
Required: Subsidiary ID, marked with an asterisk. Company Name or First Name and Last Name, depending on the vendor type, see below.
Individual = Yes makes an individual vendor. No, the default, makes a company.
| Field | Company (Individual = No) | Individual (Individual = Yes) |
|---|---|---|
| Company Name | Required | Optional |
| First Name, Last Name | Not stored | Required |
| Middle Name | Not stored | Optional |
| Legal Name | Optional, defaults to Company Name | Optional |
| Field | Stored on a vendor in |
|---|---|
| Tax ID | a US subsidiary |
| Business Number | a Canadian subsidiary |
| VAT Registration No. | a UK subsidiary |
On a subsidiary of another country the step succeeds and the value is not saved. NetSuite does not check the format of Tax ID.
When you connect, the app loads the schema of each object from NetSuite, custom fields included, and offers the custom fields of the types below in Read and Writeback steps. Other types are not supported: List/Record fields, for example, do not appear.
| Custom field type | In a workflow |
|---|---|
| Free-Form Text, Text Area, Email Address, Phone Number, Check Box, Date, Integer Number, Decimal Number, Currency, Percent | Read, write, and search |
| Long Text | Read and write. Not usable in a rule |
| Rich Text | Read only, as plain text |
| Any supported type with Store Value unchecked | Read only |
| List/Record, Multiple Select, Document, Image, Inline HTML, Help, Password, Hyperlink, Time Of Day | Not available |
The app passes a custom field value as is. Your NetSuite account defines the rules of each custom field: its format, length, whether it is mandatory, who can edit it. The app does not know those rules, so it sends the value from the workflow unchanged and NetSuite applies them. Set up the workflow to follow your field settings.
(Custom), for example EFT Bill Payment (Custom).12.5, not 0.125.id= value in the record's address in NetSuite. It is not the Vendor ID, Customer ID, or document number NetSuite shows on the record.<Field> Internal ID takes the Record ID of a linked record, such as a company, contact, or employee. <Field> ID takes the ID of a list value, such as Subsidiary, Currency, or Terms. <Field> Name is read only.5. Open the subsidiary in NetSuite to see the ID in the id= part of the address.(Searchable). Any other field fails the step.A AND B OR C means A AND (B OR C). Put the single condition first to get C OR (A AND B).+1 555 010 1006 and 15550101006 find the same record; 555-010-1006 does not.Yes / No, true / false, 1 / 0, or T / F, in any letter case. A check box that was never set counts as No.12.5, not 0.125.2026-10-02T00:00:00.000Z, and store the calendar date written in the value.2026-10-02T11:59:00.000Z. They cannot be used in a rule.A NetSuite administrator does this once per NetSuite account, before the first connection. Each step links to the NetSuite guide for details.
Enable features. Go to Setup → Company → Enable Features. On the SuiteCloud tab, check REST Web Services and OAuth 2.0. On the Analytics tab, check SuiteAnalytics Workbook, which searches use. See Enabling Features.
Create the integration record. Go to Setup → Integration → Manage Integrations → New and name it, for example Docusign IAM for NetSuite. On the Authentication subtab:
Click Save. See Create Integration Records for Applications to Use OAuth 2.0.
⚠️ Copy the Client ID right after you save. NetSuite shows it only once. You will enter it when you connect, and again for every new connection to this account. The Client Secret is not needed.
Create the integration role. Go to Setup → Users/Roles → Manage Roles → New and name it, for example Docusign IAM Integration. Add the permissions from Integration Role Permissions. Do not use the Administrator role. See Customizing or Creating NetSuite Roles.
Give the role to a user. Open an employee record, go to the Access subtab, check Give Access, add the role under Roles, and click Save. An existing employee works; a separate integration user is not required. See Assigning Roles to an Employee.
Permissions are added as rows. On the role, open the Permissions subtab, then Transactions, Reports, Lists, or Setup, choose the permission and its level, and click Add.
| Needed for | Subtab | Permission | Level |
|---|---|---|---|
| Every connection | Setup | Log in using OAuth 2.0 Access Tokens | Full |
| Every connection | Setup | REST Web Services | Full |
| Every connection | Setup | Custom Fields | View |
| Every connection | Reports | SuiteAnalytics Workbook | Edit |
| Every connection | Lists | Perform Search | Full |
| Contact | Lists | Contacts | Edit |
| Customer | Lists | Customers | Edit |
| Vendor | Lists | Vendors | Edit |
| Opportunity | Transactions | Opportunity | Edit |
| Quote | Transactions | Estimate | Edit |
| Linked lists and names | Lists | Employees, Subsidiaries, Currency, Accounting Lists | View |
| File Upload | Lists | Documents and Files | Edit |
NetSuite moves and renames permissions between releases. If a permission is not on the subtab in the table, look for it by name on the other subtabs.
The setup page in Docusign also lists permissions for modules that will be released later. Granting them now means the role needs no changes when those modules arrive.
Open the Docusign App Center and search for NetSuite.
Click the NetSuite app card, then click Log In to Install.
Review the access the app requests and click Install and Authorize.
The app now appears with an Installed status.
Keep NetSuite open in a second browser tab: the last step of the connection happens there.
On the installed app page, click Connect Account. To add a connection later, click New Connection on the Connections page.
Connection Visibility: choose how the connection is shared, then click Next.
Name Connection: enter a name that identifies the NetSuite account, for example Demo-Manual. It appears in workflow steps. Click Log In.
On Allow Docusign to connect to NetSuite?, click Allow & continue.
Which NetSuite account are we connecting?: enter the account ID exactly as it appears in your NetSuite address, prefix included, and click Continue.
TSTDRV1234567, not 1234567. A sandbox looks like 123456_SB1..app.netsuite.com, or paste the whole address of any NetSuite page.⚠️ An ID without its prefix passes this screen and fails later, at Verify & Connect.
One-time NetSuite admin setup: click Download certificate. The file is the public part of the certificate; the private key stays with the app.
In NetSuite, go to Setup → Integration → Manage Authentication → OAuth 2.0 Client Credentials (M2M) Setup and click Create New.
In Create a New Client Credentials Mapping, select:
Click Save, then copy the Certificate ID from the new row of the list. See OAuth 2.0 Client Credentials Setup.
Back on the setup page, enter the Client ID from the integration record and the Certificate ID from the mapping, then click Verify & Connect. The app signs in to NetSuite, runs one test search, and checks which objects the role can see.
If the role cannot see an object, the page names the object and the permission it needs. Grant the permission in NetSuite and click Connect anyway. Objects the role can see by then are connected; an object you do not use can stay without a permission and does not appear in workflow steps.
The connection is added and ready to use in workflow steps.
On the NetSuite app page, open the Manage dropdown and select Manage Connections to see every connection.
Use the three-dot (⋮) menu next to a connection:
The certificate is valid for two years. Within 30 days of expiry, the setup page shows the date and how to renew.
⚠️ Replacing the certificate affects every connection to the NetSuite account. Each connection needs a reconnect afterwards.
Use Manage → New Connection on the app page, or + New Connection on the Connections page. Each connection appears separately in workflow steps.
Log in to Docusign and go to Agreements → Workflows.
Click Create Workflow.
Build your workflow using the available steps, including the NetSuite actions.
Publish the workflow when it is ready.
Click + Add Step and search for NetSuite:
A typical contact signing flow:
The Read from NetSuite step retrieves a record and exposes its fields as workflow variables.
Choose the workflow start that fits your process. In this example the workflow starts From an API Call and receives the Record ID of the contact in a Text variable named object_id.
On the workflow canvas, click + below Start Workflow.
Search for NetSuite and select Read from NetSuite.
Click Next.
Click Add or Remove Fields and tick the fields your workflow needs. The selected fields become workflow variables for later steps.
The fields of each object are described under the object's section, for example Contact.
Click Next.
Create a rule that tells the step which record to read. In this example, match Record ID to the object_id variable from the workflow start:
object_id, under Variables From Workflow StartClick Done. Under How many records should this step return?, pick one:
Use preview this step to check the rule against live data. Click Apply.
The rules for matching fields are under Searching for a Record.
The Writeback to NetSuite step updates a record or creates a new one.
On the workflow canvas, click + where the writeback belongs, for example after Send Documents for Signature. Search for NetSuite and select Writeback to NetSuite.
Connection: select your NetSuite connection.
NetSuite object: choose the object to write to. In most workflows it is the object of your Read step. Quote is read only and cannot be written.
Write settings:
Click Next.
Required fields of the object are already on the list. Click Add or Remove Fields to add the other fields you want to write, and map each one to the workflow variable that supplies the value.
⚠️ Map from the right source. The variable picker also lists the output of your Read from NetSuite step. Mapping from there writes the original values back unchanged. Map from the step that produced the new data, such as Send Documents for Signature or Collect Data with Web Forms.
The writable and required fields of each object are listed under the object's section. Overwrite if field value exists is described under Writeback Rules.
Click Next.
For Update or Create and Update, create a rule that finds the record. In this example, match Record ID to object_id from the workflow start. A rule can also use the Record ID from a Read step on the same object, or any field marked (Searchable).
Click Done, then Apply.
The File Upload to NetSuite step saves a document from the workflow in the NetSuite File Cabinet and attaches it to a record.
Check File Upload Known Behaviors before you build the step.
Add a step after signing completes, search for NetSuite, and select File Upload to NetSuite.
Choose the file or envelope from an earlier step. In this example it is the Combined Envelope File from Send Documents for Signature.
An empty list means no earlier step produced a file. Check that a step such as Send Documents for Signature comes before File Upload.
<Object> (use Record ID as subfolder). This example uses Contact (use Record ID as subfolder). To save a file without attaching it, use the Docusign Workflow Documents drive.File Upload takes the record to attach to from the folder. The folder holds the Record ID of a record of the drive's object.
Click Add Folder.
Open the Select folder dropdown and pick New Subfolder.
In the New folder dialog, click Add Variable and choose the step that returns the record.
Select Record ID.
The variable appears in the Folder name field. Click Add.
Select folder now shows the Record ID variable. Click Next.
⚠️ Take the Record ID from a step on the drive's object. With the Contact drive, use
Contact / Record IDfrom a Read or Writeback step on Contact. A Read step on Customer returns a customer's Record ID, which points to no contact, and the file is not attached.
Build the file name from Add Text and Add Variable. A timestamp variable keeps repeat runs from producing identical names.
Click Apply. The file is saved in the Docusign Workflow Documents folder and attached to the record.
Docusign Workflow Documents saves the file in the Docusign Workflow Documents folder and attaches it to nothing. Use it for documents that belong to no supported object.
Every upload goes to one folder, Attachments Received / Docusign Workflow Documents, in the File Cabinet. The app creates the folder on the first upload and keeps using it. The folders in the step only point to the record: the app does not create them in NetSuite.
Signed Agreement (Contact 1993) 4fc486ce.pdf.⚠️ A folder before the Record ID made of digits only fails the step. The app reads a folder such as
2026or0001as a second Record ID. Letters and digits together, such asFY2026or2026-Q4, work.
Verify & Connect fails although the account ID is right.
Enter the ID with its prefix, as in your NetSuite address:
TSTDRV1234567, or123456_SB1for a sandbox. See Connecting Your Account.
I did not copy the Client ID.
NetSuite shows it once. Reset the credentials on the integration record to get a new one, then reconnect every connection that used the old Client ID.
An object is missing from the NetSuite object list.
The integration role has no permission for it. Grant the permission from Integration Role Permissions, then use Reload Objects on the connection.
No custom fields appear.
Grant the role Custom Fields (View), then use Reload Objects. Check that the field type is supported, see Custom Fields.
A record I can see in NetSuite is not found.
The role is restricted from the record's subsidiary, or the rule uses a value written differently. Copy the value as the Read step returns it, for example a phone number as digits only.
The Update step failed.
The rule matched no record or several. Use the Record ID from a Read step, or use Update or Create.
The step succeeded, but a vendor field is empty in NetSuite.
The field does not apply to this vendor: a tax number of another country, or a name field of the other vendor type. See Vendor.
Vendor ID changed after the name changed.
NetSuite rebuilds Vendor ID from the name. Map Vendor ID in the same step.
How do I clear a field?
Not from a workflow. An empty value leaves the field as it is. Clear it in NetSuite.
Where is the uploaded file?
In the File Cabinet, under
Attachments Received / Docusign Workflow Documents. See Where Files Are Stored.
The file is in the folder, but not on the record.
The Record ID in the last folder matched no record of the drive's object. Map the Record ID from a step on the same object.
File Upload fails with my own folders in the path.
One of the folders before the Record ID is made of digits only. Rename it, for example
FY2026instead of2026.
Changing a customer's currency cleared its credit limit.
NetSuite converts the balances of a customer with transactions to the new currency and clears Credit Limit. Map Currency ID only when the currency should change.
Every connection stopped working after the certificate was replaced.
Each connection to the account needs a Reconnect with the new Certificate ID. See Replacing the Certificate.