Custom Order Management

A configurable order grid, Saved Views and Custom Fields that let each carrier set up its order list for the way it works.

Background

I've noticed that whenever a dispatcher showed me their workflow during an interview or on a site visit, a spreadsheet always came up. Often users kept several spreadsheets, one for each kind of report they care about. Spreadsheets have been around for decades. They are familiar and reliable.

The problem

  • Our system was not at all flexible enough.

  • Small requests were piling up.

  • Each carrier tracked something different. What was useful to one made little sense to others, so no fixed list could fit all of our users.

  • Every report kept in a spreadsheet was work done outside our product, which reduces our moat.

At first, we looked into adding fields and filters as carriers asked for them. It would have helped whoever asked first, but each request meant engineering work, and the next carrier would need something else.

What we built

Our web app was built with MUI, a React component library. At the time I was looking for solutions, they have just announced a stable version of their brand new MUI X Data Grid. In short:

  • It works like a spreadsheet. Dispatchers show, hide, pin, reorder and resize columns, filter on any of them, and export to CSV or Excel.

  • Rows could be grouped and aggregated, so an accountant can see payments per customer without leaving the TMS.

  • We added presets, so for our users this meant a single table list with many views, rather than disconnected spreadsheets. Consequently, a change to an order appears in all their reports simultaneously.

Three spreadsheets, one per report, next to the Saved Views menu holding the same three reports as views of one order list
  • We've added custom fields so that people who need specific things can have them appear in their columns.

A custom field filled in on an order, and the same field shown as a column in the order grid

Decisions we made

We kept the old list. Temporarily. Changing how carriers see their orders is a fundamental change. We expected some carriers to love the grid and some to hate it, and we couldn’t afford to lose either group. Keeping the old list cost little, so both ran side by side until nobody would lose something that only the old list could do.

Saved Views and Custom Fields went into the paid plans. This was an easy call, since these were non-essential delighters.

After launch

In the first week, only about 10% of tracked order actions happened in the grid, and the share was falling.

Something was not right, and we found it:

  • All of the transactional emails still linked to the old list.

  • Some of our most active dispatchers had bookmarked the address to the old view.

We pointed the emails to the grid, sent the old address there too and the adoption jumped immediately.

As each new grid feature shipped, the grid’s share kept growing.

Impact

  • For dispatchers and accountants: a bunch of transformative features shipped within a couple of months.

  • For the business: this change allowed us to span a few delighters behind a paywall

  • Strategically: a carrier with a new need no longer waits for engineering.

What would I do differently next time

I would be pushing for more active marketing around the time of release for such transformative features. I think the team underplayed it. We could've made more buzz.