← Back to Activity Monitor
Implementation Guide

NetSuite Activity Monitor — Setup

Self-hosted and config-driven. You run this on your own server, against your own NetSuite account. Nothing here is shared with anyone else's deployment.

1 NetSuite side

Role permissions

The role needs, View only — this app never writes anything to your NetSuite account:

  • Setup tab → REST Web Services — required to execute the RESTlet at all.
  • Transactions tab, View, for every transaction type you want to track: Sales Order, Invoice, Credit Memo, Purchase Order, Vendor Bill, Vendor Payment, Customer Payment, Work Order, Work Order Issue, Work Order Completion, Item Fulfillment, Item Receipt, Inventory Adjustment, Inventory Transfer, Check. The RESTlet's SuiteQL joins SystemNote to the transaction table, so this permission gates that join as well as the transaction lookup — not just cosmetic.
  • Lists tab → Subsidiaries, View, for every subsidiary you want activity from.
  • Least privilege: View, not Full/Edit/Create — this role only reads.
Not fully isolated in testing: whether System Notes visibility needs anything beyond the Transactions access above, or follows from it automatically. Verify against your own role rather than assuming.
2 Server side
# create a directory and copy in the downloaded files:
# dashboard-server.js, dashboard.html, config.json, package.json,
# .env.example, and the lib/ folder
mkdir -p activity-monitor
cd activity-monitor
npm install

cp .env.example .env
# edit .env: fill in NS_ACCOUNT_ID, NS_CONSUMER_KEY, NS_CONSUMER_SECRET,
# NS_TOKEN_ID, NS_TOKEN_SECRET, NS_NETSUITE_GATEWAY_ID from step 1

nano config.json
# replace "REPLACE_WITH_YOUR_ACCOUNT_ID" in accountDomain
# replace each "REPLACE" subsidiary key with your subsidiary's
# internal ID, and update the labels to match your own subsidiaries

Run it:

node dashboard-server.js
# should log: [dashboard] serving on http://localhost:<DASHBOARD_PORT>

Optional — keep it running across reboots with a process manager such as pm2:

pm2 start dashboard-server.js --name activity-monitor
pm2 save
3 Verify