Highlights
Quantities for Services. Services now support quantities, matching the controls already available for upgrades and supplies. Quantities carry through quote setup, presentations, proposal PDFs, checkout, and ServiceTitan sync.
More useful reporting exports. Report CSVs now include a sales commission column and can be filtered by team member and quote status, so you can reconcile payroll without opening each job. Non-owners export only their own quotes.
ServiceFusion integration (beta). Teams with access can connect ServiceFusion, map fields, and sync quote and customer activity, with clearer status messages in SetSale.
SetSale visual refresh. Updated logos, brand color, favicons, navigation, dashboard cards, proposal PDFs, and email styling create a cleaner, more consistent experience.
Improvements
Clearer Palmetto setup guidance. Contractors who have not connected Palmetto Comfort Plan now see financing-page guidance explaining the integration and how to get started.
Cleaner quote settings. The Quote General settings page is now organized into independent save cards, so you can update one area at a time.
Feature text stays current. SetSale now prompts you to regenerate feature text when the equipment on a quote changes, so descriptions never reference old equipment.
Recoverable quote deletions. Deleting a quote is now a soft delete with an admin-only audit trail, so removed quotes can be recovered and deletions are tracked.
More reliable JB Warranties quoting. SetSale keeps a longer-lived warranty catalog cache and can continue quoting from the last good catalog during temporary JB Warranties outages.
ServiceTitan sync resilience. Failed quote syncs are now retried automatically by the scheduled sync flow, and quote activity shows friendlier error messages instead of raw technical details.
JB Warranties reporting accuracy. The live warranty dashboard now calculates detach rate from the actual signal captured when a salesperson removes an auto-suggested warranty from a won quote.
Easier navigation. Nested drill-down pages now include back navigation, brand dropdowns on the equipment pricebook are sorted alphabetically, and long select menus inside dialogs scroll reliably.
Fixes
Fixed a live quote pricing mismatch where the price shown during presentation and checkout could drift from the contractor-authored option price when the selected financing plan used a different dealer fee.
Fixed accepted quotes so stale edit sessions can no longer change the selected repair or replacement option after checkout, keeping the app total aligned with the signed agreement.
Fixed mixed-system quotes so warranties recalculate correctly after systems are edited, and furnace BTU details are preserved when one system requires them and another does not.
Fixed generated feature text so AC and furnace systems are no longer mislabeled as heat pump or dual fuel when matchup data is incomplete.
Fixed the Warranties section so rows keep a stable order when you edit a single warranty, instead of reshuffling on multi-system quotes.
Fixed distributor price and inventory imports to safely repair duplicate distributor catalog rows instead of skipping valid updates.
Fixed the new-quote flow to warn when a linked customer is archived and to surface load errors instead of showing an empty form, and fixed date custom fields that could shift by a day.
Fixed rare crashes in presentation and quote overlays caused by malformed scroll events.
Fixed the avatar dialog so it closes after saving during onboarding.
Fixed remaining admin activity views to keep customer data anonymized.
Maintenance
We also shipped behind-the-scenes work: design-system documentation, a TypeScript 7 upgrade, database and logging performance improvements, and dependency and security updates.
