Guides

How to Build an Internal Dashboard with Retool

Arkzero ResearchMar 28, 20268 min read

Last updated Mar 28, 2026

Retool is a low-code platform for building internal dashboards by connecting databases, APIs, and spreadsheets to drag-and-drop UI components. You create a data source connection, write a SQL or structured query, and bind the results to tables, charts, or KPI cards. Teams at operations-heavy companies use it to ship functional data apps without custom code. This guide walks through the full setup from data connection to publishing.
Retool internal dashboard interface with data visualizations

Retool lets you build a functional internal dashboard in a few hours by connecting a data source, writing a query, and binding results to visual components. This guide covers the full process, from account setup to sharing with your team, with specific steps for connecting Google Sheets and PostgreSQL.

What Retool Is and Why Teams Use It

Retool is a low-code platform for building internal tools and dashboards. It connects to databases, APIs, and cloud services, and lets operations and analytics teams build functional data apps without writing full application code.

The core workflow involves three things: connecting a data source, writing a query to pull records, and binding the query output to a UI component like a table or chart. Once you understand that pattern, most standard dashboards can be built in an afternoon.

According to Retool's internal data, over 4,000 companies use the platform to build internal tools. Common use cases include support ticket trackers, inventory dashboards, CRM interfaces, and revenue reporting apps. The free tier supports up to five apps and five users, which covers most small teams getting started.

What You Need Before You Start

You need a Retool account and access to a data source. Common choices include:

  • A PostgreSQL or MySQL database
  • A REST API
  • Google Sheets
  • RetoolDB, Retool's built-in hosted PostgreSQL instance, which is useful for prototyping before connecting production data

For this guide, the steps use Google Sheets as the primary data source since it requires no database credentials and is familiar to most operations teams. A second example using PostgreSQL is included where the setup differs.

Step 1: Connect Your Data Source

After logging in, navigate to Resources in the left sidebar, then click Create new. Select Google Sheets from the connector list.

You will be prompted to authenticate with your Google account and grant Retool read access to your Sheets. Once authenticated, give the resource a name such as "Sales Data" or "Ops Tracker" and save it.

If you are connecting to a PostgreSQL database instead, select PostgreSQL from the list and enter your host, port (usually 5432), database name, username, and password. Click Test connection before saving to confirm Retool can reach your database.

One important detail: if your database is on a private network or behind a firewall, you need to whitelist Retool's IP addresses. Retool publishes a current list of IP ranges in its documentation under Settings and then Security. Skipping this step is the most common reason new PostgreSQL connections fail.

Step 2: Write Your First Query

Once your data source is connected, open an existing app or create a new one. In the query panel at the bottom of the screen, click New query and select your data source.

For Google Sheets, Retool offers a structured query interface. You select the spreadsheet, choose the sheet tab, and specify which columns to return. You can filter rows by column value, which is equivalent to a SQL WHERE clause.

For SQL databases, you write standard SQL directly. A query to fetch open support tickets looks like this:

SELECT id, customer_name, status, created_at
FROM tickets
WHERE status = 'open'
ORDER BY created_at DESC
LIMIT 100;

After writing the query, click Run to confirm it returns data. Retool displays the results in a preview table below the query editor. If the query runs but returns zero rows, check that the table name and column names match your actual schema.

Step 3: Add Components to the Canvas

Retool's canvas is a drag-and-drop editor. The right panel contains a component library with tables, charts, text inputs, buttons, date pickers, and more.

To display your query results in a table, drag a Table component onto the canvas. By default it renders placeholder data. To bind it to your query, click the table to open its properties panel, find the Data field, and enter:

{{ query1.data }}

Replace query1 with the name you gave your query. The table will immediately populate with your results.

For a KPI card showing a single number like total revenue or open ticket count, drag a Statistic component onto the canvas. Bind it to an aggregation using a JavaScript expression:

{{ query1.data.length }}

That expression displays the row count. For a sum of a numeric column, use:

{{ query1.data.reduce((sum, row) => sum + row.amount, 0) }}

Step 4: Add a Chart

Charts in Retool are configured through a properties panel rather than chart library code. Drag a Chart component onto the canvas, select it, and set the following in the properties panel:

  • Data source: {{ query1.data }}
  • X axis: the column name for your category or date field
  • Y axis: the column name for your numeric value
  • Chart type: Bar, Line, or Pie

Retool uses Plotly under the hood, which means most standard chart types are available. The configuration stays visual, so no JavaScript is required unless you need custom chart behavior.

According to Retool's 2025 State of Internal Tools report, the most commonly built chart types are bar charts (42%), line charts (31%), and tables with inline charts (18%). Covering these three formats handles the majority of business dashboard use cases.

Step 5: Add Filters and Interactivity

Static dashboards lose usefulness quickly. Adding a date range filter or a status dropdown changes a dashboard from a daily screenshot into a functional interactive tool.

Drag a Select component onto the canvas. In its properties, set the label to something like "Status" and the Values field to a list such as:

["open", "closed", "pending"]

To make the filter drive your query, modify the query's WHERE clause to reference the component's value:

SELECT id, customer_name, status, created_at
FROM tickets
WHERE status = {{ select1.value }}
ORDER BY created_at DESC;

Retool re-runs the query automatically each time the selected value changes. For a date range filter, drag a Date Range component onto the canvas and reference its values in the query:

SELECT *
FROM orders
WHERE created_at BETWEEN {{ dateRange1.start }} AND {{ dateRange1.end }};

You can also add a manual Refresh button by dragging a Button component and setting its onClick handler to {{ query1.trigger() }}.

Step 6: Publish and Share with Your Team

When your dashboard is ready, click Share in the top right. Retool generates a link you can share with anyone in your workspace. Access is controlled by assigning users to groups with specific permissions: view only, edit, or admin.

For external stakeholders without Retool accounts, you can enable public link sharing. This works well for read-only dashboards like a weekly metrics report distributed to leadership.

If your organization uses SSO through Google, Okta, or SAML providers, Retool supports SSO configuration through Settings and then Authentication. SSO is available on paid plans.

Common Issues and How to Fix Them

Query returns no data: Check that your data source connection is still authenticated. Google Sheets tokens expire if unused for an extended period. Re-authenticate through Resources, then Edit, then Reconnect Google account.

Components show stale data: By default, Retool queries run on page load. If your underlying data updates frequently, enable Polling in the query settings to auto-refresh every 30 or 60 seconds.

Filters do not update the chart: Make sure the query is set to run automatically rather than manually. In the query settings, toggle Trigger automatically on. This ensures queries re-run whenever referenced component values change.

Performance issues with large datasets: If your SQL query returns thousands of rows, add pagination to the table component or add a default date filter limiting results to the last 30 days. Let users extend the range when needed.

When a Simpler Tool Works Better

Retool makes sense when you need a persistent internal app that multiple people use over time. For one-off analysis, such as exploring an uploaded file, running a statistical summary, or producing a quick chart to answer a specific question, the connection and setup overhead may not be worth it. If you need to ask plain-language questions about a dataset without configuring a database connection, VSLZ AI handles that from a direct file upload with no setup required.

Next Steps

Once your first dashboard is live, the next areas worth exploring are Retool Workflows for scheduled automations, custom JavaScript components for extending beyond built-in UI options, and Retool Mobile for building companion apps on iOS and Android.

Retool's documentation includes a Tutorials section with guides for building an admin panel, a support queue, and a CRM, each of which teaches component and query patterns that transfer directly to your own projects.

FAQ

Is Retool free to use?

Retool offers a free plan that supports up to five apps and five users. The free plan includes core features like database connections, REST API integration, and drag-and-drop components. Paid plans start at $10 per user per month and add features like SSO, audit logs, and staging environments.

What data sources can you connect to Retool?

Retool supports over 100 data sources including PostgreSQL, MySQL, MongoDB, REST APIs, GraphQL, Google Sheets, Airtable, Salesforce, Stripe, and more. You can also connect to any database or API that supports standard protocols. Connection is configured through the Resources panel in the Retool interface.

Do you need to know how to code to use Retool?

Basic Retool dashboards can be built without writing code, using the drag-and-drop canvas and structured query builders for sources like Google Sheets. SQL knowledge helps when connecting to relational databases, and JavaScript is needed for more advanced logic like custom aggregations or conditional formatting. Most operations and analyst teams can build functional dashboards with basic SQL.

How do you make a Retool dashboard update automatically?

In the query settings panel, enable the Polling option and set an interval such as 30 or 60 seconds. This makes the query re-run on that schedule and updates any components bound to it. Alternatively, you can add a Refresh button that triggers the query manually by setting the button's onClick handler to query1.trigger().

What is the difference between Retool and Tableau or Looker?

Retool is designed for building interactive internal tools and CRUD applications, not just read-only reports. It supports writing data back to databases, creating forms, and building operational workflows. Tableau and Looker are primarily read-only analytics and visualization platforms focused on exploring and presenting data. Teams often use both: Looker or Tableau for analytics and Retool for operational dashboards that require user input.

Related