The Quotes list is where every quote in the shop lives — drafts, sent quotes waiting on a customer, approved ones ready to invoice, and the declined/expired ones you're done chasing. Get there from the left rail: Customer flow → Sales. That link drops you on `/app/quotes`, which is actually a small hub with four tabs — Quotes, Sales Cast, Pricing, and Disputes — and the Quotes tab (the list this article covers) is what loads by default.
The two follow-up callouts
Before the list itself, you may see one or two colored cards:
- Amber "expiring within 7 days" — quotes that have been sent (status Sent or Viewed) whose expiration date is coming up inside a week. Each row shows the quote number, customer, status badge, an "Expires in N days" (or "Expires today" / "Expires tomorrow") label with the actual date, and the total.
- Sky-blue "sent quotes not opened yet" — quotes that were sent but the customer has never opened, once a few days have passed. These rows don't carry a status badge (every row here is a Sent quote by definition) — instead they show "Sent N days ago" in place of an expiry countdown.
Both are read-only lists that only show up to 6 rows at a time (with a "+N more" note if there are more) and disappear entirely when there's nothing to flag — so an empty pipeline doesn't get cluttered with empty cards. Each row has its own Resend button, separate from anything in the main table below — it re-sends that specific quote by email. It's email-only; there's no text/SMS option on this button. Clicking anywhere else on a row takes you to that quote's detail page.
Searching and filtering
The search box searches by quote number or customer name only — it won't match on vehicle, so if you're hunting for "the Tesla quote from last week," a name or quote number is a faster path than trying the vehicle. Next to it, the status dropdown lets you filter to one status or leave it on "All statuses." The statuses are Draft, Sent, Viewed, Approved, Declined, Expired, and Converted — hover over any status badge (in the expiring-soon callout or the table) to see a one-line explanation of what it means, e.g. Draft is "Not sent yet — only you can see it," and Converted is "Turned into an invoice / job."
The table
Each row shows Quote #, Customer, Vehicle, Status, Created date, Expires date, and Quote Total. A missing quote number shows as a dash, and the vehicle column shows a dash too if year/make weren't captured. Clicking anywhere on a row opens that quote's detail page — except the checkbox in the first column, which is there specifically so you can select rows without accidentally navigating away.
Selecting quotes and bulk actions
Check one or more rows (or use the header checkbox to select everything currently loaded) and a bulk action bar appears, showing your selected count and four actions: Mark sent, Mark approved, Mark expired, and Delete. Delete asks you to confirm first and is explicit that it can't be undone — there's no trash/restore for quotes. One thing worth knowing: marking a batch "Sent" or "Approved" updates the numbers your shop dashboard tracks for quotes sent/approved in the last 30 days; marking a batch "Expired" does not touch those same dashboard figures. Clear on the far right of the bar just drops your selection without changing anything.
Loading more quotes
The list loads 50 quotes at a time. If there are more, a "Load more (N remaining)" button appears below the table — each click fetches another batch and appends it, and the footer text ("X of Y quotes loaded") tracks your progress. One gotcha: if you've clicked Load more a few times and then change your search text or status filter, those extra loaded rows are dropped and you're back to the first 50 under the new filter — that's expected, not a bug, since the old rows belonged to a different filter.
A New Quote button sits in the top-right of the page above the search/filter row — it's always there, whether or not you have any quotes yet. If you have zero quotes at all, or your search/filter combination matches nothing, the table is replaced by an empty-state card with its own matching "New Quote" button in the middle — so in that case you'll actually see two New Quote buttons on the page at once: the persistent one up top and the one inside the empty-state card.