Changelog
Release notes & version history for Freelance Studio
Version 9.6.0
1 change
▼
- New: Per-client invoice currencies, with USD reporting. You can now set an invoice currency on each client (Billing Defaults on the client form). Invoices and estimates for that client are created, displayed, emailed, and exported to PDF in the client's currency, while every business report continues to total in USD.
Version 9.5.6
2 changes
▼
- New: Notes for Your Tax Advisor. The Tax tab now has a notes section where you can jot down questions and reminders for your tax advisor throughout the year — things like whether an equipment purchase should be expensed or depreciated, or a deduction to double-check at filing time. Notes are saved per tax year (they follow the year selector at the top of the tab), and each note can be marked Resolved once it's been handled and Reopened later if needed; resolved notes stay in the list for history but are visually dimmed and sorted below open ones. Notes are stored in a new
fs_tax_notestable created automatically on update. - New: Notes are included in the Tax Deduction Summary PDF. When you export the tax PDF for the selected year, a "Notes for Your Tax Advisor" section is appended after the deductions table listing each note and whether it's open or resolved, so everything your advisor needs travels in one document. The CSV export is unchanged — it stays a clean numbers-only file. An Export Tax PDF button is also available right in the notes section for convenience.
Version 9.5.3
3 changes
▼
- New: Archive estimates. Estimates can now be archived from the estimate list row menu and the estimate view actions. Archived estimates are hidden from the default Estimates list and only appear when you select the new Archived option in the status filter; viewing an archived estimate offers an Unarchive action that restores its prior status (converted, declined, approved, sent, or draft) based on its recorded history.
- New: Delete declined or orphaned estimates. Previously a converted estimate could never be deleted. You can now delete an estimate when it is not converted, when it has been declined, or when it was converted but its resulting invoice has since been deleted (orphaned). This is enforced both in the UI and server-side in the delete handler.
- New: Estimate-specific "viewed" notification email. When a client first opens an estimate you now receive an estimate-worded notification ("Estimate Viewed", estimate total, and a Valid Until line when set) with a View Estimate button, instead of the invoice-worded email that previously showed a bogus due date.
Version 9.5.1
1 change
▼
- New: Estimates dashboard card. The dashboard now includes an Estimates card showing how many estimates are awaiting client approval and how many are open overall, with a link straight to the Estimates tab in Finances. It's available in the default dashboard layout and the customizer card list like any other card.
Version 9.5.0
6 changes
▼
- New: Estimates. You can now send clients an itemized price quote that they approve with a single click, then convert 1:1 into an invoice. Estimates live in a new Estimates tab in the Finances area, next to Invoices, with a count badge when any are awaiting approval. They share the invoice engine — line items, totals, tax, discounts, the PDF renderer, the public token link, and email sending — so there's no separate, drift-prone machinery to maintain. Under the hood, estimates are stored in the existing invoices table behind a new
doc_typecolumn (invoice|estimate); every financial query defaults todoc_type = 'invoice', so estimates never count as income, accounts receivable, or tax, and the dashboard, reporting, tax, client charts, and recurring logic stay correct automatically. Estimates use a separate numbering sequence (EST-prefix by default), have a Valid Until date instead of a due date, and auto-expire after that date via the existing daily cron. The full lifecycle is draft → sent → viewed → approved (or declined / expired) → converted. - New: Public click-to-approve. The client-facing estimate page shows Approve and Decline buttons (with an optional decline reason) instead of Pay Now, plus the validity date. Approval and decline are handled over AJAX, validated by the estimate's view token — no client login required. You're notified by email when a client approves or declines. There's no e-signature step (estimates are a quick quote, not a contract).
- New: Convert to invoice. An approved estimate converts into a fresh draft invoice in one click, copying the client, project, line items, expenses, tax, discount, and notes, and assigning a new invoice number. The original estimate is kept for history and linked to the invoice it produced. Auto-conversion on approval is available as a setting but is off by default so you can review before converting.
- New: "Send an estimate for this project?" at project creation. When creating a new project, a checkbox in the Billing section builds an estimate pre-filled from the project's services (description, quantity/hours, rate, amount), sets the validity date from your default, and drops you on the estimate edit screen to review before sending — choose draft or send-now.
- New: Estimate settings on the Invoices settings tab — estimate number prefix, next number, default validity period (days), default estimate terms, and the auto-convert-on-approval toggle.
- Note: Estimates are available on all plans and estimate sends are unlimited — they do not count toward the free plan's monthly invoice-send limit.
Version 9.2.0
2 changes
▼
- New: Active / Archived tabs on the project Tasks tab — The Tasks tab inside a project now has Active and Archived sub-tabs (matching the global Tasks list). Active is shown by default and excludes archived tasks; Archived lists archived tasks with a count badge. Previously every task, including archived ones, rendered together with no way to separate them.
- New: Client portal invoice filtering & pagination — The Invoices tab in the client portal now has a filter bar (Status: All / Paid / Unpaid, a Year dropdown, and a From/To date range) and paginates at 10 invoices per page with a result summary and page controls. Filtering and paging happen instantly in the browser; a "Clear" button resets all filters. Previously every invoice was listed in one long unpaginated table.
Version 8.8.0
3 changes
▼
- New: Project Documents Tab — Projects now have a "Documents" tab showing all linked proposals, contracts, and recurring invoices with status badges, amounts, and direct links. Includes quick-create buttons for new contracts, proposals, and recurring invoices that pre-fill the project and client. A tab indicator dot appears when documents are linked.
- New: Recurring Invoice Send-To Contacts — When "Auto-send invoice when generated" is checked on a recurring invoice, a new "Send invoices to" section appears showing checkboxes for each client contact. Selected contacts are saved and used when the cron auto-generates and sends invoices. Contacts reload via AJAX when the client changes.
- New: Set Up Recurring Invoice from Project — The project billing schedule section now shows a "Set Up Recurring Invoice" button when billing frequency is set to anything other than "once". If a recurring invoice already exists for the project, it shows the linked recurring invoice name with status badge instead.
Version 8.7.0
3 changes
▼
- New: Realized Deductions — Annual estimated deductions can now be marked as "Realized" when the actual expense has been logged. This prevents double-counting on the tax report. Each deduction in the Tax page now shows an Estimated or Realized status badge. Clicking "Realize" opens a modal where you can optionally link the deduction to a specific tracked expense for reference. Realized deductions appear dimmed with a strikethrough amount and can be undone at any time.
- New: Merged Tax Report — The Tax Deduction Summary export (PDF and CSV) now produces a single consolidated table of deductions grouped by category, merging tracked expenses and unrealized estimated deductions together. Realized deductions are excluded automatically. Each row shows whether the amount came from tracked expenses, estimates, or both. This gives your CPA one clean list of deductible categories instead of two separate sections that could overlap.
- New: Expense Search — Search expenses by name, category, notes, or project name. The search input appears in the expense filter bar and works alongside existing category and date filters. A "Clear" link appears when any filters are active.
Version 8.6.0
3 changes
▼
- New: Email Delivery Settings — Built-in integration with Brevo and Postmark transactional email APIs. Ensures invoices, proposals, contracts, booking confirmations, and all other emails reliably reach clients' inboxes instead of landing in spam.
- New: Setup Wizard — Step-by-step wizard in Settings → Email Delivery walks users through choosing a provider, creating an account, entering their API key, verifying the connection, and sending a test email. Supports three paths: Brevo (free 300 emails/day), Postmark (fastest delivery), or "I already use an SMTP plugin."
- New: Test Email — Send a branded test email from both the setup wizard and the configured status view to confirm end-to-end delivery.
Version 8.4.0
1 change
▼
New Features
- Finances Hub: New unified "Finances" menu in the WordPress sidebar, consolidating all financial features into one location with sidebar navigation (same pattern as Bookings and Settings).
Version 8.3.3
1 change
▼
- Added: Expense CSV Import — the Settings > Import tool now supports importing expenses in addition to invoices. A type selector at the top lets you choose between "Invoices" and "Expenses" before uploading. Expense import auto-maps columns for Date, Amount, Merchant, Category, Description/Purpose, Notes, and Sales Tax. Expense names are built from Merchant + Purpose (e.g., "Adobe Creative Cloud — Software"). Preview shows expense count, total amount, and a full preview table before committing. Batched processing with progress bar, same as invoice import.
Version 8.3.2
1 change
▼
- Added: Pagination on the Invoices list page. Defaults to 25 per page with options for 10, 25, 50, or 100. Shows "Showing X–Y of Z invoices" info, page number links with ellipsis for large page counts, and prev/next navigation. Filters (status, client) are preserved across pages. Per-page preference is carried in the URL.
Version 8.3.0
3 changes
▼
- Added: CSV Import Tool in Settings > Import. Upload a CSV file containing historical invoice data (from Wave, FreshBooks, QuickBooks, or any other tool) and import clients, projects, and invoices into Freelance Studio. Features include:
- Added: Client Merge — reassign all projects, invoices, proposals, contracts, expenses, tasks, bookings, and contacts from one client to another, then delete the source client. Available via "Merge Into..." in the client card/row action menus. Includes a preview step showing exactly how many records will be reassigned before confirming.
- Added: Client Archive — archive and restore clients from the card/row action menus. Archived clients move to the existing "Archived" tab and are excluded from active views and dropdowns.
Version 7.10.0
1 change
▼
- New: Preset Service Templates are now available on Proposal and Contract forms (previously only on Projects). Select "Load Preset Service" to populate services from your saved templates.
Version 7.9.0
4 changes
▼
- New: Capped Hours for Hourly Projects — When a service is set to "Hourly > From tracked time," you can now enable "Cap my hours" to set a time budget. This shows a retainer-style progress widget on the project view with Hours Budgeted / Used / Remaining and a visual progress bar.
- New: Configurable overage rate — When hours exceed the cap, overage time can be billed at a different rate (e.g., 1.5x). Defaults to the service's standard hourly rate if not set.
- New: Cap reached notifications — When tracked hours cross the cap threshold, the system emails the freelancer automatically. Optionally notify the client too (per-project toggle).
- New: Invoice auto-split — When generating an invoice from tracked time on a capped project, line items automatically split into standard hours (at regular rate) and overage hours (at overage rate) with clear labeling.
Version 7.8.0
3 changes
▼
- New: Email sending for invoices, proposals, and contracts now sends a single email with the primary recipient in "To" and additional contacts in "CC", instead of separate emails to each contact. All recipients see the same email thread.
- New: Send modal redesigned with To/CC selection — users can choose which contact receives the email directly (To radio button) and which contacts get a copy (CC checkboxes). Primary client contact defaults to "To" with additional contacts defaulting to CC.
- New: Email personalization (e.g.,
{client_name}) now uses the selected "To" recipient's name, ensuring the greeting matches the primary recipient even when CC'd contacts have different names.
Version 7.7.0
3 changes
▼
- New: Each time entry now shows both actual logged time and rounded billable time when time rounding is enabled. A subtle "→ 00:20:00" indicator appears below the actual duration (e.g., 00:17:03 → 00:20:00 for 5-minute rounding), making it clear how rounding affects each entry. Only displays when rounding actually changes the value and the entry is billable.
- New: Summary bar on time tracking page now shows total rounded billable hours alongside the raw billable time (e.g., "Billable: 33:37:41 / 35.52 hrs rounded (5-min)"), making it transparent where the uninvoiced dollar amount comes from.
- New: Project view timer tab also shows rounded hours in the billable stat and per-entry rounded durations.
Version 7.5.0
4 changes
▼
- Added: Recurring Tasks tab on Tasks list page — view, edit, and delete recurring task templates from a central location
- Added: Mobile card view for Recurring Invoices list — matching the Invoices mobile design with name, client, frequency, amount, and next invoice date
- Added: Mobile card view for Invoices list — two-column layout with client name, invoice number, status badge, amount, and due date
- Added: Overdue invoice auto-detection — invoices with status sent/viewed/partial that are past due automatically update to "overdue" status when viewing the invoices page
Version 6.7.0
6 changes
▼
- Feature: Solid or gradient option for header color. Users can now choose between a solid color or a two-color gradient for document headers.
- Feature: Gradient direction picker with 8 directional presets (↑ ↗ → ↘ ↓ ↙ ← ↖) for controlling gradient angle.
- Feature: Live color swatch preview showing the current solid/gradient result.
- Feature: Solid/Gradient segmented toggle with animated active state, replacing the single color picker.
- Enhancement: Header preview in settings now reflects gradient in real-time as colors and direction change.
- Enhancement: Light logo thumbnail background also updates with gradient when in gradient mode.
Version 6.4.0
1 change
▼
- Improvement: Dashboard task widget status pills are now inline editable dropdowns — change task status directly from the dashboard without navigating away
Version 6.2.0
1 change
▼
- New Feature: High Contrast Mode — a toggle in Settings > Business > Accessibility that transforms the entire plugin UI to meet WCAG AAA contrast standards (7:1 ratio):
Version 6.1.0
3 changes
▼
- New Feature: Quick timer button on dashboard task list — each task now shows a clock icon on hover that opens a popup timer pre-populated with the task and project; only appears on tasks that have a project assigned
- New Feature: Timer task dropdown now filters by selected project — when a project is selected in the timer widget (on both the dashboard and time tracking page), the task dropdown automatically hides tasks from other projects, showing only relevant tasks; reverts to showing all tasks when no project is selected
- New Feature: Recurring invoices can now auto-populate with unbilled time entries — new "Billable Time" section on the recurring invoice form with options to:
Version 6.0.0
1 change
▼
- New Feature: Task Archiving — archive completed tasks to declutter your Kanban board and task list while preserving them for reference
Version 5.8.0
2 changes
▼
- New Feature: Weekly/biweekly recurring tasks now support day-of-week selection
- Recurring days carried forward to all future recurring instances
Version 5.7.0
7 changes
▼
- New Feature: Popup timer for tasks — click the play button on any task row to launch a small desktop timer window
- Timer popup pre-fills task name, project, and activity; includes start/stop/pause/resume/discard controls
- Timer window title updates with elapsed time for easy tracking from the taskbar
- Auto-closes with confirmation after stopping and saving
- Warns if another timer is already running
- Added to all task views: Tasks list, Kanban board, Project tasks tab, and Client tasks tab
- Timer button only shows on incomplete tasks
Version 5.3.0
6 changes
▼
Added
- Client Task Requests: Clients can now request tasks directly from the client portal — both from the project Tasks tab and a new Tasks section on the portal dashboard
- Portal Dashboard Tasks Section: New Tasks section on the portal dashboard displays all client-visible tasks across all active projects, with status labels, priority indicators, due dates, and a collapsible completed tasks section
- Task Request Modal: Clean modal interface for clients to submit task requests with title, description, priority, due date, and project selection
- "Requested" Task Status: New
requestedstatus for tasks submitted by clients — these appear in the Pending column on the admin kanban board with a distinctive pink "Request" badge - Accept Task Request Flow: Kanban cards with requested status show an Accept button (green checkmark) — clicking it changes the status to Pending and notifies the client
- Task Request Email Notifications: When a client submits a request, an email is sent to the freelancer with full task details and a link to the Tasks board; when the freelancer accepts, a confirmation email is sent to the client with a link to their portal
Version 3.10
2 changes
▼
- Client-Level Tasks: Tasks can now be created directly under a client without requiring a project. This is useful for ongoing client relationship tasks (follow-ups, check-ins, general consulting).
- Internal Tasks Dashboard Widget: When Internal Project Tracking is enabled, a new "Internal Tasks" widget appears on the dashboard showing pending tasks for your internal client.
Version 3.9.0
1 change
▼
- Retainer Service Pricing: Added "Monthly Retainer" as a pricing type option for services
Version 3.8.0
5 changes
▼
- 1099 Year-End Report: Generate a professional PDF summary of all clients paid $600 or more during the tax year
- Duplicate Project: One-click copy a project with all its tasks and milestones
- Batch Mark Invoices Paid: Select multiple invoices and mark them as paid at once
- Export to CSV: Export your data for use in spreadsheets or other software
- Retainer Tracking System: Comprehensive retainer/subscription management
Version 3.7.0
1 change
▼
New Features
- Invoice Wizard Button on Time Tracking Page: Added a prominent "Invoice Wizard" button to the Time Tracking page for quick access to create invoices from tracked time
Version 3.4.0
5 changes
▼
New Features
- Invoice Wizard: New multi-step wizard for creating invoices from the Invoices list or Project view
- Multi-Project Invoices: Create a single invoice that includes items from multiple projects
- Time Entry Grouping Options:
- Service Selection: Choose exactly which services to bill - no longer forced to include all services
- Service Partial Billing: Bill a percentage or custom amount of each service individually for deposits or milestone payments
Version 3.0.0
2 changes
▼
Added
- Invoice Project Modal - New modal interface when creating invoices from projects
Changed
- Invoice Creation from Projects - Completely redesigned workflow
Version 2.13.0
1 change
▼
Added
- Contract Sections Library - Reusable legal sections for contracts
Version 2.12.0
1 change
▼
Added
- Recurring Invoices - Automatically generate invoices on a schedule
Version 2.11.0
1 change
▼
Added
- Payment Reminders - Automated email reminders for unpaid invoices
Version 2.10.0
1 change
▼
Added
- Project Templates - Save and reuse project configurations
Version 2.9.0
1 change
▼
Added
- Time Tracking Reports - Detailed time analysis
Version 2.8.0
1 change
▼
Added
- Task Management - Track project tasks and to-dos
Version 2.7.0
1 change
▼
Added
- Milestones - Track project progress with milestones
Version 2.6.0
1 change
▼
Added
- Google Calendar Integration - Sync deadlines and events
Version 2.5.0
1 change
▼
Added
- Email Templates - Customizable email templates
Version 2.4.0
1 change
▼
Added
- Annual Tax Deductions - Track yearly deductible expenses
Version 2.3.0
1 change
▼
Added
- Client Portal - Secure area for clients to view their information
Version 2.2.0
1 change
▼
Added
- Proposals - Create and send professional proposals
Version 2.1.0
1 change
▼
Added
- Contracts - Digital contract management
Version 2.0.0
1 change
▼
Added
- Time Tracking - Track billable hours
Version 1.0.0
10 changes
▼
Added
- Initial release
- Client management with multiple contacts per client
- Project management with hourly, fixed-price, and retainer billing types
- Invoice generation with line items, discounts, and tax calculations
- Expense tracking with categories and receipt uploads
- Dashboard with YTD revenue, expenses, and tax summary
- Reporting with monthly income/expense breakdown and tax estimates
- Settings page for business info, branding, and tax configuration
- PDF invoice generation
- Tax calculator with federal and state tax rate support
