A dashboard is one of the most useful FileMaker modernization projects because it often uses existing data.
The challenge is not usually whether the data is available. The challenge is organizing that data into a view that helps people make decisions.
In this guide, we will walk through a practical approach to building an operational dashboard in FileMaker. The example is a manufacturing dashboard, but the same pattern can apply to service teams, sales operations, project management, inventory, fulfillment, or internal administration.
What We Are Building
The goal is to create a dashboard that helps a team quickly answer questions like:
- Which jobs are behind schedule?
- Which materials are causing production delays?
- Which orders are at risk of missing delivery dates?
- Which quality issues need attention?
- How much work is moving through each department?
This should not be just a screen full of charts. A useful dashboard should help users decide what to do next.
Step 1: Define the Decisions First
Before creating fields, charts, or layouts, define the business decisions the dashboard should support.
For example:
- What needs attention today?
- Which jobs are at risk?
- Which department is falling behind?
- Which orders may affect customers?
- What should a manager review first?
This matters because a dashboard can easily become cluttered. If a metric does not help someone make a decision, it may not belong on the first version.
For a first version, choose three to five high-value metrics.
Example:
- Late Jobs
- At-Risk Orders
- Open Quality Issues
- Material Shortages
- Throughput This Week
Step 2: Identify the Source Tables
Next, map each metric to the FileMaker tables and fields that already contain the data.
A manufacturing dashboard might involve tables like:
Jobs table:
- __pkJobID
- JobNumber
- CustomerID
- DepartmentID
- Status
- Priority
- StartDate
- TargetShipDate
- CompletedDate
- QtyRequired
- QtyCompleted
Orders table:
- __pkOrderID
- OrderNumber
- CustomerID
- PromiseDate
- Status
Materials table:
- __pkMaterialID
- PartNumber
- MaterialName
- QtyOnHand
- QtyCommitted
- ReorderPoint
JobMaterials table:
- __pkJobMaterialID
- JobID
- MaterialID
- QtyRequired
- QtyIssued
QualityIssues table:
- __pkQualityIssueID
- JobID
- Severity
- Status
- CreatedDate
- ResolvedDate
ProductionLog table:
- __pkProductionLogID
- JobID
- DepartmentID
- WorkDate
- CompletedQty
- LaborHours
You may not need all of these tables for the first version. Start with the data required to answer the most important questions.
Step 3: Add Useful Calculation Fields
Some dashboard logic can be handled with calculation fields in the source tables.
For example, in the Jobs table:
cIsLate
Returns true when the job is not complete and the target ship date is before today.
Plain-English logic:
Status is not “Complete”
and TargetShipDate is before today
cDaysLate
Returns the number of days between today and the target ship date.
Plain-English logic:
Today – TargetShipDate
cIsAtRisk
Returns true when the job is not late yet, but is close to the target date and still incomplete.
Plain-English logic:
Status is not “Complete”
and TargetShipDate is within the next few days
and QtyCompleted is less than QtyRequired
In the JobMaterials table, you may create:
cShortQty
Plain-English logic:
QtyRequired – QtyIssued
Depending on your data model, you may also need to account for available inventory, committed inventory, or material already allocated to other jobs.
The point is not to overbuild calculations. The point is to make dashboard logic easier to reuse and easier to understand.
Step 4: Decide Between Live Reporting and a Dashboard Cache
There are two common ways to build a FileMaker dashboard.
Option 1: Live reporting from source tables
This approach uses found sets, portals, summary fields, subsummary reports, and charts directly against live data.
This can work well when:
- The dashboard is simple
- The data volume is manageable
- Metrics come from one primary table
- Users need real-time visibility
- Performance is acceptable
Option 2: A dashboard cache table
This approach uses scripts to calculate dashboard metrics and write them into dedicated dashboard tables.
This can work better when:
- Metrics come from multiple tables
- The dashboard needs several unrelated KPIs
- Performance matters
- Users need consistent snapshots
- You want cleaner drilldowns and alert lists
For many operational dashboards, the cache-table approach is easier to maintain.
Step 5: Create Dashboard Tables
A simple dashboard cache structure might include two tables: one for metric cards and one for detail rows.
DashboardMetrics table:
- __pkMetricID
- MetricKey
- MetricLabel
- MetricGroup
- MetricValueNumber
- MetricValueText
- AlertLevel
- SortOrder
- RefreshTimestamp
- DrilldownScriptName
- DrilldownParamJSON
DashboardRows table:
- __pkDashboardRowID
- RowType
- SourceTable
- SourceRecordID
- DisplayTitle
- DisplayDetail
- DepartmentID
- DueDate
- Priority
- AlertLevel
- SortOrder
- RefreshTimestamp
If multiple users will refresh dashboards at the same time, consider adding a snapshot table.
DashboardSnapshots table:
- __pkSnapshotID
- AccountName
- DepartmentFilter
- DateStart
- DateEnd
- CreatedAt
Then relate each DashboardMetric and DashboardRow to a specific snapshot.
That prevents one user’s dashboard refresh from clearing or changing another user’s dashboard results.
Step 6: Write a Refresh Script
Create a script called something like:
Dashboard | Refresh Operations
The script should:
- Capture the user’s filters
- Create or update a dashboard snapshot
- Clear old dashboard rows for that snapshot
- Calculate each metric
- Create metric records
- Create detail row records
- Commit the dashboard records
- Navigate the user back to the dashboard layout
For example, the script might calculate:
- Count of late jobs
- Count of orders at risk
- Count of open quality issues
- Count of material shortages
- Total completed quantity this week
There are several ways to calculate these values.
You can use:
- Finds and found counts
- Summary fields
- ExecuteSQL
- Relationships
- Utility scripts
- Stored reporting tables
The best method depends on the file, data volume, and performance needs.
For a small dashboard, FileMaker finds and summary fields may be enough. For a more complex dashboard, a scripted cache can be easier to control.
Step 7: Build the Dashboard Layout
Create a dedicated dashboard layout.
A useful layout might include:
- Filter controls at the top
- Metric cards across the top
- A list of records needing attention
- One or two charts
- Drilldown buttons
- Last refreshed timestamp
Example metric cards:
- Late Jobs: 12
- At-Risk Orders: 7
- Open Quality Issues: 4
- Material Shortages: 9
- Units Completed This Week: 1,240
Each card should be clickable when possible. If a user clicks “Late Jobs,” the system should show the relevant jobs, not just the number.
That is what turns a dashboard from a display into a working tool.
Step 8: Add Drilldowns
A dashboard should help users move from summary to action.
Each DashboardRow can store:
- The source table
- The source record ID
- The row type
- A drilldown parameter
- An alert level
Then create a script called:
Dashboard | Open Selected Row
That script can inspect the row type and source record ID, then take the user to the correct layout and record.
For example:
- Late Job row opens the job record
- Quality Issue row opens the issue record
- Material Shortage row opens the material or job material record
- At-Risk Order row opens the order record
This makes the dashboard immediately useful.
Step 9: Use Conditional Formatting Carefully
Conditional formatting can help users identify what matters quickly.
For example:
- Red for late or critical items
- Yellow for warning items
- Green for healthy items
- Gray for informational items
Use this sparingly. If everything is highlighted, nothing stands out.
The goal is to make the next action obvious.
Step 10: Handle Permissions
Dashboards should respect FileMaker security.
Before building the dashboard, decide who should see what.
For example:
- Executives may see all departments
- Department managers may see only their department
- Front-line users may see only assigned jobs
- Accounting may see invoicing-related statuses only
If the source data is restricted, the dashboard should not accidentally expose it through summary records.
This is especially important if using a dashboard cache table. The cache should not store sensitive details that the user would not otherwise be allowed to view.
Step 11: Decide How Often It Should Refresh
Not every dashboard needs to update every second.
For some teams, refreshing when the layout opens is enough. For others, a refresh button may be better. Some dashboards may need a scheduled server-side refresh every 15 minutes, hourly, or overnight.
Ask what the dashboard is used for.
If it supports real-time production decisions, it may need frequent refreshes. If it supports daily management review, refreshing once in the morning may be enough.
Avoid unnecessary refreshes that slow down the system.
Step 12: Start Small
The first dashboard should not try to answer every question.
Start with a focused version:
- Five metric cards
- One exception list
- One chart
- Three drilldowns
- One refresh script
Then watch how people use it.
Do they click into late jobs? Do they care about throughput by department? Are the alert thresholds right? Are there metrics nobody uses?
A dashboard should evolve based on decisions, not decoration.
Final Thoughts
A practical FileMaker dashboard does not have to be complicated.
Start with the business questions. Map those questions to existing data. Add simple calculations where needed. Decide whether live reporting or a dashboard cache makes more sense. Build a focused layout with metric cards, exception lists, charts, and drilldowns.
The best dashboards help people act.
For many FileMaker systems, the data is already there. The opportunity is to make that data easier to see, understand, and use.