NetSuite WooCommerce Integration: 8-Step Guide

Adam Khaled
Founder, Web25


Adam Khaled
Founder, Web25

Quick answer: A NetSuite WooCommerce integration sends your store’s orders and customers into NetSuite, and brings stock levels, order status and refunds back, so nobody retypes them. You can use a ready-made template such as Celigo’s, or custom code built on NetSuite’s REST API. The right choice depends on how close your process is to the standard one.
If your orders arrive in WooCommerce and your accountant, warehouse and finance team work in NetSuite, someone is probably copying data between the two by hand. This guide explains how a NetSuite WooCommerce integration works, which way to build it, and what to check before you spend money.
NetSuite is cloud business software owned by Oracle. It’s an ERP, which means one system that holds your accounting, stock, orders, customers and reports. Mid-size and larger companies tend to use it, while small shops often run on lighter tools.
WooCommerce is the shop on your website. It takes the order and the payment. NetSuite is where the company keeps its records.
Without a link, a person has to retype every web order into NetSuite and update stock levels in the shop by hand, and both jobs go wrong as soon as volume grows.
NetSuite has no built-in link to WooCommerce that we could find, so you add a WooCommerce NetSuite connector. A connector is a small program, or a template on an integration platform, that moves data between the two systems on a schedule or when something happens.
A NetSuite WooCommerce integration moves data between your store and your ERP so each system has the same facts. Celigo, an integration platform, publishes a WooCommerce and NetSuite template with five flows. They are a good guide to what a typical integration covers: products to NetSuite items, orders to sales orders, customers to customers, NetSuite order status back to WooCommerce, and NetSuite cash refunds back to WooCommerce.
| Data | Usual direction | Why it matters |
|---|---|---|
| Orders as sales orders | WooCommerce to NetSuite | Finance and the warehouse see every web order without retyping |
| Customers | WooCommerce to NetSuite | One customer record for invoices and support |
| Products and prices | Depends on which system owns the catalog | One place to maintain items and tax codes |
| Stock levels | NetSuite to WooCommerce | Stops you selling items you don’t have |
| Order status and shipping details | NetSuite to WooCommerce | Customers see that the order is packed or shipped |
| Refunds and cancellations | Both ways, by agreed rule | Keeps the books correct after returns |
The directions above are the common setup. Many companies keep NetSuite as the source for stock and prices, and WooCommerce as the source for orders and customers.
Celigo’s template page lists those five flows. It doesn’t list stock levels or tracking numbers, so if you need them, ask the vendor in writing whether they are covered before you assume so.
There are three ways to connect WooCommerce to NetSuite: a ready-made template on an integration platform, a WooCommerce plugin that sits on top of such a platform, or custom code. Start with the simplest one that covers your real workflow, and move up only when it doesn’t.
| Method | Best for | Watch out for |
|---|---|---|
| Template on an integration platform, such as Celigo’s WooCommerce and NetSuite template | Standard order, customer, product, status and refund flows | A subscription to the platform, no public price on the template page, and limits when your process is unusual |
| WooCommerce plugin built on a platform | Store owners who want setup screens inside WordPress | One plugin in the WordPress directory describes itself as built on Celigo, so ask whether it needs a Celigo account behind it before you install it |
| Custom code | Custom fields, several warehouses, approval rules, or full control over errors and logging | Build and maintenance cost, so it needs documentation, tests and monitoring |
If a template covers your flows, use it. There’s no point paying for custom development to rebuild what a ready-made tool already does.
Custom code starts to pay off when your workflow doesn’t fit the standard one. Typical triggers are custom fields in NetSuite, stock held in several locations, rules such as holding an order until someone approves it, or a catalog where one WooCommerce product maps to several NetSuite items.
We cover the general method in our guide to custom API integration services. For a different store platform, the Shopify NetSuite integration guide walks through the same ERP from the Shopify side, and this guide stays with what is specific to WooCommerce. For a different ERP, the Dynamics 365 ecommerce integration guide covers Microsoft’s products.
Both systems set rules on how you log in, how often you can call them and how your code should read data. They shape the build, so read them before you choose a method.
| Rule | What the vendor says | What to do about it |
|---|---|---|
| NetSuite login | Oracle says to use token-based authentication or OAuth 2.0 for REST web services and RESTlets. OAuth 2.0 offers an authorization code grant and a client credentials (machine to machine) grant | Create an integration record in NetSuite and give the connecting role only the permissions the sync needs |
| NetSuite tokens | Per Oracle, an access token is valid for 60 minutes, and a refresh token for confidential clients for seven days | Refresh tokens before they expire, and alert someone if a refresh fails |
| NetSuite concurrency | Oracle’s governance rules count REST web services and RESTlet requests together for the account. Oracle’s concurrency limits table gives a base limit of 5, 15 or 20 for the current service tiers (Standard, Premium, Enterprise and Ultimate), plus 10 for each SuiteCloud Plus license. A request that runs longer than 15 minutes times out | Check your own limit under Setup, Integration, Integration Governance, and queue your calls. A sync that sends hundreds of requests at once can hit the ceiling |
| NetSuite RESTlets | A RESTlet is custom code that runs inside NetSuite. Oracle limits a SuiteScript 2.1 RESTlet to 5,000 usage units per run | Keep each RESTlet call small, and process large batches in pieces |
| NetSuite records | The REST record service exposes records such as sales orders, customers and inventory items. SuiteQL queries return up to 100,000 results | Match WooCommerce items to NetSuite items by a stable key such as SKU before you write any order |
| WooCommerce webhooks | Per the WooCommerce webhook documentation, deliveries are sent in the background with wp-cron, and after five failed deliveries in a row the webhook is disabled and has to be re-enabled | Verify the signature header, return a quick success answer, and add a catch-up job for missed events |
| WooCommerce order data | The orders API returns line items, billing and shipping details, fees, coupons and refunds, and lets you filter by modified date. WooCommerce asks custom code to use its own order functions rather than direct database access | Read orders through the REST API, and ask only for orders changed since your last run |
Oracle also notes that apps authorized with OAuth 2.0 in production aren’t copied to a sandbox, so you authorize them again each time the sandbox is refreshed. Plan for that when you test.
To set up a NetSuite WooCommerce integration, decide which system owns each type of data, map the fields, create secure access, build the order flow, build the stock and status flows, plan refunds, add a reconciliation check, then test in a NetSuite sandbox before going live. The steps below follow that order.
Write down which system wins for orders, customers, products, prices, stock and order status. When two systems can both change the same field, they will eventually disagree, and one will overwrite the other. A single owner per field avoids that.
List how a WooCommerce record becomes a NetSuite record. Match products by SKU. Variable products need care, because each variation is a separate item to match.
Some orders come from guests who never create an account, so decide how to match customers, such as by billing email, and what to do when a customer exists twice.
Map tax codes, shipping methods, payment methods and locations too. This is the slowest step and the one most often rushed. Mistakes here show up later as orders that land in the wrong place.
In NetSuite, create an integration record, use OAuth 2.0, and give the connecting role only the permissions the sync needs. In WooCommerce, the REST API uses a consumer key and secret over HTTPS, so create a key just for this connection. Keep both secrets out of the website files, and rotate them when anyone who had them leaves.
Use a WooCommerce webhook, a message the store sends to another system when something happens, to start the flow when an order is paid.
Each order should find or create the customer and then create a sales order in NetSuite. Store the WooCommerce order number on the NetSuite record. If the same order arrives twice, your code can see that it already exists and skip it.
Decide which order status triggers the flow. Sending after payment keeps abandoned and failed orders out of your ERP. A payment gateway API integration guide explains how to confirm payment by webhook.
Calculate the quantity you are willing to sell in NetSuite, then update only the WooCommerce products that match by SKU. Skip anything with no match and log it for review instead of guessing. Keep the schedule inside NetSuite’s concurrency limit.
WooCommerce orders have a status such as processing or completed, and the orders API lists the full set. Decide which NetSuite event moves an order to which WooCommerce status. Tracking numbers usually need an extension or a custom field in the shop, so decide where they will live.
Refunds touch money, so give them their own flow and their own tests. Decide whether a refund starts in WooCommerce or in NetSuite. Celigo’s template sends NetSuite cash refunds to WooCommerce, which suggests the finance team can start them there.
Whichever direction you pick, write it down so staff don’t refund the same order in both places.
Webhooks can fail, as the rules table above shows. Add a scheduled job that compares recent WooCommerce orders with NetSuite sales orders and reports any difference in count or total. Do the same for stock.
Ask the orders API for orders modified since your last run, so the check stays light.
Test in a NetSuite sandbox first, with real order shapes: a guest order, a variable product, a discount, a refund and a failed payment. Run the first live week with the connector in a log-only mode if you can, so you see what it would write before it writes anything. Then switch writes on, keep alerts on, and check the first sales orders with your finance team.
Web25 hasn’t delivered a NetSuite project yet. We did build a custom WooCommerce and POHODA integration for Mirael3D, a store selling 3D-printing filament.
POHODA is accounting software popular in Slovakia and Czechia, so it is the same kind of integration with a different system on the other side. Web orders had to reach the accounting system without anyone entering them again, and stock had to come back.
The Mirael3D POHODA case study shows what mattered in practice:
This is one project on one pair of systems, so treat it as an example of method. NetSuite has its own records, limits and quirks, which is why steps 3 and 8 come before launch.
Whoever you pick, a template vendor, a NetSuite partner or a developer, these questions tell you quickly how ready they are.
A good answer is specific. A vague answer to the first question is worth knowing before you sign.
There’s no honest single price, because the cost depends on a handful of factors you can list before you ask for a quote. A standard template setup is a smaller job. A custom sync with unusual rules is a larger one.
| Factor | Pushes the cost up when |
|---|---|
| Method | A template does not cover your flows, so custom code is needed |
| Number of flows | You sync orders, customers, products, stock, status and refunds, not just orders |
| Custom fields and rules | NetSuite has custom records, approval steps or several warehouses |
| Catalog | You have many variable products, or one WooCommerce product maps to several NetSuite items |
| Order volume | Peak days push you close to NetSuite’s concurrency limit |
| Monitoring | You want alerts, token care and someone to fix issues after launch |
Platform prices aren’t on the pages we checked either. Celigo’s template page shows none, and this guide doesn’t quote NetSuite prices. Ask NetSuite or your NetSuite partner for a written quote that lists licenses, modules and implementation separately.
Budget for the time after launch as well, because an integration touches your records and needs monitoring. Our guide to website maintenance packages covers how ongoing care is usually priced.
Most failures trace back to a check nobody made before launch.
If a template such as Celigo’s covers your flows, you may not need custom work, and we’ll say so. It’s a ready tool, though someone still has to set up NetSuite access, map your items and tax codes, and test it.
Web25 is our agency. This guide covers it alongside alternatives. We build custom integrations between WooCommerce stores and accounting software, then keep them monitored afterward. We haven’t delivered a NetSuite project yet.
We’d take one. We’d tell you that first, work in a NetSuite sandbox, and agree what is included in writing. If you need a team with a long NetSuite track record today, a NetSuite partner or the Celigo template is the safer start.
Our backend and API service page explains how we work, and you can tell us about your setup to see whether a template is enough. For other WooCommerce ERP integration options, the Odoo WooCommerce integration guide and the Xero WooCommerce integration guide walk through two other pairings.
No, WooCommerce doesn't ship with a NetSuite connection that we could find. You add one, either a ready-made template from an integration platform such as Celigo, or custom code that uses the WooCommerce REST API on one side and NetSuite's REST API on the other.
Not always. A ready-made template can cover orders, customers and products, but someone still has to set up access in NetSuite, match your items and tax codes, and test it. You need a developer when you have custom fields, several warehouses, approval steps or rules the template doesn't cover.
Oracle documents a concurrency limit for each account, which applies to REST web services and RESTlet requests combined. For current contracts, the base limit is 5, 15 or 20 depending on your service tier, plus 10 for each SuiteCloud Plus license. You can check your own limit in NetSuite under Setup, Integration, Integration Governance.
Oracle recommends token-based authentication or OAuth 2.0 for REST web services and RESTlets, and says user credentials aren't supported for RESTlets since January 1, 2021. For a new build, OAuth 2.0 is the usual choice. Ask your NetSuite administrator which grant type their security rules allow.
There's no single price. Celigo's WooCommerce template page doesn't list a price, and NetSuite prices aren't public on the pages we checked. Your cost depends on the method, the number of flows, custom fields, volume and the monitoring you want after launch. Ask each vendor for a written quote that names what is included.
WooCommerce documents that a webhook is disabled after five failed deliveries in a row, and has to be switched on again. Your integration needs a queue or a scheduled catch-up job, so orders placed during the outage are sent later, and an alert so someone notices.
List the flows you need: orders, customers, products, stock, status and refunds. Write down which system owns each one. Then ask your NetSuite administrator for your concurrency limit and your service tier, and take the answers, with the questions above, to the vendor or developer you are considering.
Written by Adam Khaled, Founder, Web25. Last updated October 18, 2026.

Agentic SEO means AI agents doing SEO work, not just suggesting it. What it is, what Google allows, the real risks, and when a small site should skip it.

Optimize WordPress for AI search in 8 checks: the Reading setting, robots.txt, bot-blocking hosts, one schema plugin, page builders, sitemaps and llms.txt.

Dynamics 365 ecommerce integration, step by step: find out which Dynamics 365 you run, pick a connector or custom API, plan for API limits and test first.