Most operations dashboards fail for the same reasons. The data is a day old by the time anyone looks at it. The metrics shown are the ones that were easy to pull, not the ones that drive decisions. The people who built it are not the people who use it. And nobody updates it when the business changes.

This post walks through how to build a manufacturing operations dashboard in Retool that your team will actually use: connected to live data sources, showing the four metrics that matter most, and maintainable without a developer on call.

Why Retool for a Manufacturing Operations Dashboard

Retool is a low-code platform for building internal applications. It connects directly to databases, APIs, and spreadsheets and gives you a drag-and-drop interface for assembling the UI. You do not need to write frontend code. The backend connections use standard SQL queries or REST API calls that any developer can write in an hour.

For a manufacturing ops team, the relevant capabilities are:

  • Direct database connections (PostgreSQL, MySQL, BigQuery, SQL Server)
  • REST API connections to your ERP or any system with an API
  • Google Sheets integration for teams whose source of truth is a spreadsheet
  • Role-based access control so different team members see different views
  • Ability to write back to data sources: update a record, approve a request, trigger a workflow

The last point matters. Most dashboards are read-only. Retool lets you build interfaces where the ops team can take action from the same screen they are looking at: approve a PO, flag a quality hold, trigger an n8n workflow.

What a Manufacturing Ops Dashboard Actually Needs

Before building anything, define what decisions the dashboard needs to support. The most useful manufacturing ops dashboards answer four questions:

1. What is running low and needs attention today?Inventory items approaching or below reorder point, with the items most at risk surfaced at the top.

2. What is open and overdue?Purchase orders past their expected delivery date, approvals that have been sitting for more than 24 hours, quality holds blocking production.

3. How is production tracking against plan?Today's output versus target by production line. Yield rates. Downtime events.

4. What does the next seven days look like?Scheduled orders, expected supplier deliveries, known capacity constraints.

If your dashboard answers these four questions with data that is no more than one hour old, it will replace the morning status meeting for most of your team.

Step-by-Step Build

This guide builds the dashboard against Google Sheets as the primary data source, which requires no ERP API access and can be set up by any ops team member. At the end, the section on connecting directly to your ERP covers how to swap the data source once you are ready.

Step 1: Set Up Your Data Sources in Retool

Create a new Retool application. In the left panel, go to Resources and add your first data source.

For Google Sheets:

  • Add a new resource, select Google Sheets
  • Authenticate with the Google account that owns the sheets
  • Retool will list all accessible spreadsheets

For a PostgreSQL or MySQL database:

  • Add a new resource, select your database type
  • Enter your host, port, database name, username, and password
  • Retool connects over your database's standard port. If your database is behind a firewall, Retool provides a static IP list for allowlisting.

For a REST API (your ERP):

  • Add a new resource, select REST API
  • Enter your ERP's base URL
  • Add your authentication headers (API key or Bearer token)

Plan for three sheets or tables: Inventory, Open POs, and Production Log. Column structure for each:

Inventory sheet:

SKU | Item Name | On Hand | Reorder Point | Safety Stock | Supplier | Lead Time (days)

Open POs sheet:

PO Number | Supplier | Item | Quantity | Expected Delivery | Status | Days Overdue

Production Log sheet:

Date | Line | Product | Target Units | Actual Units | Yield % | Downtime Minutes

Step 2: Build the Inventory Alert Panel

Add a Table component to your Retool canvas. Connect it to a query that pulls from your Inventory sheet or table.

Google Sheets query:

In the query editor, select your Google Sheets resource, choose your inventory spreadsheet, and select the inventory tab. Use a filter to show only items at or below their reorder point:

Filter: On Hand <= Reorder Point
Sort: On Hand ASC (so most critical items appear first)

Add a column transformer to calculate how many days of stock remain:

// Days remaining column
return currentRow["On Hand"] / currentRow["Avg Daily Usage"]

Color-code the rows: red for items already below safety stock, yellow for items below reorder point but above safety stock, green for items above reorder point.

In Retool, apply row color in the column settings using a conditional expression:

// Row color
if (currentRow["On Hand"] < currentRow["Safety Stock"]) return "red";
if (currentRow["On Hand"] < currentRow["Reorder Point"]) return "yellow";
return "green";

Add a Stat component above the table showing the count of red-status items. This gives the team the headline number at a glance.

Step 3: Build the Open PO Tracker

Add a second Table component. Connect it to your Open POs sheet with a filter for status not equal to "Received."

Add a calculated "Days Overdue" column:

const expected = new Date(currentRow["Expected Delivery"]);
const today = new Date();
const diff = Math.floor((today - expected) / (1000 * 60 * 60 * 24));
return diff > 0 ? diff : 0;

Sort descending by days overdue so the most delayed POs appear first. Add color coding: red for 5+ days overdue, yellow for 1-4 days overdue.

Add an optional button column that triggers an n8n webhook when clicked, firing a supplier follow-up notification workflow. The button calls an HTTP request in Retool pointing to your n8n webhook URL with the PO number and supplier details as the body.

Step 4: Build the Production Status Panel

Add a Chart component (Bar chart works well here). Connect it to today's rows in the Production Log, grouped by production line.

Configure the chart:

  • X-axis: Line name
  • Y-axis 1 (bars): Actual Units
  • Y-axis 2 (line overlay): Target Units

This gives an immediate visual of which lines are tracking to plan and which are behind.

Below the chart, add a Stat component for total plant output versus total plant target, and a second Stat showing plant-wide yield percentage.

Step 5: Add Role-Based Views

In Retool, use the Visibility settings on each component to show or hide panels based on the logged-in user's group.

  • Purchasing team: sees Inventory and Open PO panels by default
  • Production supervisors: sees Production Status and Inventory panels by default
  • COO/VP Ops: sees all four panels with a summary stat row at the top

Set this using the {{ current_user.groups }} variable in Retool's visibility conditional fields.

Step 6: Set Up Auto-Refresh

In each query, enable Polling and set the interval. For a live ops dashboard:

  • Inventory: refresh every 15 minutes
  • Open POs: refresh every 30 minutes
  • Production Log: refresh every 5 minutes if your shop floor system writes frequently, or on manual trigger if data is entered at shift end

For teams using Google Sheets as their source, 15-minute polling is usually fast enough and stays within Google's API rate limits for normal use.

Connecting Directly to Your ERP

Once the Google Sheets version is working and your team is using it, replacing the data source with a direct ERP connection gives you real-time data without anyone maintaining the spreadsheet.

The approach depends on your ERP:

NetSuite: Use SuiteQL queries via the NetSuite REST API. In Retool, add a REST API resource pointing to your NetSuite account URL. Use Token-Based Authentication (TBA) with your consumer key, consumer secret, token ID, and token secret. Retool queries the SuiteQL endpoint with a SQL-like query returning inventory, PO, or production data.

Acumatica: Acumatica's REST API exposes standard endpoints for inventory items, purchase orders, and production orders. Add it as a REST API resource in Retool with your Acumatica instance URL and OAuth credentials.

Microsoft Dynamics 365 Business Central: Use the Business Central OData API. The endpoint structure is https://api.businesscentral.dynamics.com/v2.0/{tenant}/{environment}/api/v2.0/. Authenticate with an Azure AD App Registration and use Bearer token authentication in Retool.

For any ERP connection, use your n8n instance as a data relay if direct API access is restricted. An n8n workflow polls the ERP on a schedule, writes the result to a database table or Google Sheet, and Retool reads from that table. This is slower than a direct connection but works for ERPs without accessible APIs or in environments where database access is tightly controlled.

What to Build After the Dashboard

A dashboard shows you what is happening. The natural next step is to trigger action from it.

From the inventory panel: a "Create Reorder" button that calls an n8n webhook, which creates a draft PO in the ERP and posts a Slack notification to the purchasing team for review.

From the Open PO tracker: a "Send Follow-Up" button that calls an n8n workflow sending a supplier notification email with the PO details.

From the production panel: a threshold-based alert that fires when actual output falls more than 15% below target mid-shift, notifying the production supervisor before end of day.

These are small additions to the dashboard but they close the loop between observation and action, which is where most ops dashboards stop short.

The Flow Kaizen guide covers how to sequence the automation workflows that connect to your ops dashboard, including which integrations to build first and how to prioritize across your operation.