Tracking & visibility

Export shipments to CSV

Export individual shipments from the Container Dashboard or grouped counts from the carrier or forwarder homepage. A separate carrier operations route streams shipment data from the server. Check which export you are using: each has its own row scope, columns, and filename.

6 minute read · Updated October 25, 2026

The server export is URL-only.

The dashboard and homepage group exports have buttons. The carrier operations export is a URL with no entry point anywhere in the current app — no link, no menu item, no keyboard shortcut. If you need it, contact support rather than hunting for the control.

Choose an export

Every export writes a comma-separated file with one header row. Shipment exports have one row per container; the homepage overview has one row per customer, trucker, delivery location, or terminal.

Container Dashboard export
Export CSV sits below the grid; Export selected moves into the bottom selection bar when you select rows, under More actions when space is limited. It runs entirely in your browser against loaded rows and needs no round trip. 35 columns. Available to carrier, forwarder, and warehouse workspaces.
Homepage group export
Export CSV below the active overview tab writes the selected groups, or all filtered groups when nothing is selected. It follows visible column order and includes every matching group, including rows not yet revealed by Show more rows.
Carrier operations export
A server route at /protected/operations/export that re-queries the database and streams the result. 18 columns. Carrier workspaces only, and reachable only by URL — nothing in the app links to it.

Check the filename: the homepage writes customers.csv, truckers.csv, delivery-locations.csv, or terminals.csv. The dashboard writes trucker-container-dashboard-report.csv or forwarder-shipment-status-report.csv, and the carrier route writes something like carrier-operations-at_pier-2026-07-27.csv.

These exports describe one filtered collection at one moment; they are not reports of your whole account. If you need a complete historical extract, say so when you contact support — do not assume a dashboard export covers it.

Exporting selected rows or the current dashboard view

Open Container Dashboard from the left rail. Filter and sort the grid until it shows exactly the rows you want, then export.

  1. Wait for the grid to finish loading. The row count next to the search box reads Counting rows while the dashboard is still pulling its working set. The export button stays disabled until that finishes — see Container Dashboard basics for how the working set is loaded.
  2. Narrow the grid. Pick a view, apply column filters, and type in the search box. Every one of those narrows what gets exported. So does the sort you have applied — the file comes out in the order the grid is displaying.
  3. Select rows when you need a subset. Tick the row checkboxes. The bottom selection bar offers Export selected (N), where N is the number of selected rows. Skip this step, or press Clear selection, to export the full filtered and sorted view.
  4. Click the export button. On desktop, Export CSV sits at the far right below the grid when nothing is selected. With selected rows, use Export selected (N) in the bottom selection bar, under More actions if space is limited. On a phone, the button above the list reads CSV or Selected (N) under the Export heading.
  5. Find the file. Nothing appears on screen. The browser downloads the file straight to your downloads folder under a fixed name, so a second export replaces or numbers alongside the first depending on your browser.

What the file actually contains

The export takes the grid's current row model. That means:

Filters and search are honored
Report settings, column filters, and the local search box all narrow the file, including milestone date searches such as gate out this week or delivered before Aug 3. The same rule applies when the active tab is a shared view, whether your access is Read only or Can edit. Managed tracking enrollment state does not hide a row, but containers archived in the active view are absent unless Show archived is on. The rows come out in the sort order on screen.
Row selection is honored
When one or more visible rows are selected, the file contains only those rows in the order shown on screen. With no selection, the export writes every row in the current filtered and sorted view.
Column visibility is ignored
The column list is fixed. Hiding, reordering, or resizing columns in the grid has no effect — hidden columns are still in the file, in the file's own order. The compact comment control beside Container is display-only and does not add or remove export fields.
Only loaded rows exist
Anything outside the dashboard's history window was never loaded into the browser, so it cannot be exported. Widen the window first.

The column list differs by workspace type. A carrier workspace gets a dispatch-shaped set that opens Status, Holds, Container, Customer, Importer (BCO), PO and carries Dispatch, Chassis, Scheduled Return, and Billed. A forwarder workspace gets a documentation-shaped set that opens Status, Holds, Container, Importer (BCO), Owner, MBL. A warehouse workspace gets the forwarder set with Customer and Broker in place of Importer (BCO) and Owner. All three end with Source, Added, and Updated, and all three are 35 columns wide.

The Holds column drops holds.

A container can carry several holds at once — a customs hold, a freight hold, a manual override, an offsite-review flag. The grid shows them all. The CSV writes only the first one and silently discards the rest, so do not use an exported Holds column to prove a container was clear.

Status uses the same milestone labels as the grid: On Water, At Terminal, Scheduled, Picked up, Delivered, or Gate In. Source also uses the displayed labels, such as Native D/O and Managed Tracking. You do not need to translate internal status or source codes before sharing the file.

Copy a table into an email

Select dashboard rows and choose Copy table from the bottom selection bar, under More actions if space is limited. It copies the visible columns in their current order, with the selected rows in the current sort order. Paste into a rich text email editor to include the headers and table formatting. Spreadsheet and plain text editors can use the tab-separated text included with the copy. If your browser only allows a text copy, the confirmation says as plain text.

To combine containers from different views, use Add to scratchpad in each view, then open Scratchpad and choose its columns. Use Copy scratchpad for all matching collected rows, or select a subset and choose Copy table. See building a Scratchpad for storage, freshness, and unavailable-container behavior.

Exporting homepage groups

On the carrier homepage, choose Customers, Delivery locations, or Terminals. Forwarders choose Truckers, Delivery locations, or Terminals. Use Find or column filters, then click Export CSV in the footer. Select rows first to use Export selected CSV. Dates and delivery-location arrays include all their values and counts, including missing assignments. The total footer itself is not an exported row. Active counts current shipments. Gate out today, Delivered today, and Gate in today count each recorded move independently, including completed containers. Movement columns can overlap and do not add up to Active. LFD groups label Missing and Not provided separately, with the full count for each. Not provided identifies sources that do not supply terminal LFDs; it does not represent a date.

Homepage exports follow your visible columns and their order. They use all matching loaded groups, even when only the first 15 are rendered. To export individual containers instead, click a count and use the shipment panel's Export CSV control.

The carrier homepage's Empty returns tab has its own Export CSV. It exports the filtered containers with their shipping line, equipment, status, LRD, proposed location and date, option status, assumed condition and snapshot time. A conditional or unconfirmed option remains labeled as such in the file.

The carrier operations export (filters honored, streaming)

There is no button for this.

The carrier operations export lives at /protected/operations/export. The only screen that ever rendered a Download CSV link to it is no longer wired to a route, and carrier workspaces that open /protected/operations are redirected to the Container Dashboard instead. The route still works if you reach it by URL, but you will not find a control for it in the app. Ask support before you build a URL by hand.

It behaves differently from the dashboard button in three ways that matter.

  1. It re-queries the database. Nothing is taken from your browser. The route runs the same container query the operations list uses and applies the filters in the URL to it, so the file reflects the database at the moment of the request rather than whatever your screen was holding.
  2. It streams, and it is not paginated. The route walks the whole result set 500 rows at a time and writes each batch to the response as it goes. There is no page size and no row cap — a filter that matches ten thousand containers produces ten thousand rows. The page parameter is stripped before the query runs.
  3. It honors more filters than the list did. Tab, terminal, clearance, and the free-text query are applied, and so are vessel, steamship line, BCO (or the older consignee spelling), customer, LFD urgency, empty-LFD urgency, and exposure. Multi-value filters are pipe-delimited. The date range is applied only on the Picked up and Gate In tabs; on every other tab it is ignored outright.

The filename is built from the tab and the current business date in US Eastern time — carrier-operations-gate_out-2026-07-27.csv for the Picked up tab, and so on. The default tab is at_pier, which the app labels At Terminal.

Status uses the same effective lifecycle as the dashboard. A Crowley load-on-vessel event exports as On Water until destination discharge is reported; origin gate-in and booking-assignment rows remain supporting history rather than an At Terminal status.

The 18 columns are Container, Terminal, Vessel, BCO, Consignee, Customer Org, Status, D/O Received, LFD, LRD, Clearance, Provider Clearance, Manual Override, Reference, Driver, Pickup, Delivered, and Returned. The three clearance columns are deliberately separate: Provider Clearance is what the terminal or steamship-line source reported, Manual Override is what a dispatcher set by hand, and Clearance is the effective value after the override is applied. If you are auditing a disagreement, all three are in the file.

The route requires a carrier workspace and one of the tenant_admin, tenant_manager, or tenant_user roles. Anyone else is redirected to the unauthorized page instead of getting a file. See why a page shows Access Denied.

Reading the file in Excel

Both files are UTF-8 text with a single header row and line feeds between rows. A value is wrapped in double quotes only when it contains a comma, a double quote, or a line break, and an embedded double quote is doubled. That is standard CSV and every real parser reads it correctly. Excel is where it gets awkward.

FileByte order markWhat that means
Carrier operations exportYesExcel detects UTF-8 on its own. Accented names and other non-ASCII characters open correctly on a double-click.
Container Dashboard exportNoExcel on Windows may guess the wrong encoding and mangle non-ASCII characters. Import it rather than double-clicking it.
  1. Import instead of opening. In Excel, use Data → From Text/CSV, pick the file, and set File Origin to 65001: Unicode (UTF-8). This is the only reliable way to read the dashboard export on Windows.
  2. Force the reference columns to Text. Before you load, set Container, PO, MBL, Booking, Broker Ref, Tracking, and Reference to Text. Excel will otherwise strip leading zeros from a reference number and convert anything that looks numeric into a number.
  3. Leave the date columns alone. Dates are written as plain text exactly as Conterminal stores them. If you let Excel auto-detect them it will reformat them to your machine locale, which quietly makes two people's copies of the same export disagree.

The Added column carries the exact added-to-Conterminal timestamp rather than a day value, because that is what the grid sorts on. If you sort an export by Added and it does not match the grid, check that Excel has not truncated it to a date.

The Contents column can contain commas and, occasionally, line breaks from the original document. Those rows are quoted correctly, so they will look wrong only in a tool that splits on commas without respecting quotes. If a row appears to spill into the next line in something other than Excel, that is the reason.

Limits

10,000 rows in the dashboard
The Container Dashboard rejects a new working set above 10,000 rows. Previously loaded rows can remain available, but an export of those rows is not a refreshed extract. Without a saved working set, nothing can be exported until the history window is shortened.
The history window
The dashboard loads one of three windows — 120d, 12mo, or 36mo. Rows older than the selected window are not in the browser and therefore not in the export.
No row cap on the carrier route
The streaming export has no limit. It walks the entire filtered result set in batches of 500 rows and keeps writing until the query is exhausted.
Fixed column sets
35 columns for the dashboard export, 18 for the carrier export. Neither is configurable, and neither follows the columns you chose to show in the grid.

If the workspace history window is too wide, the dashboard shows “The workspace history window exceeds the 10,000-row dashboard limit. Ask an admin to shorten it in Settings → Reporting defaults.” Ask an administrator to shorten that window. If saved rows remain visible, they retain their original snapshot time. Shortening the window is the fix; reloading is not.

While Updating report appears, exports use the rows already loaded. Wait for that message to clear before exporting newly updated data.

Resolve refresh warnings before exporting current data

The dashboard exports the rows it has loaded. If a refresh failed, those rows can be older than the latest tracking data. Use Retry refresh and check that the warning clears before creating an extract that must be current. If an update button is waiting, apply those downloaded changes before exporting the newer view. Selection is retained for rows that still match; rows that leave the view are excluded from the selected export.

There is no scheduled export, no emailed export, and no API key you can point a spreadsheet at. If you need a recurring extract, that is a support request, not a setting.

Troubleshooting

The Export CSV button is greyed out

The dashboard may still be loading, or the grid may contain zero rows. Wait for loading to finish, then check the active filters. If a refresh warning appears, use Retry refresh or follow its reload, sign-in, or shorter-history instruction. A failed refresh can preserve previously loaded rows; exporting those rows does not make them current.

The row count does not match the screen

Work through the four usual causes in order. The header row makes the file one line longer than the row count. Selected rows limit the dashboard export; clear selection to export the full filtered view. The dashboard export can only contain rows inside the loaded history window. And the carrier operations export re-applies vessel, steamship line, BCO, customer, LFD urgency, empty-LFD urgency, and exposure filters from the URL, which the operations list itself never applied — so that file can legitimately be shorter than the list you were looking at.

The download stopped partway

This only happens on the carrier operations export. Because it streams, the response headers and the first rows are already sent before anything can go wrong, so a failure mid-stream cannot turn into an error page — the download simply aborts and you are left with a truncated file. Check the last container number in the file, then request it again. If it stops at roughly the same place twice, narrow the filters and send support the exact URL you used.

A container has several holds but the file shows one

Expected, and a real limitation. The Holds column writes only the first hold label and discards the rest. Open the container in the grid to see the full set.

Status or Source does not match the grid

Refresh the dashboard and export again. Both columns use the same user-facing labels as the current grid, including separate Picked up and Delivered status values.

Columns I hid are still in the file

The Container Dashboard shipment export uses a fixed column set. The homepage group export follows its visible columns and order; check which file you downloaded.

Every export overwrites the last one

The dashboard export uses a fixed filename with no date or filter in it, so repeated exports collide in your downloads folder. Rename each file as you save it. The carrier operations export includes the tab and the business date, but two exports of the same tab on the same day still collide.

Opening /protected/operations/export sends me to Access Denied

That route is carrier-only and needs the tenant_admin, tenant_manager, or tenant_user role. A forwarder, warehouse, or importer workspace cannot use it at all — use the Container Dashboard export instead.

Accented names come out as garbage

You double-clicked the dashboard export, which carries no byte order mark, and Excel guessed the wrong encoding. Re-import it with Data → From Text/CSV and File Origin set to 65001: Unicode (UTF-8). The carrier operations export does carry a byte order mark and does not have this problem.