Assets
Track equipment, service records, relationships, groups, and labels from the web app.
The Assets area is the hub for everything about the equipment and fixtures at your sites. The web app gives you the fullest tooling: deep filtering, bulk editing, relationship graphs, service record history, CSV import, and batched label printing.
The Assets hub
/assets opens into three tabs at the top of the page:
- Assets — the main table of every asset in your organization.
- Service records — an organization-wide log of maintenance entries across all assets.
- Relationships — an interactive graph of how your assets connect to each other.
Each tab keeps its own filters, so you can move between them without losing context.
Filtering the assets table
The asset table supports searching and faceted filtering:
- Search matches against name, asset ID, manufacturer, model, and serial number.
- Status filters by configured statuses such as In Service, Operational with Issues, Out of Service, and Retired.
- Type and Subtype filter by your organization's configured asset taxonomy.
- Location filters by any organization location.
Columns include the human-readable Asset ID, name, type/subtype, status, location, and timestamps. Clicking a row opens the asset detail page.
This preview uses live inputs, but the values stay local to the docs.
The filter bar stays interactive in the docs so you can explore the controls without affecting real data.
Bulk actions on the assets table
Enabling Select exposes a toolbar with three bulk operations:
- QR Labels — combine every selected asset into a single multi-page PDF, sized to the label template you pick.
- Change Status — apply the same status to every selected asset in one request.
- Delete — remove the selected assets after a confirmation prompt.
Select rows to reveal ticket actions.
The toolbar is the same component used in production, with demo-only state.
Per-row actions
Every row in the assets table has a menu for:
- Copy Asset ID — put the human asset code on your clipboard.
- QR Label — open the label dialog for a single asset.
- View details — jump to the detail page.
- Edit — open the asset edit form.
- Delete — permanently remove the asset.
The asset detail page
Opening an asset lands on a tabbed page at /assets/{id} with:
- Details — name, type, subtype, manufacturer, model, serial number, location, custom fields, photo, and any uploaded documents.
- Relationships — the connections between this asset and others, with a one-click way to add new relationships.
- Service records — a timeline of maintenance entries plus the form to log new ones.
- Related tickets — any ticket linked to this asset.
- Label — a preview of the QR code, a Copy URL button, and a Download Label action.
- Activity — an automated log of edits, status changes, and related events.
- Comments — threaded comments with @mentions for teammates.
The header shows the current status as a colored badge and an Edit button. To change status, use Edit (or the Change Status bulk action on the assets table).
Alex Morgan created this item
5d ago
Jamie Chen changed status from "Operational with Issues" to "In Service"
18h ago
Sam Patel updated location from "West Wing" to "Mechanical Room 2"
6h ago
Sam Patel linked ticket T-1042
45m ago
The activity tab surfaces service records, status changes, and edits in one timeline.
Documents on an asset
The Details tab includes a documents card where you can attach files to the asset (spec sheets, warranties, photos, invoices, etc.).
- Upload up to 10 MB per file. Most document MIME types are accepted; executables and scripts are blocked for safety.
- Uploaded images can be JPEG, PNG, GIF, WebP, HEIC, or HEIF.
- Each document shows its name, size, and upload date, with actions to open or delete it.
The same EntityDocumentsCard component is reused for ticket, checklist, vendor, and location documents, so the experience is consistent across the product.
Service records
Service records capture maintenance history against a specific asset. You can log them from an asset or review them in aggregate from the Service records tab at the top of /assets.
Logging a service record
From any asset's Service records tab:
- Pick a Type of Service — choose a suggested type or choose Other… to type a custom value.
- Set the Service date.
- Optionally add Notes describing what was done.
- Click Add Service Record to save.
Suggested types come from two places:
- Group record types inherited from any asset groups this asset belongs to.
- Custom types configured on the asset itself under Service type configuration on the same tab.
You can disable a group-inherited type for a specific asset (without removing it from the group) or add a one-off custom type directly on the asset.
Service records can be created and deleted, but not edited in place. If you made a mistake, delete the record and log a new one.
The Service records tab (organization-wide)
The top-level Service records tab shows every record across the organization in a table with:
- Asset — name plus the human asset code; clickable to open the asset.
- Type — the service type you chose.
- Service date — when the work happened.
- Notes — truncated preview of the notes.
- Logged — when the record was saved.
Filters include search across the type and notes, plus a Type dropdown built from the types already logged. Bulk select enables Delete across many records at once. Each row also has a delete action.
Service type configuration
Each asset has a Service type configuration panel on the Service records tab where admins can:
- See the types inherited from any asset group this asset belongs to.
- Toggle inherited types on or off for this asset specifically.
- Add asset-specific Custom types that are not part of any group.
This keeps the Type of Service dropdown focused on what actually applies to a particular piece of equipment.
Relationships
Relationships describe how two assets are connected in the real world (for example, a chiller serves an air handler, or a panel powers a pump).
Adding a relationship
From the Relationships tab of an asset, click Add Relationship to open the modal:
- This Asset is shown at the top for context.
- Pick a Direction:
- This asset → Related asset stores this asset as the source.
- Related asset → This asset stores this asset as the target.
- Pick the Related Asset from the asset selector.
- Choose a Relationship Type. Directional types show both the forward label and the inverse label (for example, serves / served by).
- Optionally add Notes describing the connection.
The relationship list on the detail page shows each row with:
- The other asset's name (clickable).
- The correct label depending on whether the relationship is outgoing or incoming.
- The notes, if any.
- A remove action.
Default relationship types
Every organization starts with these types:
- serves / served by (directional)
- powers / powered by (directional)
- contains / contained in (directional)
- connected to (non-directional)
Organizations can add more types under settings. Each type has a label, an optional inverse label, and a flag for whether it is directional.
The Relationships graph
The top-level Relationships tab at /assets renders the full graph using an interactive React Flow canvas. You can:
- Pan, zoom, and use the minimap to navigate large graphs.
- Filter by a seed asset, relationship type, and traversal depth (1 or 2 hops).
- Apply the same status, type, subtype, and location filters used on the main assets table.
This view is only available on the web app because it needs the extra screen real estate and pointer interactions to be useful.
Asset groups
Asset groups are a way to organize assets for shared configuration and reporting. They live at /assets/groups.
- Groups have a Group ID, name, and location (a site name; auto-selected if your organization has only one location).
- Each group has a list of member assets, managed through the asset selector on the group detail page.
- Each group has a Service types list. Those types become suggested service record types on every member asset.
Groups do not describe real-world relationships — use the Relationships tab for that. They are more like tags or shared service profiles. On an asset's Details tab, any groups the asset belongs to appear as badges that link back to the group.
Bulk-delete is available from the groups list.
Importing assets from CSV
Admins can import assets in bulk from /assets/import.
The CSV must include the canonical column headers:
- Required structural columns:
name,type,subtype,location,status,manufacturer,model,legacy_id,photo_url,serial_number. - Custom field columns must be prefixed with
details_, for exampledetails_site,details_floor,details_source_photo_label.
Uploading runs a preview first so you can review validation errors. Rows are validated against your organization's configured types, subtypes, statuses, and locations, plus any required dynamic fields. Only once the preview passes can you run the actual import.
There is no asset_id column — asset IDs are assigned automatically from the type's code sequence.
Labels and QR codes
Every asset has a QR code that links to its public landing page (/assetlandingpage/{id}). Scanning the label loads that page in a browser, where guests can submit a ticket against the asset.
You can print labels two ways:
- Single asset — open the Label tab on the asset (or use the row action in the assets table) and pick a template, then download the PDF. You can also copy the QR target URL.
- Bulk — select multiple assets in the table, click QR Labels, and you will get one PDF with one page per asset.
Public landing page
/assetlandingpage/asset-doc-demo
The QR panel embedded here is the same component users see on the Label tab.
Previews stay live, so label template changes in the app are reflected here automatically.
Label templates are managed under Settings → Label templates. The default template is used unless you pick a different one when downloading. See Settings for details on creating templates.
Related pages
- Turn a problem into tracked work with Tickets.
- Configure types, statuses, locations, and label templates under Settings.
Mobile differences
The mobile app supports asset browsing, filtering, creating new assets, and scanning a QR label directly into an asset. The relationship graph, service records tab, asset groups, CSV import, and bulk label downloads are web-only.