Available exports
Every export in the product: where it lives, what format, and what it contains.
Seven surfaces download data. Three reports offer both CSV and PDF, four tables offer CSV only, and everything else in IoTFlows is read on screen. Every export sends the rows the surface is currently showing, so the filters you set are the filters you get.
Exports by surface
| Surface | Format | Respects filters | Column reference | Page |
|---|---|---|---|---|
Downtimes report, /assets?select=downtimes | CSV, PDF | Yes | Downtimes CSV | Analyze downtime |
Advanced Report, /assets?select=advanced_report | CSV, PDF | Yes | Advanced Report CSV | Build a utilization report |
Historical production, /production?select=historical_report | CSV, PDF | Yes | Historical production CSV | Compare production over weeks and months |
Operator Performance, /assets?select=operator_performance | CSV | Yes | Operator report CSV | Measure operator work sessions |
Production Insights, /production?select=insights | CSV | Yes | Production Insights CSV | Analyze cost and on-time performance |
Maintenance board, Table view, /maintenance | CSV | Yes | Work order fields | Organize work on the maintenance board |
Scheduler board, Table and Gantt, /production?select=scheduler | CSV | Yes | Job and scheduler fields | Plan jobs on the scheduler board |
The three reports put their downloads in one place. Open Actions at the right of the filter bar and pick Download as PDF or Download as CSV, under the Report actions heading. The same menu carries Share and Schedule.
The four tables each carry their own control:
- Operator Performance: a CSV button on the toolbar, next to the date range. It is disabled while the report is empty.
- Production Insights: an Export CSV button at the right of the All operations table. With Group set to None it downloads immediately. With Group set to Job or Asset it opens a menu offering Operation rows, Totals by job or Totals by asset, and Rows + totals.
- Maintenance and Scheduler: a CSV button on the filter bar, rendered only on the Table view. The scheduler repeats it as a download icon on the Gantt toolbar, so you do not have to leave the board to get the file.
Choose CSV or PDF
Use CSV when the number is going into a spreadsheet, and PDF when it is going into a meeting.
The PDF is rendered on the server from the URL you are on, so it carries the filters and switches you had on screen and it looks like the page: the same charts, the same order. The CSV carries the rows, and nothing else.
You do not need either one to get a report to someone who does not log in. Share emails the same view to a colleague now, and Schedule emails it on a cadence, see Emailed and scheduled reports.
CSV column references
Downtimes CSV
Downloads as Downtime Classification Data.csv. One row per stop, covering every row the filters match rather than the 25 on the visible page. The header is the raw field names.
| Column | Holds |
|---|---|
asset_identifier | The machine's identifier, or its UUID if it has none |
asset_name | The machine's name |
utilization_start_timestamp | When the stop began |
utilization_end_timestamp | When the stop ended |
downtime_duration | The stop's length, formatted for reading |
downtime_duration_seconds | The same length in seconds |
downtime_category_name | The reason on the stop, empty when the stop is unclassified |
utilization_downtime_note | The note an operator left on the stop |
Sort on downtime_duration_seconds, not on downtime_duration. The formatted column is text, so a spreadsheet puts 9m 12s above 1h 4m.
Advanced Report CSV
Downloads as Utilization_Report_2026-08-01_to_2026-08-31.csv. The file opens with a title block, then a blank line, then the table.
The title block records what produced the numbers: the report title and date range, the generation date and your organization timezone, the shifts selected, and one line for each switch that was on, reading Excluding Unknown from OEE, Excluding None from OEE or Showing only uptime. Skip those rows when you import the file, or the spreadsheet reads the title as the header.
A report built with Shift islands on adds one more line, Shift islands: on (an overnight shift is counted on the day it began). It follows the same rule as the switches: the line appears only when the setting is on, and its absence means the shift was split at midnight. Read it before you compare two exports of the same night shift, because that one line is what separates them, see Shift islands.
One row per machine per interval, with these 12 columns: Department Name, Asset Name, Asset Identifier, Period, Category, Uptime Hours, Downtime Hours, Unknown Hours, Uptime Percentage, Downtime Percentage, Unknown Percentage, Tags. Period is the interval's start and Category is its label, so a monthly report at a daily interval writes 31 rows per machine. Multiple tags arrive in one cell, comma separated.
Each figure is defined once in How each metric is calculated.
Historical production CSV
Downloads as Production_Historical_Report.csv. The name carries no date, so rename the file before you file it or you will not know which window it covers.
One row per operation per machine per interval, with these 11 columns: Timestamp, categories, part_name, operation_name, operation_description, asset_identifier, asset_name, total_operation_good_count, total_operation_scrap_count, asset_good_count, asset_scrap_count.
Timestamp is the interval's start and categories is its label. The two total_operation_* columns are the operation's counts across every machine that ran it, repeated on each machine's row, and the two asset_* columns are that one machine's share.
Columns not lining up? This file is written without quoting, unlike every other export here. A part name, operation name or description containing a comma splits into two cells and shifts the rest of that row left.
Every data row also ends with a trailing comma, so spreadsheets show one empty column at the right. Remove commas from the names you care about, or check the row widths after importing.
Operator report CSV
Downloads as operators_report_Aug 1, 2026_to_Aug 31, 2026.csv. One row per clocked session, per operator and machine. An operator and machine pair with no sessions in the window still gets a row, with N/A in the clock columns.
| Column | Holds |
|---|---|
Username | The operator's IoTFlows handle |
User First Name, User Last Name, User Email | The operator's profile fields |
Asset Name, Asset Identifier | The machine worked during the session |
Department Name | The machine's department |
Clocked Category | The label the report gives this session |
Clocked Runtime Hours, Clocked Downtime Hours | The machine's uptime and downtime during the session |
Clocked Runtime Percentage, Clocked Downtime Percentage | The same two as a share of the session |
Clock Start, Clock End | When the operator clocked in and out |
Hours columns missing from the file? The header is taken from the first row of the report. If that row is an operator and machine pair with no sessions, the file comes out in the shorter ten-column form, without the four Clocked hour and percentage columns, and the name and email cells are blank on every row below. Filter the report to operators who worked in the window, then download again.
Production Insights CSV
Downloads as production-insights-operations-2026-09-19.csv, or production-insights-operations-job-totals-2026-09-19.csv for a totals-only export. Either file holds every row the table's search, status and hide-zero filters match, in the sort order the table is in, not just the visible page.
There are two layouts, and one control that writes them:
- Operation rows, 17 columns:
Job,Operation,Part,Asset,Asset ID,Workorder #,Title,Status,Labor Hours,Production Hours,Units,Total Cost,Labor $/unit,Production $/unit,Profit,Profit $/unit,Created. - Totals by job or Totals by asset, 10 columns: the group name, then
Operations,Units,Labor Hours,Production Hours,Labor Cost,Production Cost,Total Cost,Profit,Profit $/unit.
Rows + totals writes both tables into one file, separated by a blank line. Pick it when you want a finance reader to see the summary without losing the detail behind it, and pick Operation rows when the file is going into a pivot table.
Maintenance and scheduler table CSVs
Both boards export the columns their table is showing, in the order it is showing them. Grouping is ignored: the file is one flat list, whatever the board is grouped by on screen. Both files open with a byte order mark, the marker that tells Excel a file is Unicode, so accented names survive the import.
| Board | File | Always exported | Total columns available |
|---|---|---|---|
| Maintenance | maintenance-tasks-2026-09-19.csv | WO #, Title, Assigned To, Asset | 15 |
| Scheduler | scheduler-tasks-2026-09-19.csv | Title, Assignees, Operation, Part, Quantity, Asset, Job | 24 |
To widen the export, turn the columns on in the table first. The maintenance table ships showing six optional columns, and the scheduler two, so a default download is far narrower than the totals above.
Part is the one column that behaves differently. The scheduler table draws the part and the operation in a single cell, but the CSV gives the part its own column, placed immediately after Operation.
Every column is defined in Work order fields and statuses and Job and scheduler fields.
Emailed and scheduled reports
The Downtimes report, the Advanced Report and historical production each carry Share and Schedule alongside the two downloads in the Actions menu. Share emails the view you built to members of your organization now. Schedule saves that view and emails it on a daily to yearly cadence.
Neither is a download. Nothing lands in your Downloads folder, and a recipient has to be a member of your organization already, because both dialogs pick from the member list rather than taking a typed address.
Choose an export when you need the numbers to leave IoTFlows, and a schedule when the same people need the same report every week. Full procedure in Email a report and schedule it to repeat.
What has no export
The audit log at /logs has no export in any format. Read it in the browser, and filter it down before you go looking, see Review the organization audit log.
The live monitoring surfaces have none either, by design. The Assets page, Canvas, wallboards and a machine's Health tab are all views of the current moment, and the reports exist to put a window around that data. For utilization use the Advanced Report, and for stops use the Downtimes report.
Export errors
| Message | What happened | Fix |
|---|---|---|
| Failed to download CSV. Please try again. | The browser could not build the file from the rows on screen | Reload the page, wait for the table to finish loading, then download again |
| Something went wrong generating the PDF. | The server could not render the report URL | Try again. If it repeats, narrow the date range: a long window at a fine interval is the usual cause |
| An error occurred while downloading | A file or image attached to a work order failed to download. This is not a report export | Open the work order and download the attachment from its detail panel |
The PDF takes a few seconds, and a toast reads Generating PDF report… this may take a few seconds. while it works. Leaving the page cancels it.
See also
The definition behind every number IoTFlows shows and what each one leaves out. Uptime is availability, running time over running plus stopped, and is the number the interface has labeled OEE. Unknown time and None-severity breaks sit outside both uptime and downtime. The parts gauge measures output against the ideal cycle time, FPY compares a step's count to the step before it, and every window is calculated whole rather than averaged per shift. There is no combined OEE figure and no quality factor.
Symptom, cause and fix for machine numbers that do not match the floor. Check the organization timezone first, because it is the one setting that moves every number at once while leaving each one looking plausible. Then the shift schedule, then the window and the Exclude switches on screen, then the machine's own status bar, where gray means the sensor was silent and red means it was stopped. Also covers uptime that reads too high or too low, stops that never appear, unclassified backlog, and the four edits that rewrite history.

