Release Notes

Stay up to date with the latest features, improvements, and fixes

Export your customer list to CSV or Excel — and every export now downloads with the right name

October 16, 2026

Latest

Export your customer list

On the Customers page, Export now sits beside Import. Pick CSV or Excel and the file downloads straight away.

  • It exports what you’re looking at. Your current search, sort and filters (quote, job and invoice status, open requests, created dates) apply across every page of results, not just the one on screen.
  • Readable columns. Headers are plain names, ready to open in a spreadsheet or hand to your accountant. The file is for exporting, not for re-importing.
  • Who can export. Anyone who can view customers. Technicians and anyone else without customer access don’t see the button.

For API and Zapier users

  • New: GET /api/v1/customers/export?format=csv|xlsx. It takes the same filters as the customer list and needs the customers:read scope. A date that can’t be read returns a 422 instead of being ignored, and from or to on its own now filters as documented.
  • The Zapier app has a matching Export customers to CSV or Excel action.

Every export, one set of rules

Jobs history, expenses, admin users, reports, invoice analytics and public-form submissions all used to build their files their own way. They now share one exporter, so they behave the same everywhere:

  • Files save under their real name — customers-2026-10-16.csv, not a name with a random prefix in front.
  • Dated in your timezone. An export made late in the evening is dated today, not tomorrow. This applies to jobs, expenses, users and the expense-receipts zip.
  • Safe to open in Excel. A cell that starts with =, +, - or @ is written as text and never runs as a formula. Hidden control characters no longer blank out a cell.
  • Reports export: choosing the same section twice no longer fails; you get it once.
  • Jobs export API: an empty format= now gives CSV, matching the documentation.

Expense categories keep their cards when renamed

If you renamed one of the built-in expense categories — Labor, Materials, Fuel, Taxes or Other — the Expenses summary card kept the old name and showed $0. The cards now follow the category itself, whatever you call it.

  • Cards show your category’s current name. “Labor Costs” and “Materials & Chemicals” now read Labor and Materials, or whatever you’ve renamed them to.
  • Duplicates merged. Accounts with both “Materials & Chemicals” and “Materials” now have one Materials category. Its expenses moved across, and the duplicate is archived.
  • No more surprise duplicates. Logging technician labor or reassigning to Other no longer creates a second “Labor” or “Other” after a rename.
  • Exact labor costs. Technician labor is now calculated to the cent (half an hour at $10.01 is $5.01, not $5.00).
  • API: GET /api/v1/expenses/stats adds system_categories (each built-in category’s key, current name and amount). by_category is unchanged, so existing integrations and older app versions keep working.

Smaller fixes

  • Status tooltips in scrolling tables (such as Customers) are no longer clipped by the pagination bar, and the page no longer jumps back a couple of seconds after you hover.