Skip to content
NetSuite reporting

NetSuite dashboard best practices that survive Monday

NetSuite dashboard best practices from real cleanups: portlet budgets, KPI selection, refresh and caching reality, and publishing dashboards by role.

ERPray teamUpdated 7 min read
Short answer

Good NetSuite dashboards are built per role, not per person: pick six to eight portlets that answer a question that role can act on, publish the dashboard to the role with the layout locked, and put slow saved searches behind a report link instead of a portlet. Most KPI values are cached, so treat them as this morning's number, not this second's.

Key takeaways

  • A dashboard is a property of a role, not a person. Design six to eight of them for your roles and stop building one per employee.
  • Every search-driven portlet runs its query while the user waits. Fifteen portlets is not a richer dashboard, it is a slower login.
  • KPI and snapshot portlets serve stored values. They are correct as of their last refresh, which is not the same as correct now.
  • A KPI earns its place only if the person looking at it can do something differently today. Everything else belongs in the monthly pack.
  • Two people can see different numbers in the same published portlet, because role permissions and subsidiary restrictions filter the underlying search.

Most NetSuite dashboards fail the same way. Somebody spends a good afternoon on one, it looks impressive on Friday, and by the following Wednesday nobody reads it. The reason is rarely the portlets. It is that the dashboard was designed as a display of available data rather than as a page a specific role opens with a specific decision to make. These NetSuite dashboard best practices come from cleaning up that pattern in accounts where the home page had grown to eighteen portlets and a nine-second load.

What a NetSuite dashboard actually costs to render

A dashboard belongs to a role and a centre. Each portlet is an independent piece of work that has to complete before the page is usable. That is the whole performance model, and once you hold it in your head the design rules follow.

Portlet typeGood forWhat it costs
Key Performance IndicatorsA compact block of headline numbers with period comparisonEach KPI is a computation, and each comparison range is another. Values are served from cache and refreshed on demand or on a cycle.
KPI MeterOne number against a target, read at a glanceCheap. One KPI, one gauge. The discipline is choosing which single number deserves it.
KPI ScorecardA grid of KPIs across periods, with formula rowsThe most expensive analytical portlet on most home pages. Excellent for a monthly review, poor as an always-on widget.
Custom SearchA working list you act on: overdue invoices, orders on holdRuns the saved search on page load. Joins and formula columns are paid for every time anyone opens the page.
Report Snapshot / Trend GraphShape over time — is this getting better or worseModerate, and cached. Good value per pixel; weak for exact figures.
RemindersCount-driven nudges: 12 approvals waitingEach custom reminder is a saved-search count. Ten custom reminders is ten queries before the page paints.
Analytics / workbook portletReusing a workbook you already trustDepends entirely on the workbook. Test it standalone before pinning it.
Shortcuts, Recent Records, Quick FindNavigationEffectively free. Underrated — they remove more clicks per day than most charts.
Search-driven portlets are current but slow. Cached portlets are fast but stale. Pick deliberately per portlet.

Set a portlet budget and defend it

Whatever the technical cap in your account, the useful cap is lower than people expect. Six to eight portlets is where dashboards stay readable. Beyond that, two things happen: the page gets slow enough that users navigate around it, and the important number stops being visually distinguishable from the interesting one.

6–8
Portlets per dashboard, target
1
Portlets above the fold that carry a decision
< 3s
Load budget before people route around the page

The test for each portlet is blunt: if this number moved 20% overnight, would the person looking at this page do something different today? If the answer is no, it is reporting, not a dashboard, and it belongs in a scheduled report or a monthly pack.

Choose KPIs the role can act on

The most common KPI mistake is picking numbers that are important rather than numbers that are actionable. Revenue year-to-date is important. Nobody changes their Tuesday because of it. Overdue value in the 61–90 bucket, by contrast, has a named owner and a next action.

Weak dashboard KPIWhy it failsStronger version
Revenue YTDMoves slowly, no action attached, everyone already knows itRevenue versus plan for the current month, with days remaining
Total AR balanceGrows with sales, so a rise can be good newsOverdue value beyond terms, and value in the oldest bucket
Number of open sales ordersCount says nothing about value or ageValue of orders past their promised ship date
Inventory valueA balance, not a decisionItems below reorder point with no open PO
Average days to close a caseLagging, and averaged across everythingCases open more than five days with no update
Every strong version has a threshold in it. A threshold is what turns a number into a queue of work.

Pair each KPI with the drill-through it deserves. A KPI whose number you cannot click into is a rumour. In practice this means the underlying saved search should be usable as a list on its own — sorted by value, with the owner as a column — which is exactly the same search you would build for an AR aging report. One search, two homes.

Build the dashboard for the role, not the individual

Because dashboards attach to roles, the maintainable pattern is to design one dashboard per role, set it up in a test account or under a spare login, then publish it to the role. Publishing pushes the layout to everyone holding that role, and portlets can be locked so users cannot remove them. That gives you a floor of consistency while still allowing people to add their own shortcuts around it.

RoleThe question the dashboard answersPortlet mix
CollectionsWho do I call before lunchOverdue value KPI meter, aged list by value, unapplied cash reminder, promised-payment list
ControllerIs anything going to surprise me at closeClose checklist reminders, subledger-to-GL variance search, trend graph of margin, budget-versus-actual snapshot
PurchasingWhat is late and what is about to bePOs past expected receipt date, items below reorder point, PPV trend, vendor on-time meter
Sales managerWhere is the quarter goingPipeline by stage, orders on credit hold, revenue versus quota scorecard
Warehouse supervisorWhat ships todayOrders to pick by ship date, short-pick exceptions, fill rate meter
Five dashboards, each answering one sentence. That is a complete NetSuite dashboard strategy for most mid-market accounts.
Free calculator
Reporting time savings calculator

Dashboards are usually justified on time saved. Put a number on the hours currently going into manual report assembly before you promise a saving.

Refresh: what live actually means

This is the practice that prevents most credibility damage. Different portlet types have different freshness behaviour, and users assume all of them are live.

  • Search-driven portlets run their query when the page loads, so what you see reflects the data at that moment. That freshness is exactly why they are the slow ones.
  • KPI, meter and snapshot portlets serve stored results and recompute on refresh or on a cycle. The refresh control exists precisely because the value is not recomputed on every page view.
  • Anything derived from a period-dependent calculation is only as current as the underlying process. Inventory costing, revenue recognition and consolidated rates settle during close, so a margin KPI on the third working day of the month is showing an incomplete prior month.
  • Date ranges are relative to the user's time zone preference. Today is not the same instant for a user in Sydney and a user in Chicago, which produces two different daily-sales figures that are both right.

The same portlet, two different numbers

A published portlet runs its search in the context of whoever is looking at it. Role permissions filter the records they can see, and in a OneWorld account subsidiary restrictions filter further. So the regional controller and the group controller open identical dashboards and read different revenue figures, both correct for their scope. This is the same mechanism described in consolidated multi-subsidiary reporting, and it is a feature until somebody quotes a dashboard number in a meeting without saying which login produced it.

Two habits fix it. Put the scope in the portlet title where it is not obvious. And for any figure that will be quoted outside the team, agree that the dashboard is the trigger and the report is the source.

A 20-minute dashboard audit

Run this on your worst-performing role before you build anything new. It typically removes a third of the portlets and half the load time.

  1. 1.Open the dashboard, time the load with a stopwatch, and write the number down. You need a baseline or you will argue about feelings.
  2. 2.Count the portlets. Anything above eight is a candidate for removal before you even look at what it does.
  3. 3.For each portlet ask what decision it drives and who makes it. No answer, no portlet.
  4. 4.Count custom reminders. Cut to three, keeping the ones that represent work someone will do today.
  5. 5.Open every underlying saved search and check for formula columns, multi-level joins and unbounded date ranges. Add a date filter to anything scanning all history.
  6. 6.Move anything analytical — scorecards, wide comparisons, anything reviewed monthly — to a scheduled report or a saved report link.
  7. 7.Rename every remaining portlet so the title states the metric, the scope and the freshness.
  8. 8.Publish to the role with the core portlets locked, then re-time the load and compare against your baseline.

Where dashboards stop being the right tool

Dashboards answer questions you knew you would have. They are poor at the question you have right now, once, at 4pm, in a slightly different cut than any existing portlet. That is what forces the export to a spreadsheet, and it is why the second-most common object in a NetSuite account is a saved search built for one meeting and never deleted. The ceilings on saved searches are what most dashboards eventually run into.

Track the metrics that belong on a dashboard as trends, not as one-off calculations — a monthly DSO figure is worth a trend graph, and if you want to sanity-check the arithmetic behind the portlet the DSO calculator and the inventory turnover calculator will do it in a browser tab without touching your saved searches.

For the ad-hoc half of the job, takes the question in plain English — which customers moved from the 30-day bucket to the 60-day bucket this month? — and computes it live against your own account, showing the SuiteQL underneath, so you get the answer without adding a ninth portlet that only one person ever needed.

Frequently asked questions

How many portlets should a NetSuite dashboard have?

Aim for six to eight. Each search-driven portlet runs its query before the page becomes usable, so portlet count is the main driver of dashboard load time. Beyond eight, users stop distinguishing the important number from the merely interesting one and start navigating around the page instead of reading it.

Why is my NetSuite dashboard so slow?

Usually the Reminders portlet and heavy saved searches. Every custom reminder is a saved-search count executed on page load, and every custom search portlet runs its query while the user waits. Searches with formula columns, multi-level joins or no date filter are the expensive ones. Cut reminders to three and add date bounds to every search.

How do I push the same dashboard to everyone in a role?

Set the dashboard up while logged in with that role, then publish it to the role. Publishing applies the layout to everyone holding the role, and portlets can be locked so users cannot remove them. Users can still add their own shortcuts around the locked core, which is usually the right balance.

Are NetSuite KPI portlets real time?

No. KPI, meter and snapshot portlets serve stored values and recompute on refresh or on a cycle, which is why they have a refresh control. Custom search portlets do run their query on page load and are current. Label each portlet with its freshness so nobody compares a cached KPI against a freshly run report and assumes a bug.

Why do two users see different numbers in the same portlet?

The portlet's search runs in the viewer's context. Role permissions restrict which records they can see, and in OneWorld accounts subsidiary restrictions restrict further. A regional role and a group role therefore read different revenue from an identical portlet, and both figures are correct for their scope. Put the scope in the portlet title.

What KPIs should a controller have on their NetSuite dashboard?

Ones with a threshold and an owner: overdue receivable value beyond terms, subledger-to-GL variances, budget versus actual for the current month, and a margin trend. Balances that move with sales, like total AR or inventory value, look important but rarely change what anyone does that day. Keep those in the monthly pack.

Your ERP already knows. Start asking.

ERPray computes answers like these live from your own ERP account and shows the exact query behind every number. Early access is open for NetSuite teams — free plan at launch.