Changelog - What's New - Docket Ops

What's New

Stay up to date with the latest features, improvements, and bug fixes we've shipped.

v2.23.0

Free Add-On Promo, Timesheets Redesign & Fleet Management

New Free add-on promo — trial members can claim one premium add-on free forever (as long as their subscription is active) before February 16, 2026
New Promo claim page with 30+ add-ons organized by category (Operations, Billing, Marketing, Integrations, Advanced) and one-click claim flow
New Dashboard promo banner — purple gradient announcement with countdown urgency for the free add-on offer
New Vehicle edit page — full edit form for fleet vehicles with all fields pre-populated including registration, insurance, and oil change tracking
New Overtime report summary stats — shows total employee count, total hours worked, and total overtime hours at a glance
Improved Redesigned timesheets page with pill-style period filters, employee card grid with progress bars, polished data table, and mobile responsive layout
Improved Google Places address autocomplete now works for all tenants by falling back to the platform API key when no tenant-specific key is configured
Improved Overtime report now returns individual first/last name fields for proper avatar initials rendering
Fixed Fixed mass email sending failing with "undefined method Database::lastInsertId()" — switched to Database::insert() which returns the ID natively
Fixed Fixed vehicle creation failing due to 18 missing columns (VIN, fuel type, insurance, odometer, etc.) in the production vehicles table
Fixed Fixed 404 error when updating a vehicle — edit form was posting to the wrong URL
Fixed Fixed timesheet approval failing with "Data truncated for column status" — added approved to the status ENUM
Fixed Fixed overtime report breaking with "Cannot read properties of undefined (reading total_employees)" — API was missing the summary object
Fixed Fixed address autocomplete 500 error from incorrect relative path to platform config file
v2.22.0

Mobile Dashboard UX, Service Address Notes & Error Page Redesign

New Sticky bottom quick-action bar on mobile dashboard with shortcuts to Home, Bookings, New, Routes, and Customers
New Notes field on customer service addresses — add placement notes, gate codes, or special instructions per address
Security Removed SMTP credential logging from email service and deleted publicly accessible migration/debug scripts
Fixed Removed all debug console.log and error_log statements from production views and controllers
Fixed Added missing admin authorization check on feature request status updates
Improved Live staff map reduces height on mobile for better viewport usage and hides GPS coordinates to save space
Improved Stats grid displays as a 2-column layout on mobile instead of collapsing to a single column
Improved Quick actions grid adapts to 4 columns on tablet and 2 columns on small mobile screens
Improved Toast notifications go full-width on mobile and are positioned above the bottom action bar
Improved Chart cards, welcome hero, badges, and delivery date tiles get compact treatment on small screens
Improved Map control buttons enlarged to 36px touch targets on mobile for easier tapping
Improved Swipe-hint gradient fade added to horizontally scrollable data tables on mobile
Improved Header search bar adapts width for smaller viewports
Improved Redesigned 500 error page with friendly messaging, rotating humorous excuses, and a "the team has been notified" reassurance box
Fixed Service address notes field now included in API responses, booking form autofill, and CSV import/update
Fixed Fixed delivery and booking item hover margin overflow on mobile viewports
Fixed Synced full database schema with latest migration changes for service addresses and widget preferences
v2.21.0

Dashboard UX Overhaul

Improved All error and success messages across the entire dashboard now appear as non-blocking toast notifications instead of browser alert popups
Improved Improved color contrast on secondary text throughout the dashboard for better readability and WCAG AA compliance
Improved Added accessibility labels to checkboxes, close buttons, and interactive controls across bookings, customers, and invoices
Improved Payment recording and invoice sending buttons now show a loading spinner with disabled state during processing
Improved Sending an invoice now shows a success toast and loading state instead of a blocking confirmation dialog
New Bookings page now shows a mobile-friendly card layout on small screens instead of hiding table columns
New Added learning tip to the Properties page to help new users understand property profiles
Improved Customers and invoices pagination now shows "Page X of Y" position info to match the bookings page
Improved Added shared form validation error styles, disabled button states, and standardized empty state design to the global stylesheet
v2.20.2

Code Cleanup & Dispatch Board Polish

Fixed Dispatch board drag-drop errors now show non-blocking toast notifications instead of browser alert popups
Fixed Assigning a task to a driver now shows a success toast confirming the action
Fixed Removed debug console.log statements that were cluttering the browser console on the dispatch board
Fixed Removed debug logging from route stop and HQ assignment server endpoints
Fixed Removed SMTP credential debug logging from marketing email handler
Fixed Removed unused debug form submission code from the booking creation page
v2.20.1

Dashboard UX Polish

Fixed Operations section now shows the actual product name instead of hardcoded "Dumpster" and "Yard" labels
Fixed Operations address line no longer appends an incorrect "County" suffix to the customer name
Fixed Create Invoice and Driver Notes buttons in operations now link to the correct pages instead of doing nothing
Fixed Weekly comparison widget shows "N/A" when there is no prior-week data instead of a misleading 0%
Fixed Welcome hero no longer shows a hardcoded company name — uses the tenant business name
Fixed Modal dialogs no longer render behind the dashboard customizer panel due to z-index stacking
Improved Today's Operations and Charts sections now respect dashboard widget visibility preferences
Improved Charts display a friendly empty state when there are no bookings yet instead of rendering blank
Improved Operations grid and sidebar reflow properly on tablets and mobile screens
Improved Delivery times that are not yet scheduled appear as a muted "TBD" badge instead of plain text
v2.20.0

Address Autocomplete, Dashboard Customization & Recurring Invoice Controls

New Customer service addresses table — store multiple service addresses per customer with labels (Home, Office, Job Site), GPS coordinates, and placement notes
New Google Places address autocomplete — type-ahead address search on booking forms with automatic city/state/ZIP parsing
New Service area validation on address entry — real-time badge shows whether the selected address is within your service area
New Dashboard widget preferences — show, hide, and reorder dashboard widgets per user
New Auto-send invoice toggle on recurring bookings — choose whether invoices are sent automatically or created as drafts
Improved Booking create and edit forms now show saved customer addresses in a dropdown for quick selection
Improved Google Places can be enabled per tenant in settings
v2.19.0

Dashboard Cleanup

Improved Reorganized dashboard layout and removed duplicate stats sections for a cleaner overview
v2.18.0

Per-Product Custom Booking Fields & Duplicate Product

New Inline custom field builder on the product form — add text, textarea, dropdown, number, date, and checkbox fields that customers fill in when booking this product
New Duplicate product — one-click copy of any product including pricing, settings, service area, and all custom booking fields
New Custom fields stored per product as JSON — each product carries its own field definitions, no separate settings page needed
New Dropdown fields support configurable options — enter one option per line and they appear as a select menu on the booking form
Improved Duplicated products start as inactive so you can review before going live
Fixed Fixed "Call to undefined method flash()" error on KanbanController and other controllers — added missing flash() method to base Controller class and global helper function
v2.17.0

Industry Booking Fields — Smart Forms for Every Industry

New Industry-specific booking form fields — each industry now gets tailored questions (e.g. debris type for dumpster rental, pest type for pest control) that appear on the booking widget automatically
New Booking Fields settings page — toggle, reorder, and customize which questions appear on your booking widget under Settings > Booking Fields
New Custom booking fields — create your own text, dropdown, checkbox, or textarea fields that appear alongside industry-recommended ones
New Field values saved per booking — customer responses are stored and displayed on the booking detail page in a "Service Details" card
New Widget API serves active fields — the booking widget dynamically renders enabled fields with validation for required fields
New 20 industry field sets — pre-built questions for dumpster rental, portable toilet, bin cleaning, bounce house, junk removal, lawn care, pressure washing, pool service, pest control, plumbing, electrical, HVAC, cleaning, moving, landscaping, roofing, painting, fencing, and equipment rental
New Common fields across all industries — gate code, placement instructions, property type, HOA approval, and referral source fields available for every business
v2.16.0

Mass Email & Welcome Emails

New Mass email system — send targeted emails to all tenants or filtered groups with customizable templates from the admin panel
New Email diagnostics dashboard — monitor delivery stats, bounce rates, and troubleshoot email issues from the admin panel
New Welcome email sent on signup — new users receive a branded welcome email after completing registration
Fixed Fixed welcome email failing due to HEREDOC string concatenation expressions in email template
v2.15.0

Onboarding Add-ons, Saved Favorites & Auth Redesign

New Paid add-ons now shown during onboarding feature selection with pricing — preview what's available in the Marketplace before you finish setup
New Save add-ons for later — bookmark paid add-ons during onboarding and they'll be highlighted in the Marketplace when you're ready
New Saved add-ons summary on the review step — see all your bookmarked add-ons with pricing before launching your CRM
New Marketplace "Saved" filter — quickly find your bookmarked add-ons with a dedicated filter button and yellow bookmark badges on cards
Improved Modernized login and register pages — full-bleed background images with blur and gradient overlay, matching the homepage header navigation
Improved Sticky action bar on all onboarding steps — the Next/Back buttons stay visible at the bottom of the screen while scrolling
Improved Saved add-ons are now stored in the database — favorites persist across devices and browsers instead of being lost when clearing browser data
Improved Homepage sections consolidated — merged "What You Get" and "Integrations" into a single section to reduce visual clutter
Improved Mobile background images optimized — heavier blur and darker overlays on smaller screens for better readability
Fixed Fixed onboarding paid add-on categories showing empty sections when all features in a category were paid-only
v2.13.0

Webhook System for Real-Time Event Notifications

New Complete webhook system — subscribe to 10 event types (bookings, customers, invoices) via REST API or dashboard
New Webhook management dashboard — create, test, enable/disable, and monitor endpoints with delivery stats
New HMAC-SHA256 signed payloads — every delivery includes X-Webhook-Signature header with timestamp-based signatures (whsec_* secrets)
New Automatic retry with exponential backoff — failed deliveries retry up to 5 times (1m, 5m, 30m, 2h, 6h)
New Full webhook CRUD via REST API — 7 new endpoints: list, create, get, update, delete, ping, and delivery logs
New Delivery log viewer — inspect every webhook delivery with status, HTTP response code, timing, and error details
New Test ping functionality — send a test event to verify your endpoint is receiving and processing webhooks correctly
Improved Webhooks section added to interactive API documentation with cURL examples, event reference, and signature verification guide
Improved Webhooks nav link added to dashboard sidebar under Settings
Security Webhook URLs must be HTTPS — plaintext HTTP endpoints are rejected
Security Auto-disable after 15 consecutive failures — prevents hammering unresponsive endpoints
Security Webhook secrets shown once on creation — never exposed in list or get responses
v2.12.0

Full REST API with Key Management & Documentation

New Full REST API (v1) for custom integrations — CRUD endpoints for customers, bookings, products, and invoices
New API key management dashboard — generate, revoke, and monitor API keys with usage stats
New Bearer token authentication with SHA-256 hashed API keys (lc_live_* format) — keys shown once on creation
New Scoped permissions per API key — restrict access to specific resources (customers:read, bookings:write, etc.) or grant full access
New Per-key rate limiting with configurable limits (60–600 requests/min) and X-RateLimit headers
New API request logging — every call tracked with IP, user agent, endpoint, status code, and response time
New Interactive API documentation page with cURL examples, error codes, pagination, and endpoint reference
New API key expiry support — set keys to expire after 30 days, 90 days, 1 year, or never
Improved API Access link added to Settings navigation in dashboard sidebar
Improved Customer import now adds service addresses to existing customers instead of skipping duplicate rows
Fixed Fixed task status update 500 error — added in_progress and picked_up to bookings status ENUM
Fixed Fixed task status update 500 error — added missing started_at, delivered_at, completed_at columns to bookings table
Security API keys stored as SHA-256 hashes — plaintext keys never persisted to database
Security All API endpoints enforce tenant isolation — queries scoped to authenticated key's tenant
Security API Access requires the paid add-on to be active — feature-gated at controller level
v2.11.0

Booking Editor, Smart Billing & Weekend Rates

New Full booking edit page — update customer info, service address, schedule, notes, and products on existing orders
New Add, remove, or swap products on an existing booking with live price recalculation
New Weekend rate option on products — set a separate rate for Saturdays and Sundays that replaces the daily rate
New Smart rate auto-detection — booking form automatically switches to weekly rate for 7+ day rentals and monthly rate for 28+ day rentals
New Manual days/weeks override — type a custom period count in the booking form without dates overwriting it
Improved Billing period and billing start/end dates are now opt-in behind checkboxes — old defaults (daily rate, delivery/pickup dates) remain the default
Improved Pickup Date moved to main schedule row alongside Delivery Date and Time Slot for cleaner layout
Improved Edit Order button added to booking detail page action bar
Improved Product form weekend rate field shows clear hint: "Replaces the daily rate on Saturdays & Sundays"
Fixed Fixed date picker selecting the wrong day — clicking Feb 2 no longer selects Feb 1 due to UTC timezone shift
Fixed Fixed 4-week rental showing "28 Days" instead of "4 Weeks" at the weekly rate
Fixed Fixed minimum rental days comparison when billing in weeks or months (now converts to matching unit)
v2.10.0

Notification Center, Inventory Tracker & Homepage Refresh

New Notification center now shows booking activity and payment history alongside email/SMS logs
New Filter tabs in notification center work across all data sources — bookings, payments, emails, and SMS
New Activity items link directly to the related booking or invoice with a View button
New Added deployed items tracker to inventory page — see which units are out, where, and for how long
New Added "Latest Insights" blog section to homepage showing recent WordPress posts
New Added Blog link to the main homepage navigation
Improved Modernized homepage footer with 4-column navigation layout, social links, and gradient background
Improved Inventory nav link now always visible in the dashboard sidebar under Catalog
Improved Admin panel add-ons dropdown now includes all paid features organized into 6 categories
Improved Notification center stats updated to show "Total Activity" across all sources
Fixed Fixed notification center filter tabs not working — tabs now filter across merged activity data
Fixed Fixed payments tab showing blank on notification center — booking and invoice payments now included
Fixed Fixed 500 error on notification log caused by number_format receiving a string instead of float
Fixed Fixed homepage section headers rendering badge and title on one line instead of stacking
Fixed Removed signup form from footer that was no longer needed
v2.9.0

Invoices, Estimates & Auto-Billing

New Invoices are now auto-created when a booking is made through the widget
New Widget payments automatically mark the invoice as paid
New Recurring product invoices are now auto-generated each billing cycle
New Added daily hours bar chart to the timesheets page
New Added flash message notifications to the dashboard for form success/error feedback
Improved Estimate public view now renders correctly for customer-facing links
Improved Recurring billing invoices now use correct schema fields and track balance due
Fixed Fixed invoice and estimate creation failing silently due to missing database columns
Fixed Fixed invoice create page 500 error when booking had null delivery address
Fixed Fixed crews page 500 error from referencing non-existent crew_members columns
Fixed Fixed overtime report SQL error violating GROUP BY rules
Fixed Fixed /dashboard/workers/create returning 404 - now opens the worker modal
Fixed Fixed undefined $isTrialing warning on dashboard
Fixed Fixed estimate public view 500 error from missing layout file
Fixed Fixed estimate creation failing due to legacy database schema conflicts
Fixed Fixed payments table missing columns needed for invoice detail view
New Customer import now supports service address fields (Service Address, City, State, ZIP Code)
New Import multiple service addresses per customer by repeating rows with the same email
New Auto-detection of service address columns from Jobber, Housecall Pro, ServiceTitan, FieldEdge, and QuickBooks exports
Improved Customer import sample CSV now includes service address columns with example data
Improved Import upload page now shows instructions for importing multiple service addresses
New Full multi-currency support — set your currency in Settings and see the correct symbol (€, £, $, ¥, etc.) across the entire dashboard, invoices, estimates, quotes, booking widget, and reports
New Customer import now accepts email OR phone number — both are no longer required, making it easier to import commercial clients
Improved Tax rate setting now clearly accepts a percentage value (e.g. 20 for 20% VAT) with helper text
Fixed Fixed currency symbol always showing $ regardless of currency setting
Fixed Fixed tax rate calculations that could apply incorrect rates on invoices and estimates
Fixed Fixed customer import failing when first or last name fields were blank
Fixed Fixed route optimization crash when GPS coordinates were stored as strings
Fixed Fixed customer list page crashing when a customer had no email address
New Added Mollie/iDEAL payment gateway — accept payments via iDEAL, credit cards, Bancontact, SOFORT, and other European payment methods
New Mollie configuration in Settings with API key setup, test mode toggle, and webhook URL display
New Mollie webhook handler for automatic payment status updates
New Delete All customers feature — bulk delete all customers (with optional search filter) from a single button
New Added CardPointe payment gateway (by Fiserv/CardConnect) with CardSecure hosted tokenization for PCI-compliant card processing
New Added Invoice / Bank Transfer payment method — skip online payments and send invoices by email with bank transfer instructions
New Added country selection in business settings with 50+ countries
New Added 65+ worldwide timezones across North America, Europe, Asia/Pacific, South America, and Africa/Middle East
New Service area now supports both miles and kilometers — choose your preferred distance unit in settings
Fixed Fixed tax rate field rejecting European VAT rates (e.g. 21%) — column widened to support rates up to 99.99%
Fixed Fixed service area distance validation always showing "miles" regardless of tenant distance unit setting
v2.8.0

Kanban Board Redesign

New Redesigned Kanban boards index page with modern card layout, stats overview, and search
New Added stats row showing total boards, active cards, and stages at a glance
New Added search bar with instant client-side filtering by board name, description, or customer
New Added grid/list view toggle for Kanban boards overview
Improved Board cards now show color accent bars, stat pills, customer avatars, and relative timestamps
Improved Templates section redesigned with cleaner layout and hover animations
Improved Empty state now shows a visual mini-kanban illustration instead of plain text
Improved Fully responsive design with optimized mobile layout
v2.7.2

CSV Exports, Admin Security & Upload Hardening

New Added CSV export for customers - export your full customer list with booking stats
New Added CSV export for invoices - export filtered invoices with payment status and amounts
Improved Added rate limiting to admin login to prevent brute-force attacks
Improved Fixed open redirect vulnerability in admin login redirect
Improved File uploads now verify MIME type matches extension using server-side content inspection
Improved Added file size limit (10MB) to expense receipt uploads
Improved Automatic error reports now emailed to support team on 500 errors with full context
v2.7.1

Billing Fixes, Security Hardening & Widget Fix

Fixed Fixed booking widget showing raw HTML/JSON instead of rendering when visited directly
Fixed Fixed subscription quarterly billing not creating invoice records or sending email notifications
Fixed Fixed recurring bookings creating duplicate bookings and charges if cron job ran twice
Fixed Fixed weekly recurring booking date calculation overshooting by an extra week
Fixed Fixed Stripe auto-charge not linking to the correct customer payment method
Fixed Fixed expired trial processing applying changes across all tenants instead of the current tenant
Fixed Fixed fallback booking items inserting a phantom product ID instead of null
Fixed Fixed password reset emails not delivering - now uses EmailService (SMTP/SendGrid) with branded HTML template
Fixed Fixed newly added team members unable to log into the worker portal (password stored in wrong column)
Fixed Fixed booking CSV export missing ZIP codes and notes (wrong column names)
Improved Fixed SQL injection vulnerability in feature billing discount lookup
Improved Stripe webhooks now reject unverified payloads when webhook secret is not configured
Improved Login redirect now validates URL is internal to prevent open redirect attacks
Improved Widget embed pages now set proper CORS and X-Frame-Options headers for iframe embedding
Improved Added rate limiting to worker portal login to prevent brute-force attacks
Improved Error pages now show a branded 500 page instead of exposing stack traces to users
Improved Subscription billing now applies pending service credits to quarterly invoices automatically
Improved Subscription invoices now include line items with service count breakdown
Improved Added idempotency guards to prevent duplicate billing on cron retries
v2.7.0

Customer Addresses, Quick Create & Timesheets

New Added separate billing and service address sections for customers
New Support for multiple service addresses per customer - perfect for commercial clients
New Added "Same as billing" checkbox to simplify customer data entry
New Added sitewide "+ New" quick create button in dashboard header
New Quick create dropdown provides fast access to create bookings, customers, products, workers, expenses, and invoices
New Added default SMS confirmation for bookings when no SMS template is configured
Improved Completely redesigned timesheets page with proper dashboard theme and structure
Improved Timesheets now uses standard button styles and mobile responsive design
Improved Bin cleaning service details (garbage company, pickup day) now included in booking confirmation emails
Improved Customer detail view now shows both billing and service addresses
Fixed Fixed widget category filter not applied on initial load of step 2
Fixed Fixed bin cleaning details not being stored in database
Fixed Fixed null user_id error in timesheets worker dropdown
Fixed Fixed service_radius column migration for tenants table
v2.6.0

Blog Redesign & Product Form Fixes

New Completely redesigned blog with impactful hero section and featured posts
New Added sidebar to single blog posts with LayCor features highlights
New Added 14-day free trial CTA widgets throughout the blog
New Added industry tags widget linking to dumpster, portable toilets, equipment rental, bin cleaning, and bounce house pages
New Added related articles widget on single posts
New Added categories bar navigation on blog home
New Added newsletter signup section on blog
New Added image crop and position tool - drag, zoom, rotate and set aspect ratio before upload
New Added automatic image optimization - large images are compressed and resized automatically
Improved Enhanced blog hero with search bar and gradient text
Improved Improved author box design on single posts
Improved Added sticky CTA that follows reader as they scroll
Improved Full mobile responsive design for all new blog components
Improved Blog now features modern image effects with glow, shadows, and hover animations
Improved Removed comments section from blog single posts for cleaner design
Fixed Fixed SMS notifications - subscription users now correctly use platform Twilio credentials
Fixed Fixed product image not saving when updating existing products
Fixed Fixed ZIP codes not saving in product service area settings
Fixed Fixed ZIP code column overflow when saving multiple zip codes
Fixed Improved service area form - restriction type dropdown now properly shows saved value on edit
Fixed Added error logging for service area save failures to help troubleshoot issues
v2.5.0

Dashboard Improvements & Bug Fixes

New Added "What's New" changelog page to dashboard navigation
New Added image preview for file uploads - see your selected image before saving
New Added Font Awesome icon picker for service add-ons - customize how add-ons appear in the booking widget
Improved Simplified widget page - removed industry dropdown for unified widget experience
Improved Added comprehensive mobile responsive styles for tasks, marketplace, and filters
Improved Modernized booking widget add-ons section with icons for better visual appeal
Improved Simplified bin cleaning booking - removed individual bin type selectors, use Extra Bin add-on instead
Fixed Fixed product specifications (dimensions, capacity, weight limit) not saving on update
Fixed Fixed branding color picker - hex codes can now be typed directly
Improved Improved bin cleaning widget - price summary now always visible and updates in real-time when bins are added
Improved Reorganized bin cleaning form with clear Service Details and Schedule sections
Fixed Fixed main booking widget - extra bins now properly update pricing in real-time
Fixed Fixed beta banner layout on mobile - links no longer wrap
Fixed Fixed tasks page mobile layout - detail panel hidden with direct navigation
Fixed Fixed marketplace sidebar sticky issue on mobile
Fixed Fixed messaging page stat boxes layout on mobile
Fixed Fixed file upload styling for product images and logos
v2.4.0

Security & Widget Improvements

Security Enhanced security for booking widgets with input validation
Improved UX improvements for booking widget forms
Fixed Fixed widget display issues on mobile devices
v2.3.0

Multi-Industry Booking Support

New Added multi-date selection for day-rate services
New Added capacity/per-person pricing for venues and classes
New Product form now supports multi-industry booking fields
Improved Backend improvements for handling different booking types
v2.2.0

Bin Cleaning Widget

New Added specialized bin cleaning booking widget
New Trash day scheduling with auto-scheduling for next day service
Improved Cleaned up widget HTML and CSS
v2.1.0

Product Enhancements

New Variable and flat rate pricing options
New Customer notification settings per product
New Recurring service settings for subscription products
Improved Improved product form layout and organization