Integration

Connect NetSuite to Snowflake

Land NetSuite transactions, entities, and custom records in Snowflake without a nightly export you cannot see into: SuiteQL queries and SuiteAnalytics datasets on a short schedule, merged on internal ID with a watermark. Every load is a run you can inspect step by step.
NetSuite to Snowflake
Direction
Every few minutes, polled
Latency
Scheduled, on lastModified
Common trigger
Build the flow, then pick records and queries
Setup

Why teams connect NetSuite and Snowflake

NetSuite is the source of truth for revenue, cost, and inventory. Snowflake is where finance and analytics model it against sales, product, and marketing. NetSuite has no change-data-capture stream, so the usual pipeline is a nightly export, a fragile ODBC job, or a managed connector that is a black box at month-end.

  • Transactions and entities land in Snowflake every few minutes on a lastModified watermark, and the connector's Record Created or Changed trigger polls a SuiteQL table from every minute for the tables that need it
  • SuiteQL joins pull a transaction with its customer, subsidiary, and line items in one query, so the warehouse tables are already shaped for reporting
  • Every load is a run you can inspect with the query, the row count, and the merge, so a number that looks wrong in a board is traceable to a specific sync
  • Loads stay within your concurrency limit: process large backfills in chunks, outside peak hours, with Retry on failure for concurrency rejections

Worked example

The load flow most finance-analytics teams turn on first.

NetSuite transactions into RAW.NETSUITE.TRANSACTION, every five minutes

Watermark-driven through SuiteQL, with a nightly full reconcile.

  1. Trigger: a schedule every 5 minutes.
  2. Query: Run a SuiteQL query for transactions where lastmodifieddate > :watermark, joining the entity, subsidiary, and currency, up to 1,000 rows per page.
  3. Lines: a second SuiteQL query pulls the transaction lines for the same set, into a TRANSACTION_LINE table.
  4. Merge: Execute Snowflake SQL with MERGE INTO RAW.NETSUITE.TRANSACTION t USING (SELECT ...) s ON t.INTERNAL_ID = s.INTERNAL_ID, in chunks for large pages.
  5. Watermark: write the max lastmodifieddate seen to a control table.
  6. Deletes: a nightly SuiteQL query of NetSuite's deleted-record table marks IS_DELETED = TRUE in the warehouse.
  7. Nightly reconcile: a SuiteQL query of the trailing 45 days is merged, catching any row a short-window watermark missed.

Field mapping

The starting map for the transaction to RAW.NETSUITE.TRANSACTION step.

NetSuite (SuiteQL)Snowflake columnNotes
transaction.idINTERNAL_ID NUMBERMerge key.
transaction.typeTYPE VARCHARSalesOrd, CustInvc, VendBill, and so on. Kept as the internal code.
transaction.tranidTRAN_ID VARCHARThe human document number.
transaction.entityENTITY_ID NUMBERForeign key to RAW.NETSUITE.ENTITY.
transaction.trandateTRAN_DATE DATEDate, in the account timezone.
transaction.currency, exchangerateCURRENCY VARCHAR, EXCHANGE_RATE NUMBERKeep both so the warehouse can present base and transaction currency.
transaction.foreigntotalFOREIGN_TOTAL NUMBER(18,2)Transaction-currency total. Derive a base-currency column.
transaction.subsidiarySUBSIDIARY_ID NUMBEROneWorld accounts only. Null on single-subsidiary.
transaction.lastmodifieddateLAST_MODIFIED TIMESTAMP_NTZWatermark. UTC.
(derived)IS_DELETED BOOLEANSet by the deleted-records flow, default FALSE.

What syncs, each direction

  • Transactions and lines. Sales orders, invoices, bills, journals, and their lines land as typed tables, joined to entity and subsidiary. (NetSuite to Snowflake)
  • Entities and items. Customers, vendors, employees, and the item list sync as dimension tables for the fact tables to join. (NetSuite to Snowflake)
  • Custom records. Any custom record type is queried with SuiteQL and loaded the same way as a standard record. (NetSuite to Snowflake)
  • Dataset results. A SuiteAnalytics dataset runs on a schedule and its result set lands as a table, keeping the report logic in NetSuite. (NetSuite to Snowflake)

Governance and audit

The same controls apply to this sync as to every other Neblex workload.

  • Run history. Every load records the SuiteQL statement, the row count, and the merge. A failed run can be replayed from the step that failed.
  • Kind to governance. Large loads run in chunks on a schedule you choose, so a backfill does not crowd out other integrations.
  • Scoped access. NetSuite uses a role with read access to the record types being loaded. Snowflake uses a role with grants on the target schema only.
  • Environments. Build against a NetSuite sandbox and a Snowflake scratch schema, then promote the same flow to production.

Frequently asked questions

NetSuite has no CDC. How fresh is the data?

Every few minutes on a lastModified watermark for scheduled loads, or every minute with the Record Created or Changed trigger. For an immediate push, a SuiteScript you maintain in NetSuite can call a Neblex Webhook trigger.

Will the load compete with the ERP for capacity?

Not if you size it. Run backfills in chunks outside peak hours and turn on Retry on failure, so a query NetSuite rejects for concurrency waits and tries again instead of crowding out payroll or fulfillment.

How are deleted records handled?

A nightly SuiteQL query of NetSuite's deleted-record table marks those internal IDs IS_DELETED = TRUE in the warehouse, rather than the row disappearing.

Can we keep report logic in NetSuite?

Yes. A SuiteAnalytics dataset can run on a schedule and its result set land as a table, which keeps the report logic where finance already maintains it. Saved searches can be reached through a RESTlet you deploy.

Does anything get installed in NetSuite?

No. SuiteQL and dataset loads need nothing installed. An immediate push needs a SuiteScript of your own that calls a Neblex Webhook trigger.

Connectors used

NetSuite

ERP & Enterprise Systems

Operations
271
Operations with typed output
0%
Change triggers
1 (poll)
Signs in with
Connection details
Connector reference

Snowflake

Databases & Data Warehouses

Operations
7
Operations with typed output
85.7%
Change triggers
Poll or inbound webhook
Signs in with
Connection details
Connector reference

NetSuite does not describe its output fields in advance, so check the field mapping with Test this step when you build the flow.

See it on your data

Bring one real integration

We will build it with you against your own systems, with the run log open.