Release notes

What shipped, and when. Newest first. Page 2 of 5.

A deal no longer stops at sold

dealsdashboardreportsdealership

Until today the deal was finished when you marked it Sold. The money was not, and the chase for it lived on a whiteboard or in somebody's head.

Open a deal — Dealership → Documents, or from the customer's record — and the status now carries on past sold: Contract complete, then Booked, then Funded. Dead is still there for a deal that falls apart.

Sold, contract complete, booked and funded all count as a sale. The scorecard, the dashboard widgets and the Deals report treat the four the same way, so moving a deal forward never takes a unit off a rep's month or a dollar off your gross. That was the first thing we checked, because the opposite would have taught everyone to leave deals at sold.

One step at a time, and one step back

The four statuses are a line, and a deal walks it a step at a time. You cannot jump from Sold to Funded. The two dates in between — contract complete and booked — are what everything else ages against, and skipping them leaves them permanently empty for the deal you most want to ask about later.

Each funding state can step back exactly one. A bank kicking a contract back for a missing signature is a normal Tuesday, not an error, so Booked returns to Contract complete and Funded returns to Booked without anybody having to fake a status.

A funded deal cannot be marked dead. Rewind it to Booked first. A deal the lender has already paid for is not dead, and if it truly is, that is money you are sending back — worth the extra click.

What you record

On the deal, alongside the status:

  • The lender's reference ID — the number their portal shows you, which is what they will ask for on the phone.
  • The funded amount. If the lender funded short, settle the deal at what actually arrived and write the difference in the outstanding note. The amount is what came in, not what you asked for.
  • Contract complete, booked and funded dates, set when you move the status.
  • A funding notice, with an acknowledgement per person, so "did anyone see this" has an answer.
  • What is outstanding — free text, for the stipulation, the signature or the proof of insurance that is holding it up.

The funding lender is the bank already on the deal, not a new field to fill in twice.

Two widgets for the two questions

Money In Transit is what your lenders owe you right now: delivered, financed, not yet funded. It ignores the dashboard's date range on purpose. A 30-day window would hide the February contract that never funded, which is precisely the one you need to see.

Money Funded is what lenders actually paid inside the range, counted on the funding date, not the delivery date. A car delivered in March and funded in April is April's money. That is how the bank statement reads, and it is how the widget reads.

Both are under My widgets → Edit → Add widget → Deals.

The number an office manager chases

Days unfunded — days since delivery on a contract the bank has not paid for — shows on the deal and is a column on Reports → Deals. The Deals report also gained the funding columns, an is any of filter operator so one filter can name several statuses, and a saved view called In transit — awaiting funding that every account starts with.

Two new Action required rules on deals: a funding notice nobody has acknowledged, and a contract delivered longer ago than your own window and still unfunded. That window is a setting and starts at 7 days; a store that funds through a slow credit union should raise it rather than live with a list that is always red.

You type it, and that is deliberate

There is no lender integration behind this, and there is not going to be one. Lenders connect to Dealertrack and RouteOne, and that network is thirty years old — we are not going to pretend otherwise or charge you for a half-working version of it. A manager reads the portal and types what it says, which is what the manager is doing today anyway, minus the whiteboard.

What we did do is shape every field so that the day a decision does arrive from somewhere else, it fills in the same row. Nothing here would have to be rebuilt for that.

Say where a car actually is

inventorydealershipreportspricing

Open any vehicle under Dealership → Inventory and there is a new question: Where is it?

At auction · In transit · Repair shop · Body shop · Detail shop · Tire shop · Accessory shop · On hold · Sale pending · In arbitration — or leave it on On the lot, which is where most of your inventory should sit.

It is not the same as the status

The vehicle's status answers can this be sold — Available, Sale pending, Sold — and it is what your marketplace feeds read. Location answers where is it. A car can be Available and in the body shop at the same time, and both are true.

That is why it is a separate field rather than more options on the old one: folding a workshop into the status would have changed what goes out to CarGurus and Cars.com.

Find them in one click

Above Reports → Inventory there is now a row of chips — At auction, In transit, Repair shop, and the rest. One click shows everything in that state. Click again to clear it. Location is also available as a column and as an ordinary filter, so it saves into a view and exports like anything else.

It stops price drops on cars nobody can buy

If you run an automatic markdown schedule, seven of the ten now stop it: at auction, in transit, repair shop, body shop, on hold, sale pending, and in arbitration.

A price drop is a message to shoppers, and there is nothing to say about a car that is two counties away or already spoken for. For the workshop states it is worse than pointless — the car is not yet the thing it will be when it comes back, and letting it collect markdowns for time it spent in a bay prices the finished car against the unfinished one's wasted weeks.

Detail, tire and accessory shops deliberately do not stop it. Those are hours of cosmetic work on a car that is standing on your lot and can be shown and sold today. Had they blocked reductions, any store that details every unit before it hits the line would have found its whole schedule quietly switched off.

It explains a car that is not online

On a vehicle's marketing tab, a car that is not live now says why in your own words — "Not on the lot yet — it has not arrived yet" — instead of only listing what is missing. A car still at auction with no photographs is not a photography problem, and sending somebody to the photo booth to look for it wastes their afternoon.

Cars in the three cosmetic bays do not get that line, on purpose: a car in the detail bay with no photographs is missing photographs.

Action required — one toggle, one definition

reportsdealsleadsinventorydashboard

Action required now sits beside + Filter on all three report lists. Turn it on and the list becomes only the records waiting on you.

On Deals: a document sent for signature that hasn't come back, a deferred down payment due today or already past due, and an overdue task on the customer.

On Leads: an overdue task, and a conversation where the customer said something and nobody has replied. Snoozed conversations stay out of it — you already decided when to deal with those.

On Inventory: units that are listed but cannot publish, using the same check that holds a car back from your marketplace feeds. Advisory problems — no VIN, no price — are not in here, because a car already live on every marketplace is not waiting on you. Those live on the Inventory Completion tile.

There is also an Action Required dashboard tile, and it reads the same definition as the toggle. That matters more than it sounds: a tile saying seven above a list showing four teaches you to trust neither.

What it does not cover, and we would rather say so. Outstanding lender stipulations aren't in here because we don't model them yet — a deal held up by a bank's conditions looks the same as one held up by nothing. Feed push errors are recorded per channel rather than per vehicle, so they can't flag an individual car; the per-car half of that question is covered. And "past the SLA" needs a first-response clock, which is coming — until then an unanswered message counts from the moment it goes unread.

Export CSV respects the toggle, so what you send a manager is what you were looking at.

Your booking link knows when you are closed

appointmentsbookingfix

You could set special hours and holiday closures, and the product showed them correctly everywhere staff looked. The public booking link — the one you send customers — ignored them and offered slots from your regular weekly hours.

So a customer could book 10am on a day you had marked closed, and nobody found out until somebody arrived at a locked showroom.

Fixed. The public booking link now resolves the same special-hours rules as every internal screen: a closure removes the day, and an amended window replaces the regular one for that date only.

Worth checking once

If you have holiday closures already entered for dates still ahead of you, they are now being honoured — open your booking link and confirm the closed days show no times. Any appointment already booked into a closed day was booked under the old behaviour and is still on your calendar; this change does not cancel anything, so those are worth a look.

Vehicle pricing and lot documents moved to the Dealership menu

dealershipinventorypricingsettingsnavigation

Two pages moved.

WasIs
Settings → Vehicle pricingDealership → Vehicle pricing
Settings → Lot documentsDealership → Lot documents

Nothing about either page changed — same blocks, same settings, same saved values. Only the way in is different.

Why

Settings is the one section every business on Lead Friendly shares. A shuttle operator, a freight broker and an insurance agency all open the same list, and none of them has a lot to age or a window sticker to print. Advertised pricing, ageing thresholds, profit objectives and the FTC Buyers Guide are a car dealer's job, so they sit with the rest of the dealer setup — the inventory feed, the data providers, the lead webhook — behind Dealership.

If you have a saved menu layout, both pages appear in it automatically. A layout you saved before today cannot hide a page that did not exist when you saved it.

Your old links still work

/settings/pricing and /settings/inventory-print redirect permanently to the new addresses, so bookmarks, links in help articles and the disclosure prompt all still land in the right place.

Searching Settings works too: type "doc fee", "ageing" or "window sticker" into the settings search box and you get the same results you did yesterday, now pointing at the Dealership pages.

Deals stuck at the bank were falling out of your counts

dashboardreportsdealsfix

The deal statuses and sale types were written down in six different places in the product, and each copy was short in the same direction.

The "Deal Status by Type" widget built its grid from four statuses and three sale types. A deal in any other state had no cell to land in, so it was not counted anywhere — it did not appear in a wrong column, it simply vanished from the totals. Deals awaiting finance and deals sold to a customer's own bank were both affected, along with wholesale.

The Deals report offered working, presented, sold and dead in its Status filter. If you had a deal parked at the bank, there was no way to filter for it. Sale type was a free-text box with no options at all, so filtering by it meant guessing the exact stored spelling.

What changed

There is now one list of deal statuses and one list of sale types, and every screen reads from it. The widget counts every row and shows totals. The Deals report offers Awaiting finance, and Sale type is a picker instead of a text box.

The lists are checked against the database's own rules automatically, so a status added in future cannot go missing from a screen the way these did.

What you will see

Your status grid totals may go up, because deals that were being dropped are now counted.

Saved report views were checked before this shipped rather than after: no saved view in any account was filtering on sale type, so turning that box into a picker could not have broken one.

What you're using

settingsreportingaccount

Settings → What you're using lists everything your account includes and says, plainly, whether you have ever used it.

Three states. In use — you added something in the last 60 days. Not lately — you used it once and stopped. Never used — it is there and you have not touched it. Anything not on your plan is marked as such and kept out of the counts, because "you cannot open this" and "you are paying for this and ignoring it" are different sentences.

The never-used ones are collected at the top with a link each, so the page ends with somewhere to go rather than a verdict.

Usage means records created, not pages opened. A saved view you built, an appraisal you worked up, a notification route you set. Opening a screen and leaving does not count — that is deliberate: a page view is not use, and a number that counts it would tell you you are getting value you are not.

How long customers wait for a reply

inboxdashboardleadsreporting

Open the Inbox and there are two numbers above it now: how many threads are waiting on a reply, and your average first response.

First response means what you would expect it to mean: the gap between the customer's first message and the first thing you said back. Per conversation, not per lead.

Waiting on a reply is asked of the customer's latest message, not their first. A thread you answered in March that asked a new question this morning is waiting on you right now — counting it as answered is how an inbox metric talks a store into thinking everything is fine.

AI replies count. If the auto-responder answered the customer, the customer got an answer. Excluding it would make switching the responder on look like it made your response times worse. Delivery receipts and automated notices do not count — those are not answers, and counting them would let a store score a perfect response time while never speaking to anybody.

Also on the dashboard as the Inbox First Response widget, and on the team scorecard as an Avg 1st reply column per salesperson. Credit goes to whoever replied first, since that is the person who answered the customer. A salesperson who has answered nothing shows a dash rather than a zero — nobody should top that column by doing the least.

One number this is not: the existing Internet Lead Response Time widget measures something different and both are true. That one is lead arrival to your first outbound touch of any kind — speed-to-lead. This one is a reply to something a customer actually said. A store can be excellent at one and terrible at the other.

Inventory Completion, and every count is a link

dashboardinventoryreportsdealership

Inventory Completion is on the dashboard, and it is the tile that hands you a job rather than a number.

One percentage — how much of your listing information is actually filled in — and under it four counts: missing photos, missing a price, missing mileage, missing a description. Click any of them and you land on that exact list, filtered and ready to work.

It scores fields, not cars. A lot where every unit is missing one of the four reads 75%, not 0%, because a number that cannot move until the job is finished is a number nobody starts.

Only listed vehicles count. A sold car with no description is not a merchandising problem, and counting it would drag on a score you cannot fix. Call-for-price counts as having a price — it is a decision, not an omission.

"Has photos" means what it means everywhere else in the product: the same check that decides whether a unit goes out to your marketplace feeds, which reads both your photo gallery and older single-photo uploads. A car with one older photo is not reported as having none.

Saved views are linkable now. Any saved report can be opened directly by URL, which is what makes the tile's counts clickable — and it means you can bookmark a view or paste one to a colleague.

Every report in one place

reportsdealershiptruckingshuttlenavigation

If you wanted a report, where you went depended entirely on which report it was. Call and AI-agent charts were under Business → Reporting. The excise-tax return was under Dealership → Reports. The journal export was under Dealership → Accounting. Lot and sales performance was under Dealership → Operations. Website traffic was under Leads → Insights. Saved views and schedules were under Reports. Six homes, no rule connecting them, and nothing telling you the other five existed.

There is now one Reports section. Everything above is in it, grouped by what you are asking about rather than by which part of the product happened to build it:

  • Sales — deals, sales tax, website
  • Operations — inventory, lot, loads, rides
  • Money — accounting, invoices, driver pay
  • Performance — calls, leads

Every old link still works and lands on the new page, so bookmarks, saved browser tabs and links inside old emails are all fine.

It shows your industry, not everyone's

The list is built from what your account actually has. A trucking company sees loads, invoices and driver pay and does not see the excise-tax return or the lot report. A car dealership sees deals, inventory and tax and does not see driver settlements. A shuttle operator sees rides. If you run more than one of these, you see all of them, in one list.

This is the part worth knowing if you were confused before: the reports you could not find were often reports your account was never going to use.

Four new reports for trucking and shuttle

Built as part of the same work, because a single Reports section that only covers car dealerships is not a single Reports section:

  • Loads — every load, its lifecycle state and its money
  • Invoices — carrier billing, by status and terms
  • Driver pay — settlements, deductions, advances and what was actually paid
  • Rides — shuttle rides, by direction and status

All four are full reports, not summaries: filter them, choose your columns, sort them, save the view, schedule it by email, export it to CSV.

What did not change

The excise-tax return, the journal export and the other fixed reports still look exactly as they did. They are laid out the way the Department of Revenue asks for them, or as balanced double entry, and turning those into column pickers would have destroyed the thing that makes them useful. They moved house; they were not rebuilt.

Invoicing itself also stays where it is, under Trucking. Creating and sending an invoice is work you are doing, not a result you are reading — only the invoice report moved.