Beta feature
This is a beta feature, which means we're still developing it. Some functionality may change.
Go to the Channels page to learn more about what plans have access to this channel. Sign into Quickbase, and then go to Pipelines > Channels.
NetSuite is a cloud-based business management platform that provides ERP, CRM, and e-commerce capabilities in a single system. It helps organizations manage financials, operations, and customer data in one place.
How to connect
On the My pipelines page, select Create Pipeline.
Search for or select a step, and then select it to add it to the pipeline.
When you add a step to a pipeline, it is added to the canvas of the pipeline designer.Expand the Connection section of the step, and add the required information.
Connect to NetSuite
NetSuite connections require Token-Based Authentication.
Before you connect to NetSuite:
Go to NetSuite and configure a role with the necessary permissions
Assign the role to an entity
Create an Integration Record with Token-Based Authentication enabled
Generate an Access Token for that integration, role and user
Learn more in the NetSuite Help Center: Getting Started with Token-based Authentication, Manage TBA Tokens in the NetSuite UI
To connect to the NetSuite channel in Pipelines:
Enter your Account ID and select Connect.
To find your Account ID, log in to NetSuite and look at the URL in your browser. The Account ID appears as the subdomain, for example:https://{accountID}.app.netsuite.comEnter your Client ID, Client Secret, Token ID, and Token Secret
The Client ID and Client Secret are only displayed once when you create an Integration Record. Similarly, the Token ID and Token Secret are only displayed once when you create an Access Token.Select Connect.
You've successfully connected your channel and can start using it.
How to reconnect
You may need to reconnect your account to a channel. Reasons may be (but not limited to):
If you need to connect a different account.
Authorization updates, such as a changed password.
Editing the access rights that Pipelines has to the channel.
To reconnect:
Select a pipeline that already has this channel in it.
Open a step that contains this channel.
Under account, select Connect (or reconnect) and follow the process above, How to connect.
Steps
The steps you can use with NetSuite are grouped into a single category: NetSuite Record.
Note
You cannot use jinja expressions in trigger conditions unless explicitly specified as possible.
Type | Name | Description |
|---|---|---|
NetSuite Record |
|
|
Trigger | Record Created | Triggers when a new record is created within an account and is a specific record type. |
Trigger | Record Updated | Triggers the pipeline when a specific record type in a particular account is updated. |
Action | Create a Record | Creates a new record in an account of a particular record type. The payload size limit is 100MB. |
Action | Update a Record | Updates a record found with a particular record type and subject. The payload size limit is 100MB. |
Action | Delete a Record | Deletes a record found with a particular record type and subject. |
Query | Generic SuiteQL Query | Executes SuiteQL Query. |
Action | Look Up a Record | Looks for and returns a list of records based on search criteria. |
Limits
Due to a NetSuite limitation, updates made to a record within the first minute after its created are not detected. This means that Record Updated triggers will not fire for changes made during that initial 1-minute period.
For certain NetSuite record types that don’t have a created_at field (for example, Location), Quickbase cannot distinguish between created and updated events. As a result, creating one of these records triggers the Record Updated trigger as well upon creation.
Some NetSuite fields are entity fields, meaning they must reference an existing entity record (such as a Customer, Vendor, Partner, Employee, or Contact). When populating an entity field in a NetSuite pipeline step, you must provide the internal ID of the entity you want to associate.
Some read-only fields appear in the channel’s steps as input fields. Any value entered in these fields is ignored.
NetSuite has a limit of 25 active Token-Based Authentication (TBA) Access Tokens per user. If the limit has been reached, you must revoke an existing token to generate a new one.
Troubleshooting
Remote API returned authentication error
When running a pipeline, if a step fails with the error Remote API returned authorization error: Permission violation, the NetSuite role associated with the connection does not have permission to access the selected record type or one or more of its related records.
The error message usually specifies which permission is missing (for example, Lists → Contacts). Update the integration role in NetSuite to grant the required access level and rerun the pipeline.

Examples
Create a new NetSuite invoice from a Quickbase record
Set up your Quickbase app
Create a NetSuite app in Quickbase with these tables:
NS Customers to avoid manually entering Customer IDs
NS Locations to avoid manually entering Location IDs
NS Items to avoid manually entering Item IDs
NS Line Items to store items in each invoice
NS Invoices to store invoices before sending them to NetSuite
Create table-to-table relationships, so the app supports invoice creation:
Each NS Customer has many NS Invoices
Each NS Location has many NS Invoices
Each NS Item has many NS Line Items
Each NS Invoice has many NS Line Items
The final structure of the NetSuite app should match this setup:

Build supporting pipelines
You need a few pipelines to supply data, keep records current, and create invoices.
Get schema samples—Create a pipeline that retrieves a sample schema for each record type. The pipeline parses the json sample and creates a best-guess structured schema of the expected response. Even if a field is not present in the resulting schema, or has a different type, the pipeline continues to work.
To do so:
Create a pipeline with a GenericSuiteQL Query step for each table used in your invoice. In this example, we use customers, locations, and items.
In the Query field of the Generic SuiteQL Query step, enter a query that meets your needs.
For example, to work with
idandcompanynamein Customer records, enter the field value in the first pipeline step as:SELECT TOP 1 id, companyname FROM customer WHERE companyname IS NOT NULLFor the Location and Item record types, use the
idandfullnameproperties.
Run this pipeline one time in the beginning of your setup, and use the resulting json samples as input values for the Schema Sample fields of the respective downstream Generic SuiteQL Query steps.

Sync NetSuite data to Quickbase—Create pipelines to sync customers, locations, and items on a daily basis. The scheduling of the pipeline depends on your needs.
Each pipeline should:
Clear the related table in Quickbase
Pull the latest records from NetSuite
To do so, create a pipeline with these steps:
Remove Record(s)
Prepare Bulk Record Upsert
Generic SuiteQL Query
Loop for each Generic SuiteQL Query
Add a Bulk Upsert Row
Commit Upsert
This example shows updating the NS Locations table. Repeat for NS Customers and NS Items:

Create invoices in NetSuite—Create a pipeline that runs when a record in the NS Invoices table is updated and the send to NS checkbox is selected. Then, create an invoice in NetSuite.
To do so, create a pipeline with these steps:
When Record Updated
Search Records
Create a Record

For the top-level fields in the Create a Record step, reference values from the Record Updated step.

For the item fields in the Create a Record step, reference the Search Records query step, as there may be more than one line item in an invoice:

Once everything is connected:
The reference tables stay up-to-date with NetSuite
Checking send to NS for an invoice record in Quickbase triggers automatic invoice creation in NetSuite
All line items transfer correctly
Your Quickbase app provides a simple, efficient way for users to create invoices that flow seamlessly into NetSuite