What it is
Purchase orders are written only when sending is enabled for your connection, NetSuite is your system of record and Tightly enables writes. Other syncs read only. Use View permissions; Setup requires Full.
Why the list is what it is
Routine sync needs SuiteAnalytics Workbook as well as REST Web Services. Tightly checks both when connecting.
Create the role
Open Setup → Users/Roles → Manage Roles → New. Name the role Tightly Integration. Non-UI roles work.
Setup permissions, each at Full:
| Permission | Why |
|---|---|
| REST Web Services | The route every call goes to |
| SuiteAnalytics Workbook | Routine sync reads use SuiteQL, so this permission is required |
| Log in using Access Tokens | Token-based authentication itself |
| User Access Tokens | So the token can be created against this role |
| Access Token Management | The token's lifecycle |
| Integration Application | The record holding the consumer key and secret |
Lists permissions, each at View:
| Permission | Why |
|---|---|
| Items | Products and variants, their vendors, and the parts of kits and assemblies |
| Locations | Your stock locations, and the first thing the connect test queries |
| Vendors | Suppliers and their item links |
| Subsidiaries | Read on locations, orders, refunds and supplier links, single-subsidiary accounts included |
| Customers | Every sales order query joins it, and the connection checks read it |
| Perform Search | Paging through the result sets |
Transactions permissions, each at View:
| Permission | Why |
|---|---|
| Sales Order | Sales history and demand |
| Purchase Order | Open orders on the water, and how much of each line is received |
| Work Order, Transfer Order | Builds, transfers |
| Cash Refund | Refunds against cash sales, read as returns |
| Credit Memo | Refunds against invoices, read as returns |
| Item Receipt | Part of the recommended role; received quantities are read off the purchase order's own lines |
Grant access to every subsidiary you want planned. NetSuite can omit inaccessible rows without reporting an error.
Turn on one feature
Setup, then Company, then Enable Features, then Items and Inventory, then Multiple Vendors.
This enables the item-to-vendor links. It does not supply a verified vendor minimum order quantity; Not mapped remains visible until a supported source is configured or a value is entered in Tightly.
Create the integration record and the token
- Setup, then Integration, then Manage Integrations, then New. Name it
Tightly. Tick Token-Based Authentication. Untick TBA Authorization Flow and both OAuth 2.0 boxes. Save. - NetSuite shows the consumer key and consumer secret once, on that screen only. Copy them now.
- Assign the role to the user the integration runs as: Setup, then Users/Roles, then Manage Users, then that user, then Access.
- Setup, then Users/Roles, then Access Tokens, then New. Pick the application, that user and that role. Save.
- NetSuite shows the token ID and token secret once, on that screen only. Copy them now.
The five values Tightly asks for
The account ID (1234567, or 1234567_SB1 for a sandbox), the consumer key, the consumer secret, the token ID and the token secret.
Connection refusals appear under the form. Without SuiteAnalytics Workbook:
NetSuite accepted these credentials but refused the SuiteQL query every Tightly sync depends on. Enable the 'SuiteAnalytics Workbook' permission on this token's role (it is separate from 'REST Web Services') and test again.
If a refusal names permissions, check SuiteAnalytics Workbook first.
Configure purchasing mappings
Open Settings → Integrations → NetSuite. Use Mapping for columns, components and subsidiaries, or Settings for orders.
- Mapping → Subsidiaries: select each purchasing subsidiary and its channels and warehouses, then Save mappings. Warehouse choices show verified NetSuite subsidiary ownership when available. The NetSuite warehouses table lists source warehouse and subsidiary IDs, including inactive warehouses returned by your role.
- Settings → Order settings: select named NetSuite currencies, receiving warehouses and, if needed, a default subsidiary. Search warehouses by name.
Match from NetSuite fills missing currency and warehouse mappings from verified source records. It preserves existing choices and stages changes for review; select Save settings to apply them. Unavailable saved mappings stay visible so they can be corrected.
Subsidiary sync: save, then Verify selection. After verification, Activate selection. Refresh status retries a failed check. Active shows the scope in use. Use all accessible restores full role access. Failed actions retain your selection.
Latest source pull shows observed counts and extraction filters. Source loading is separate from the run result. Linked history windows retain IDs; unfetched counts and coverage remain unknown. Absence never authorizes deletion.
Saving mappings does not send purchase orders.
For New purchase-order emails, switch on Email newly created NetSuite purchase orders, enter one recipient and Save settings. Only orders created afterward qualify, when NetSuite next syncs. Older imports and updates are excluded. Switching off stops pending notices.
In Mapping → Columns, administrators select Map field, review and publish. Supplier lead time and replenishment frequency are separate day counts. Case pack has its own field mapping. SKU/warehouse lead-time defaults are read-only. Dimension and weight units are not case packs. Not mapped means no source.
Carton dimensions and carton weight have independent unit mappings. Measurement basis identifies Product, Folded, Packed or Unknown dimensions. Product units do not establish carton units. Missing or unverified units cannot reinterpret saved measurements. Native warehouse packages need verified package identities, contents and current warehouse stock membership before they can establish measured space. Saving item mappings alone does not supply that evidence.
Choose Managed in → Tightly for an editable field to keep its current value and stop NetSuite replacing it. Select Save to apply the choice. Switching back to NetSuite resumes that source on the next sync. A blank value remains missing.