Release notes

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

New accounts arrive already set up

dashboardreportsnotificationssettingsonboarding

Nobody configures a CRM from zero.

Every feature we ship starts life as an empty table and an empty screen, and an empty screen is where most of them stay. So a new account no longer arrives blank:

A dashboard that already has something on it. The first time anyone opens Dashboard, their home page is built with eight widgets — Needs Attention first, because it is the one that says what to do rather than how last month went, then Sales Funnel, Lead Sources, Internet Lead Response Time, Aging Leads, Steps to Sale, Sales Last 13 Months and Fastest Sellers. Each person gets their own board, so a salesperson can keep a different layout from the owner's.

Three notifications already on. New lead, task due, deal sold — all going to whoever owns the account, as bell notifications. No email and no SMS: nothing leaves your store unless you set that up under Settings → Notifications.

Nine saved views on the reports. Not on your website, No price advertised, Available now and Sale pending on Inventory; Unassigned leads, New leads and No email on file on Leads; Working deals and Sold deals on Deals. They are marked as system views, which means you can rename them, re-filter them or hide them — but not delete them, because hiding is reversible and deleting would not be.

Four job-title roles. General Manager, Sales Manager, F&I Manager and Buyer, ready under Settings → Roles & permissions. Nobody holds them until you put somebody in one.

All of it is yours immediately. Every part can be edited, re-pointed or removed, and none of it comes back if you remove it — the seeding only ever fills in a blank, and it runs once.

Existing accounts are untouched. Nothing was written to any settings you had already. The one change you will notice is that a teammate who has never built a dashboard gets the starter widgets the next time they open theirs. If you want the rest set up on an existing account, ask us — we do not write to a live store's settings without being asked.

Your ageing thresholds and profit objectives, in one place

inventorypricingsettingsreportsdealership

Dealership → Vehicle pricing has two new blocks.

Inventory ageing

Set when a car turns amber and when it turns red. Leave the boxes empty and you get the standard 60 and 90 days.

Those two numbers are now the only definition of "old" in the product. They

  • colour the rows on your inventory report,
  • set the bands on your Lot & sales ageing report and the "over N days" figure beside your in-stock count,
  • and rename and re-filter your saved Aging views to match — set 45 and 75 and "Aging 60+ days" becomes "Aging 45+ days" and filters on 45.

Change them once and the whole product agrees. Before this, the report, the ageing buckets and the saved views each had their own idea of it, and only one of them was yours.

Profit objectives

A dollar amount for retail and one for wholesale, each with its own switch. With a switch on, a car that arrives with a known cost and no asking price is listed at cost plus that objective — a car finalized from an appraisal, or one added by hand with the price left blank.

Two things it will not do:

  • It never replaces a price a person typed. It only ever fills a blank, so switching it on cannot change a price that is on your website today.
  • It never prices a car whose cost you have not recorded. There is nothing to add the objective to, and guessing is worse than leaving it blank.

Every price it sets is written to that unit's own log, with the cost and the objective it used, so the number always has an explanation.

Both switches are off until you turn them on, and only an owner or admin can change any of it.

Reports understand "60 days ago"

reportsinventoryleadsdealership

A saved report used to be able to say "created before September 5th". It could not say "older than 60 days" — so an Aging report you saved was wrong the next morning, and stayed wrong.

Two new filter operators: "older than (days)" and "in the last (days)." Any date field takes them, the cutoff is worked out fresh every time the report runs, and a view built on one keeps asking the same question forever. Aging 60+, Aging 90+, Sold in the last 30 days, Arrived this week.

Three new things to filter inventory on. Has photos — which reads both places photos are stored, so a unit with one older-style photo counts as having one. Without a price and Without a description, which are genuine "nothing here" tests rather than "price is under a dollar".

Seventeen saved views now come with a new account, up from nine. On Inventory: Without photos, Without a price, Without a description, Not on your website, Aging 60+ days, Aging 90+ days, No price advertised, Available now, Sale pending. On Leads: Unassigned leads, New leads, New leads over a week old, Arrived this week, No email on file. On Deals: Working deals, Sold in the last 30 days, Sold deals.

They are named for what they actually ask. "Sold in the last 30 days" is not called "Sold this month", because a rolling thirty days is not a calendar month and the difference would be wrong for most of every month.

Still to come: Not Exporting At All needs per-unit channel data the report engine cannot reach yet, Appointments Today needs an appointments report, and Action Required arrives with the work that defines it.

Your sales scorecard was reporting $0 gross

reportsdealershipdealsfix

If you opened the sales scorecard and saw $0.00 gross on months you know made money, this was a real bug and it is fixed.

What was wrong. The scorecard asked for gross the strict way: it read the desk pricing snapshot and, when there was not one, recorded zero. The dashboard widgets asked the practical way: snapshot if there is one, otherwise selling price − vehicle cost − pack. Same deals, two answers, and the scorecard's answer was $0.

How widespread it was. Not a handful of deals. No sold deal in the system carried a desk pricing snapshot — a snapshot is written when a deal is desked inside Lead Friendly, and a deal imported from a DMS or created through the API never gets one. So the scorecard was reporting $0.00 gross for every sold deal it counted, in every store, not for some subset of them.

What changed. The scorecard now uses the same fallback the widgets use. One definition of gross, in one place, used by the report, the widgets and the database function alike.

What you will see

Your scorecard numbers will go up — to what your dashboard was already telling you. Nothing about your deals changed; only the report's arithmetic did. If the scorecard and a dashboard widget now disagree about the same month, that is worth telling us about, because they are supposed to be the same sum.

Seven months' worth of history was checked against the corrected arithmetic before this shipped, including one month the original investigation had missed.

Cost and gross now follow the permissions you set

permissionsappraisalsreportsexportssecurity

Lead Friendly has had See front gross and See vehicle cost permission switches for a while. Two parts of the product were not asking.

Appraisals

The appraisal worksheet and the appraisals API returned book values, recon, packs, additional costs and target gross to any team member who could open them. Appraisals shipped before granular permissions did, and never caught up.

Both directions are now checked: someone without the switch does not receive the figure, and cannot write it either — a hidden field still posts whatever a crafted request puts in it, so the write side had to be closed as well as the read side.

Three owner reports

The lot report, the journal export and the sales report all export owner money. Each one checked whose deals you may see and none of them checked whether you may see gross at all. The scope half of the question was answered and the permission half was not.

  • Lot and journal now refuse without the relevant switch, and say which switch is missing rather than returning an empty page.
  • Sales is not refused — it drops the profit block and still gives you the tax return, which is what most people open it for. It says the block is missing rather than leaving a silent gap where the numbers were.

Two changes you may notice

Finalizing an appraisal now needs See vehicle cost. Finalizing records what the store paid, so it is a money action. Before this, someone without the switch got an error telling them to fill in a section their screen does not display. The button is now hidden for them instead of leading to a dead end.

A wallet export was cacheable. The billing wallet CSV — amounts, balances and payment references — was the only private export sent without a no-cache header, so it could be left behind in a shared browser's disk cache. It now carries the same headers as every other private export. Nothing suggests this was ever exploited; it was found by reviewing every export path at once.

If a number disappeared for you

That is this change, and the fix is a permission, not a bug report. These are switches on your role, not on you individually: an owner or admin sets them under Settings → Roles & permissions, in the Money group. If you think you should already have had them, you probably should — the switches existed and these screens simply were not reading them.

Job-title role presets

settingspermissionsteam

Roles now start from a job title.

Settings → Roles & permissions has a row of job titles above the permission matrix: Dealer Principal, General Manager, Sales Manager, F&I Manager, Internet Manager, Inventory Merchandiser, Salesperson and Buyer. Click one and all twelve switches fill in the way that seat usually runs at an independent store.

They stay editable. A preset is a starting point, not a separate thing your store has to maintain — nothing saves until you read the matrix and press Save, and changing one switch afterwards is the expected thing to do, not a deviation. Nothing about which preset you picked is stored anywhere; the switches are yours from that moment.

New role takes a job title too, and fills in the name and the role it starts from as well as the switches, so a custom "Used-car manager" never exists for even a moment carrying a name that promises more than its permissions do.

Two things the screen tells you before you press Save. Only four of the twelve permissions are enforced across the product today — See front gross, See vehicle cost, Play call recordings and Delete records — so the picker names, in amber, exactly which of a job title's switches will take effect and which are still only a description. And the six built-in roles cannot be re-based, so applying a job title to Manager fills its switches but leaves it a Manager everywhere the flags aren't consulted; create your own role if you want both halves.

Nothing changed for any existing role. No permissions were altered anywhere — this adds a way to fill the matrix in, and only when somebody asks for it.

AI Auto Responder

aileadssmsemail

Speed to lead, without a human racing the clock.

Turn on Settings → AI Auto Responder and every new lead — website form, ADF, marketplace — gets a reply within seconds: thanking them, confirming the vehicle they asked about (with live matching inventory for context), offering to set a time to come in, and — when they mention financing — a real secure credit application link. Replies land in the contact's normal conversation thread and timeline, so your team sees every word.

Goes quiet? The responder follows up on your cadence (you pick how many times and how far apart). Replies from the customer end the sequence instantly, and any lead that moves past "contacted" belongs to its rep.

Asks for a person? The AI stands down, a task lands on the assigned rep, and the timeline records the handoff.

Guardrails are not optional: the per-store switch ships off, SMS never quotes prices or payments, nothing ever promises loan approval, and every text passes the same compliance gate as the rest of the platform — quiet hours (8pm–8am customer-local), opt-outs, DNC, and consent rules.

Appraisals — books, recon, offer, purchase

dealershipinventoryappraisals

"What will you give me for mine?" now has a screen.

Dealership → Appraisals: a list of every worksheet with status filters (draft, offered, expired, purchased, declined) and a worksheet mirroring the appraisal screens dealers know:

  • Vehicle — VIN decode fills the specs; everything stays editable.
  • Books — manual book values (source, retail, wholesale, as-of).
  • Recon estimate — itemize it line by line, or use the store average.
  • Summary — target selling price − recon − packs − additional − target gross = appraisal value, live as you type and stored on every save.
  • Purchase info — buyer, source, lienholder, payoff, price paid.
  • Finalize Purchase — stocks the unit into inventory at purchase price + recon, links it back, and closes the customer's trade-in record.

Trade-ins get a Create appraisal action on the contact page, equity mining shows an Appraisal open → badge when a worksheet exists, and the store defaults (target gross pre-fill, recon average, offer validity days) live behind the Defaults button on the list.

Walkthroughs and 2-minute task articles

helpdocsgenie

Nobody should have to guess where a button is.

Help & FAQ now opens with How do I… — short task articles grouped Everyday, Inventory & lot, Reporting and Setup. Each one names what you'll end up with and the exact click path, and links straight into the Setting it belongs to. Search filters them as you type.

Below that: a full walkthrough per module — Inventory, Leads, Deal desk, Credit & F&I, Documents, Website and Genie. These are presenter scripts, step by step, written to be read aloud while somebody drives the screen. Use them for training a new hire or onboarding a new store.

Genie answers from the same material, so asking "how do I set holiday hours" in the assistant gets you the same steps the page shows.