# NetSuite Suite Analytics (v2)

Information note **NetSuite Suite Analytics extraction is supported by Stitch**   
This integration is powered by [Singer's](https://www.singer.io/) NetSuite Suite Analytics tap and certified by Stitch.   
  
For support, contact [Support](https://community.qlik.com/t5/Support/ct-p/qlikSupport).

## NetSuite Suite Analytics integration summary

Stitch’s NetSuite Suite Analytics integration replicates data using the SuiteAnalytics Connect JDBC driver. Using this integration requires that the [SuiteAnalytics feature](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#setup-requirements) be enabled in your NetSuite account.

Refer to the [Schema](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#schema) section for a list of objects available for replication.

## NetSuite Suite Analytics feature snapshot

A high-level look at Stitch's NetSuite Suite Analytics (v2) integration, including release status, useful links, and the features supported in Stitch.

| **STITCH** |  |  |  |
| --- | --- | --- | --- |
| **[Release status](https://help.qlik.com/en-US/stitch/integrations/identify-an-integration-version)** | Released on July 20, 2026 | **Supported by**<br><br>the Info icon<br><br>Indicates if the integration is supported by Stitch or the Singer community. | [Stitch](https://community.qlik.com/t5/Support/ct-p/qlikSupport) |
| **Stitch plan**<br><br>the Info icon<br><br>The type of Stitch plan required to use the integration. | Standard | **[API availability](https://help.qlik.com/en-US/stitch/developers/stitch-connect/guides/source-destination-reference)**<br><br>the Info icon<br><br>Indicates if the integration is available as a source in Stitch Connect. | the Success icon<br><br>This version of the integration is available via the API.<br><br><br>Available |
| **Singer GitHub repository** | [](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics) |  |  |
| **REPLICATION SETTINGS** |  |  |  |
| **[Anchor Scheduling](https://help.qlik.com/en-US/stitch/replication/replication-scheduling/anchor-scheduling)**<br><br>the Info icon<br><br>A type of replication scheduling where an integration's Replication Frequency is anchored to a time you select. | the Success icon<br><br>This feature is supported for this version of the integration.<br><br><br>Supported | **[Advanced Scheduling](https://help.qlik.com/en-US/stitch/replication/replication-scheduling/advanced-scheduling)**<br><br>the Info icon<br><br>A type of replication scheduling that allows you to specify granular start times for data extraction using cron expressions. | the Success icon<br><br>This feature is supported for this version of the integration.<br><br><br>Supported |
| **Table-level reset**<br><br>the Info icon<br><br>Indicates if data can be reset at the table level. If unsupported, data can only be reset at the integration level. | the Success icon<br><br>This feature is supported for this version of the integration.<br><br><br>Supported | **[Configurable Replication Methods](https://help.qlik.com/en-US/stitch/replication/replication-methods)**<br><br>the Info icon<br><br>Indicates if Replication Methods can be defined by you for tables in the integration. | the Success icon<br><br>This feature is supported for this version of the integration.<br><br><br>Supported |
| **DATA SELECTION** |  |  |  |
| **Table selection**<br><br>the Info icon<br><br>The ability to select individual tables for replication in the Stitch interface. If table selection is unavailable, all tables and all the columns they contain will be set to replicate by default. | the Success icon<br><br>This feature is supported for this version of the integration.<br><br><br>Supported | **Column selection**<br><br>the Info icon<br><br>The ability to select individual columns for replication in the Stitch interface. If column selection is unavailable, all columns will be set to replicate by default. | the Success icon<br><br>This feature is supported for this version of the integration.<br><br><br>Supported |
| **Select all**<br><br>the Info icon<br><br>Indicates if the integration supports selecting all available tables and columns. | the Success icon<br><br>Supported<br><br><br>Supported |  |  |
| **TRANSPARENCY** |  |  |  |
| **[Extraction Logs](https://help.qlik.com/en-US/stitch/replication/extractions/integration-extraction-logs)**<br><br>the Info icon<br><br>Logs detailing the Extraction phase of the replication process for a given integration. Includes error info, should an error occur. | the Success icon<br><br>This feature is supported for this version of the integration.<br><br><br>Supported | **[Loading Reports](https://help.qlik.com/en-US/stitch/replication/integration-loading-reports)**<br><br>the Info icon<br><br>Reports detailing the Loading phase of the replication process for a given integration. Includes the number of rows loaded for each table and error info, should an error occur. | the Success icon<br><br>This feature is supported for this version of the integration.<br><br><br>Supported |

## Connecting NetSuite Suite Analytics

### NetSuite Suite Analytics setup requirements

To set up NetSuite Suite Analytics in Stitch, you need:

* **Administrator permissions in NetSuite.**. This is required to complete the setup steps in NetSuite.

* **Access to the SuiteAnalytics feature in NetSuite.** Suite Analytics is a premium NetSuite feature. Contact your NetSuite administrator if you have questions about this feature.

### Step 1: Create a Stitch NetSuite role and configure permissions

To connect NetSuite Suite Analytics to Stitch, we recommend that you create a Stitch-specific role and user for us.

1. Using the global search, type `page: new role` and click the **Page: New Role** result.

2. In the **General** section, enter a name for the role in the **Name** field. For example: `Stitch SuiteAnalytics`

3. Scroll down to the **Permissions** tab and click the **Setup** subtab, if it isn’t already open.

4. Using the **Permission** dropdown, search for `SuiteAnalytics Connect`:

   ![The SuiteAnalytics Connect permission in the Create Role screen in NetSuite](https://help.qlik.com/en-US/stitch/images/integrations/netsuite-suite-analytics-role-permissions.png)The SuiteAnalytics Connect permission in the Create Role screen in NetSuiteThe SuiteAnalytics Connect permission in the Create Role screen in NetSuite

5. Click **Add** to add the permission to the role.

6. When finished, click **Save** to create the role.

### Step 2: Get the role's internal ID

1. Using the global search, type `page: manage roles` and click the **Page: Manage Roles** result.

2. Locate the role you created [in the previous step](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#create-configure-stitch-role).

3. Locate the role’s **Internal ID**:

   ![The role's internal ID in the Manage Roles screen in NetSuite](https://help.qlik.com/en-US/stitch/images/integrations/netsuite-suite-analytics-role-id.png)The role's internal ID in the Manage Roles screen in NetSuiteThe role's internal ID in the Manage Roles screen in NetSuite

   **Note**: If you don’t see the **Internal ID** column, click the **Edit View** button to add it.

Keep this info handy - you’ll need it to complete the setup in Stitch.

### Step 3: Create a Stitch NetSuite user and assign the role

Next, you’ll create a dedicated NetSuite Suite Analytics user for Stitch and assign the Stitch role to it.

1. Using the global search, type `page: new employee` and click the **Page: New Employees** result.
2. In the Employee page, fill in the **Name**, **Email**, and any other required fields.
3. Click the **Access** tab, located in the bottom half of the page.
4. In the **Access** tab:
   1. Check the **Give Access** box.
   2. Check the **Manually assign or change password** box to create a password for the Stitch user.
   3. Enter a password in the **Password** field, then again in the **Confirm Password** field.
   4. In the **Roles** section, search the dropdown menu to locate the Stitch role you created in [Step 1](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#create-configure-stitch-role).
   5. Click **Add** once you’ve located the role.
5. When finished, click **Save** to create the user.

### Step 4: Retrieve SuiteAnalytics Connect details

In this step, you’ll retrieve the details required to connect to NetSuite Suite Analytics from NetSuite.

1. On the home page of your NetSuite account, click **Settings &gt; Set Up SuiteAnalytics Connect**:

   ![The NetSuite homepage with the Set Up SuiteAnalytics Connect option highlighted](https://help.qlik.com/en-US/stitch/images/integrations/netsuite-suite-analytics-home-settings.png)The NetSuite homepage with the Set Up SuiteAnalytics Connect option highlightedThe NetSuite homepage with the Set Up SuiteAnalytics Connect option highlighted

2. The next page will display the connection details in the **Your Configuration** section:

   ![The Your Configuration section of the Set Up SuiteAnalytics Connect page in NetSuite](https://help.qlik.com/en-US/stitch/images/integrations/netsuite-suiteanalytics-connect-page.png)The Your Configuration section of the Set Up SuiteAnalytics Connect page in NetSuiteThe Your Configuration section of the Set Up SuiteAnalytics Connect page in NetSuite

Keep this page open - you’ll need it in the next step.

### Step 5: Add NetSuite Suite Analytics as a Stitch data source

1. [Sign into your Stitch account](https://app.stitchdata.com/).

2. On the Stitch Dashboard page, click the **Add Integration** button.

3. Click the **NetSuite Suite Analytics** icon.

4. Enter a name for the integration. This is the name that will display on the Stitch Dashboard for the integration; it’ll also be used to create the schema in your destination.

   For example, the name “Stitch NetSuite Suite Analytics” would create a schema called `stitch_netsuite_suite_analytics` in the destination. **Note**: Schema names cannot be changed after you save the integration.

5. In the **Host** field, paste the host value from [Step 4](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#retrieve-suite-analytics-connect).

6. In the **Port** field, paste the port value from [Step 4](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#retrieve-suite-analytics-connect).

7. In the **Account ID** field, paste the account ID field from [Step 4](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#retrieve-suite-analytics-connect).

8. In the **Role ID** field, enter the role’s internal ID from [Step 2](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#get-role-internal-id).

9. In the **Username** and **Password** fields, enter the Stitch user’s username and password from [Step 1](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#create-configure-stitch-role).

### Step 6: Define the historical replication start date

The Sync Historical Data setting defines the starting date for your NetSuite Suite Analytics integration. This means that data **equal to or newer than this date** will be replicated to your data warehouse.

Change this setting if you want to replicate data beyond NetSuite Suite Analytics’s default setting of **1 year**. For a detailed look at historical replication jobs, check out the [Syncing Historical SaaS Data](https://help.qlik.com/en-US/stitch/replication/syncing-historical-saas-data-resetting-replication-keys) guide.

### Step 7: Create a replication schedule

Information note Replication schedules affect the time Extraction begins, not the time to data loaded. Refer to the [Replication Scheduling](https://help.qlik.com/en-US/stitch/replication/replication-scheduling) documentation for more information.

In the **Replication Frequency** section, you’ll create the integration’s [replication schedule](https://help.qlik.com/en-US/stitch/replication/replication-scheduling). An integration’s replication schedule determines how often Stitch runs a replication job, and the time that job begins.

NetSuite Suite Analytics integrations support the following replication scheduling methods:

* [Replication Frequency](https://help.qlik.com/en-US/stitch/replication/replication-scheduling/replication-frequency)

* [Anchor Scheduling](https://help.qlik.com/en-US/stitch/replication/replication-scheduling/anchor-scheduling)

* [Advanced Scheduling using Cron](https://help.qlik.com/en-US/stitch/replication/replication-scheduling/advanced-scheduling) (Advanced or Premium plans only)

To keep your row usage low, consider setting the integration to replicate less frequently. See the [Understanding and Reducing Your Row Usage guide](https://help.qlik.com/en-US/stitch/getting-started/understanding-stitch-usage) for tips on reducing your usage.

### Step 8: Set objects to replicate

Information note **Is an object missing or not replicating?** Verify that the object meets the requirements for [selection](https://help.qlik.com/en-US/stitch/replication/extractions/data-selection/setting-tables-and-columns-to-replicate#selection-requirements) and [replication](https://help.qlik.com/en-US/stitch/replication/extractions/data-selection/setting-tables-and-columns-to-replicate#replication-requirements).

The last step is to select the tables and columns you want to replicate. [Learn about the available tables for this integration.](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#schema)

**Note**: If a replication job is currently in progress, new selections won’t be used until the next job starts.

* Selection options
* Individual tables and columns
* All tables and columns

For NetSuite Suite Analytics integrations, you can select:

1. **Individual tables and columns**

2. **All tables and columns**

Click the tabs to view instructions for each selection method.

1. In the integration’s **Tables to Replicate tab**, locate a table you want to replicate.

2. To track a table, click the **checkbox** next to the table’s name. A blue checkmark means the table is set to replicate.

3. To track a column, click the **checkbox** next to the column’s name. A blue checkmark means the column is set to replicate.

4. **Optional**: To define a table’s [Replication Method](https://help.qlik.com/en-US/stitch/replication/replication-methods), click **Table Settings** on the right side of the page.

   Whenever possible, Stitch will default to using [Key-based Incremental Replication](https://help.qlik.com/en-US/stitch/replication/replication-methods/key-based-incremental). In some cases, you may be prompted to select a [Replication Key](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#extraction--data-replication) for the table.

   To change the table’s Replication Method:

   1. Select the Replication Method you want the table to use. **Note**: Some tables can only be replicated using [Full Table Replication](https://help.qlik.com/en-US/stitch/replication/replication-methods/full-table). Key-based Incremental Replication will be greyed out when this is applicable.
   2. If required, select a Replication Key for the table.
   3. Click **Update Settings**.

5. Repeat this process for all the tables and columns you want to replicate.

6. When finished, click the **Finalize Your Selections** button at the bottom of the screen to save your selections.

Information note **Important**: Using the **Select All** feature will overwrite any previous selections. However, selections aren’t final until **Finalize Your Selections** is clicked. Clicking **Cancel** will restore your previous selections. Refer to the [Select All guide](https://help.qlik.com/en-US/stitch/replication/extractions/data-selection/setting-tables-and-columns-to-replicate#set-all-data-to-replicate) for more info about this feature.

1. Click into the integration from the Stitch Dashboard page.

2. Click the **Tables to Replicate** tab.

3. In the list of tables, click the box next to the **Table Names** column.

4. In the menu that displays, click **Track all Tables and Fields**:

   ![The Track all Tables and Fields menu in the Tables to Replicate tab](https://help.qlik.com/en-US/stitch/images/replication/select-all-tables-menu.png)The Track all Tables and Fields menu in the Tables to Replicate tabThe Track all Tables and Fields menu in the Tables to Replicate tab

5. Click the **Finalize Your Selections** button at the bottom of the page to save your data selections.

### Initial and historical replication jobs

After you finish setting up NetSuite Suite Analytics, its **Sync Status** may show as **Pending** on either the Stitch Dashboard or in the Integration Details page.

For a new integration, a **Pending** status indicates that Stitch is in the process of scheduling the initial replication job for the integration. **This may take some time to complete.**

Information note

**Initial replication jobs with Anchor Scheduling**

If using Anchor Scheduling, an initial replication job may not kick off immediately. This depends on the selected Replication Frequency and Anchor Time. Refer to the [Anchor Scheduling](https://help.qlik.com/en-US/stitch/replication/replication-scheduling#job-scheduling-and-anchor-times) documentation for more information.

#### Free historical data loads

The first seven days of replication, beginning when data is first replicated, are free. Rows replicated from the new integration during this time won’t count towards your quota. Stitch offers this as a way of testing new integrations, measuring usage, and ensuring historical data volumes don’t quickly consume your quota.

Information note **Replication will continue after the seven days are over**. If you’re no longer interested in this source, be sure to **pause** or **delete** the integration to prevent unwanted usage.

## NetSuite Suite Analytics replication

In this section:

* [Details about Extraction, including object discovery, data typing, and selecting data for replication](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#extraction-details)

* [Details about how data replicated from NetSuite Suite Analytics is loaded into a destination](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#loading-details)

### Extraction

For every table set to replicate, Stitch will perform the following during Extraction:

* [Discover tables, their schemas, and data type columns](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#extraction--discovery)

* [Select records for replication](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#extraction--data-replication)

#### Discovery

During Discovery, Stitch will:

* [Discover tables and their schemas](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#discovery--objects)

* [Identify Primary Keys](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#discovery--primary-keys)

* [Type the data in discovered columns](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#discovery--data-types)

##### Discover tables

To discover tables and their schemas, Stitch queries the `OA_COLUMNS` system table in the [Connect Schema](https://1796361.app.netsuite.com/app/help/helpcenter.nl?fid=section_158695828012.html) for the following info:

| **Column name** | **Description** |
| --- | --- |
| **table\_name** | The name of the table. |
| **table\_qualifer** | The name of the table qualifier. Stitch uses this data to filter out system tables. |
| **table\_owner** | The name of the table owner. Stitch uses this data to filter out system tables. |
| **column\_name** | The name of a column in the table. |
| **type\_name** | The data type of the `column_name` column. Stitch uses this data to [type columns](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#discovery--data-types). |
| **oa\_scale** | For `NUMBER` data types, the scale of the data in the `column_name` column. Stitch uses this data to [type columns](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#discovery--data-types). |

All tables where `table_qualifer != SCHEMA` and `table_owner != SYSTEM` will be returned and displayed in Stitch as avaiilable for replication.

Refer to [NetSuite’s documentation](https://1796361.app.netsuite.com/app/help/helpcenter.nl?fid=section_4410183892.html) for more info about the `OA_COLUMNS` system table.

##### Identifying Primary Keys

Stitch’s approach to Primary Keys for NetSuite Suite Analytics is a bit different than other integrations. In NetSuite Suite Analytics, we’ve found that some tables might not have Primary Keys at all, or Primary Key columns may sometimes contain `NULL` values.

To determine if a table has Primary Keys, Stitch queries the `OA_FKEYS` system table. If the table has Primary Keys, Stitch will:

1. Combine all Primary Key column values on a per record basis
2. Hash the result and place the hash in a [system column](https://help.qlik.com/en-US/stitch/replication/loading/system-tables-columns) named `_sdc_record_hash`
3. Designate `_sdc_record_hash` as the table’s Primary Key. Primary Key columns will have a ![](https://help.qlik.com/en-US/stitch/images/replication/primary-key-icon.svg) icon next to their name in Stitch.
4. Automatically set `_sdc_record_hash` and the table’s Primary Key columns to replicate

**Note**: The presence of Primary Keys partially determines [how data is loaded into your destination](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#loading-details).

Refer to [NetSuite’s documentation](https://1796361.app.netsuite.com/app/help/helpcenter.nl?fid=section_4410184091.html) for more info about the `OA_FKEYS` system table.

##### Data typing

Next, Stitch will assign data types to columns. To determine data types, Stitch uses the `type_name` and `oa_scale` columns returned from the `OA_COLUMNS` system table [during table discovery](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#discovery--objects).

In the following table:

* **NetSuite data type**: The data type in NetSuite, based on the column’s `type_name` value.
* **Stitch data type**: The Stitch data type the NetSuite type will be mapped to.
* **Description:** Details about the data type or mapping.

| **NetSuite data type** | **Stitch data type** | **Description** |
| --- | --- | --- |
| **VARCHAR2** | STRING | The `VARCHAR2` data type includes `BOOLEAN` data due to how NetSuite stores these values.<br><br>NetSuite stores `BOOLEAN` values as `VARCHAR2` with either a length of one (`"t"` or `"f"`) or three (`"yes"` or `"no"`). As typing can’t be correctly asserted based on a length of one or three, these values are dicovered as strings. |
| **NUMBER** | INTEGER | If the column’s `oa_scale` value is `0`, Stitch will type the data as an `INTEGER`. |
| **NUMBER** | NUMBER | If the column’s `oa_scale` value is greater than `0`, Stitch will type the data as a `NUMBER`. |
| **TIMESTAMP** | STRING (DATE-TIME) | Stitch will type `TIMESTAMP` data as a `DATE-TIME`-formatted string. |

#### Data replication

After discovery is completed, Stitch will move onto extracting data. The [Replication Method](https://help.qlik.com/en-US/stitch/replication/replication-methods) Stitch uses is dependent on whether the table contains valid [Replication Key columns](https://help.qlik.com/en-US/stitch/replication/replication-keys).

Stitch will default to using [Key-based Incremental Replication](https://help.qlik.com/en-US/stitch/replication/replication-methods/key-based-incremental) if a table contains any of the following columns:

* `last_modified_date`
* `date_last_modified`
* `date_deleted`
* `date_last_modified_gmt` (`transaction_lines` table only)

If a table contains more than one of the above columns, you’ll be prompted to select a column to use as a Replication Key when you set the table to replicate. Otherwise, Stitch will use the single column as the Replication Key for the table.

If a table doesn’t contain any of the above columns, Stitch will default to using [Full Table Replication](https://help.qlik.com/en-US/stitch/replication/replication-methods/full-table).

As this integration supports configuring Replication Methods, you can toggle between Replication Methods for tables on the **Table Settings** page in Stitch.

### Loading

How data replicated from an NetSuite Suite Analytics integration is loaded into your destination depends on two factors:

1. **If the table has Primary Keys** identified [during discovery](https://help.qlik.com/en-US/stitch/integrations/saas/netsuite-suite-analytics#discovery--primary-keys).

2. **If your destination supports upserts, or updating existing rows**. For destinations that support upserts, Stitch uses Primary Keys to de-dupe data during loading. Primary Keys are used to identify unique rows within a table and ensure that only the most recently updated version of that record appears in your destination.

   **Note**: For Append-Only destinations, data will be loaded in an Append-Only manner regardless of whether a table has Primary Keys.

#### Loading with Primary Keys

If the destination supports upserts and the table has Primary Keys, Stitch will de-dupe records using `_sdc_record_hash` as the Primary Key.

This means that existing rows will be overwritten with the most recent version of the row. A record can only have a single unique Primary Key value, ensuring that only one version of the record exists in the destination at a time.

#### Loading without Primary Keys

If the destination is Append-Only, or if the table doesn’t have Primary Keys, data will be loaded in an Append-Only manner.

This means that existing rows will never be updated with new data. New and updated records will be appended to the end of the table as new rows.

**Note**: Querying Append-Only tables requires a different strategy than you might normally use. For instructions and a sample query, check out the [Querying Append-Only tables guide](https://help.qlik.com/en-US/stitch/replication/loading/querying-append-only-tables).

## NetSuite Suite Analytics table reference

Information note

**Schemas and versioning**

Schemas and naming conventions can change from version to version, so we recommend verifying your integration’s version before continuing.

The schema and info displayed below is for **version 2** of this integration.

This is the latest version of the NetSuite Suite Analytics integration.

Information note

**Table and column names in your destination**

Depending on your destination, table and column names may not appear as they are outlined below.

For example: Object names are lowercased in Redshift (`CusTomERs` &gt; `customers`), while case is maintained in PostgreSQL destinations (`CusTomERs` &gt; `CusTomERs`). Refer to the [Loading Guide](https://help.qlik.com/en-US/stitch/replication/loading/destination-guides) for your destination for more info.