Suite Utils
Back to Blog
NetSuite TipsSep 4, 2026 • 7 min read

How to Stream NetSuite KPIs to a TV Without Buying

Learn how to display NetSuite KPIs on TV without buying additional seats or licenses.

Arav SharmaArav SharmaCore SuiteScript & Integration Engineer
How to Stream NetSuite KPIs to a TV Without Buying
On this page

Walking into a warehouse and seeing a NetSuite dashboard stuck on a login screen is a specific kind of frustration. The screen has been there for a year, and the data behind it costs more than the TV. The fix is simpler than it looks, and it does not require another NetSuite seat.

The Problem With Screensharing NetSuite to a TV

Most teams start with the obvious approach: open NetSuite in a browser, cast it to a Firestick or Chromecast, and call it done. Two things go wrong almost immediately.

First, NetSuite's idle session timeout kicks in even when you push the setting to its ceiling. Under Setup > Company > Preferences > General Preferences, the Idle Session Timeout in Minutes field accepts values from 15 minutes to 720 minutes (12 hours). That sounds generous, but 12 hours is still not "indefinite." The browser will eventually blank back to the login page, and someone has to walk over and re-enter credentials. PCI-restricted roles are pinned to 15 minutes regardless, so any dashboard touching customer payment data is unusable on a wall display.

Second, every NetSuite browser session is tied to a named user license. If finance has one dashboard running in the conference room and operations has another on the shop floor, that is potentially two seats consumed by screens rather than people.

The license cost of a single warehouse TV running NetSuite full-screen can exceed the cost of the Firestick, the mount, and three years of electricity combined.

What Token-Based Authentication Actually Changes

NetSuite supports token-based authentication (TBA) through SOAP and REST web services. When a dashboard or display app authenticates with a token rather than a username and password, the integration runs against an API session rather than a logged-in browser session, so the wall display stops competing for a named-user seat.

The practical effect for TV displays:

  • The dashboard does not consume a NetSuite user license in the way a browser login does.
  • The display is not subject to the named-user idle session timeout the same way a logged-in UI session is, because there is no human waiting at a keyboard.
  • The display can poll Saved Searches at whatever cadence you configure.

To set up TBA for a display service, work through these tasks in order:

  1. Enable token-based authentication for the account under Setup > Company > Enable Features > SuiteCloud and turn on the SOAP/REST Web Services and Token-based Authentication features.
  2. Configure TBA roles at Setup > Users/Roles > Manage Roles, with exactly the permissions your display needs (typically read-only on records and Saved Searches).
  3. Create a service account user and assign that restricted role.
  4. Generate a Token ID and Token Secret from the user's record.

A display account should never hold permissions your dashboards do not need. If the TV only reads Saved Searches, the service user only needs read access to those records.

Wiring a Saved Search to a Firestick Display

A workable architecture has four layers, and each one is replaceable.

LayerRoleTypical Choice
Data sourcePulls rows from NetSuiteSuiteTalk REST Web Services or a Suitelet returning JSON
CacheEases NetSuite concurrencyA small Node service or serverless function
RendererBuilds the visualHTML/JS dashboard with charts
DisplayRuns the URL in kiosk modeAmazon Firestick with Fully Kiosk Browser or similar

The data source is the part most teams get wrong. Pointing a dashboard directly at the REST API and refreshing every 10 seconds will burn through SuiteCloud concurrency quickly if you have multiple TVs. A scheduled Suitelet that caches the last result, or a thin middle-tier service that polls every few minutes, keeps the load predictable.

A minimal Suitelet that returns JSON for a Saved Search looks like this:

/**
 * @NApiVersion 2.1
 * @NScriptType Suitelet
 */
define(['N/search', 'N/log'], (search, log) => {
    const onRequest = (context) => {
        const results = [];
        const srch = search.create({
            type: 'transaction',
            filters: [
                ['type', 'anyof', 'SalesOrd'],
                ['status', 'anyof', 'SalesOrd:A']
            ],
            columns: [
                'entity', 'amount', 'trandate'
            ]
        });
        srch.run().each((r) => {
            results.push({
                customer: r.getText('entity'),
                amount: r.getValue('amount'),
                date: r.getValue('trandate')
            });
            return true;
        });
        context.response.setHeader({
            name: 'Content-Type',
            value: 'application/json'
        });
        context.response.write(JSON.stringify({ rows: results }));
    };
    return { onRequest };
});

The Suitelet should be deployed with Available Without Logging In set to No, and access should be restricted to the service role only. Pair it with TBA on every call so the URL is not guessable, and surface the TBA tokens through a thin integration layer rather than embedding them in the dashboard HTML, as described in the NetSuite Connector guidance on integration records and field IDs.

Why a Firestick Beats a Purpose-Built Signage Box

The Firestick approach wins on three concrete points.

Procurement. A Firestick is a same-day Amazon purchase. No IT vendor, no capital request, no asset tag. If it dies, you replace it before lunch.

Setup time. With Fully Kiosk Browser installed in kiosk mode, the device boots into your dashboard URL, full-screen, with no chrome. You set the refresh interval in the URL or the middle-tier cache, not on the device.

Scaling. Adding a second, third, or tenth screen is buying another Firestick and entering the same URL. The NetSuite side does not change. The license count does not change.

Edge Cases That Bite First-Time Builds

A few things consistently trip up teams the first time they wire this together.

Saved search permissions. The service account must have access to every Saved Search you reference. If a search was created by a specific user and not shared, the service user gets a blank result rather than an error. Verify by running the search as that user at Lists > Search > Saved Searches. The NetSuite Connector reference on internal IDs and field IDs is also worth a read, because a renamed column on the UI can break a downstream field mapping without surfacing an error.

Time zones. A dashboard showing "Today's Orders" can display different totals depending on whether the Saved Search uses NetSuite's company time zone or the viewer's. Set the time zone explicitly on the search and on any date filters in the Suitelet to avoid the classic 4 PM ghost-shift problem.

SuiteCloud concurrency. Each open Firestick polling every minute against uncached REST endpoints counts against your concurrency limit. A 5-minute cache per dashboard is usually enough to keep you out of trouble, and the System Notes Guide is a good place to start when a slow refresh is hard to attribute to the dashboard versus the integration layer.

What to Verify Before Going Live

Before you mount the first TV, confirm three things in order. First, the service account's role permissions match exactly what the dashboard reads, and nothing more. Second, the dashboard refreshes correctly across the longest shift in your facility, not just the demo. Third, kill the Firestick's network for ten minutes, restore it, and confirm the dashboard auto-reconnects without someone unplugging and replugging the device.

A working setup is one Firestick, one TBA token, one Suitelet, and one Saved Search. If your team is spending more than an afternoon on the first deployment, the architecture is wrong. One more thing worth checking before you ship: if your integration predates OAuth 2.0, plan the migration now, since TBA is on the deprecation path for new integrations in NetSuite 2027.1 and you do not want to rebuild this on a deadline.

About the author

Put these ideas to work.

Suite Utils builds small NetSuite tools that fix the specific thing breaking your day. Each one runs as a native SuiteScript SuiteApp inside your account. No sales call, no onboarding.

Browse the Tools

Enjoyed this one?

Get NetSuite tips like this in your inbox. No spam. Practical guides only.

Keep reading