> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cortado.pro/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> Latest updates and improvements to Cortado Pro

<Update label="August 18, 2026" description="v0.12.74" tags={["Feature", "Platform"]}>
  ## Custom Add-ons on Quotes

  Optional quote extras no longer have to come from your catalog. In the quote builder, **Add Custom Add-on** lets you type a one-off name, price, unit, and quantity for that quote. Catalog items flagged as quote add-ons still work the same way.

  ## Payment Receipt PDFs

  After a scheduled payment completes, you and the customer can download a receipt PDF for that schedule — from the invoice in Cortado or from the customer portal. Receipts stay hidden while a payment is still processing.

  ## Gmail Missing Send Permission

  If Google lets someone connect Gmail without granting "Send email on your behalf," Cortado now flags the account with a **Missing send permission** badge (separate from Expired) and explains how to reconnect.

  ## Quotes Table Shows Event Date

  The Quotes table now lists **Event Date** instead of Published, sorted soonest-first. Multi-event quotes show the first date with the rest a click away.

  ## Bug Fixes

  **Email Line Breaks Stay Intact** - Outbound email no longer flattens paragraphs, lists, and signature line breaks into a single run-on line in the plain-text copy customers see.

  **Custom Event Types on Revenue** - The Revenue by Event Type breakdown now shows the labels you configured for custom event types, not an internal code name.
</Update>

<Update label="August 15, 2026" description="v0.12.73" tags={["Feature", "Platform"]}>
  ## Gibby, Anywhere You Work

  Gibby — Cortado's AI assistant — is now a floating orb on most pages, not only a sidebar destination. Click the orb or press `Cmd+I` / `Ctrl+I` to search records, draft a message, or pick up a previous conversation without leaving the page.

  When Gibby needs more information, it can ask structured follow-up questions in the conversation. A **Build a request** starter walks you through two quick questions before it starts working. Gibby only takes actions your role already allows.
</Update>

<Update label="August 14, 2026" description="v0.12.72" tags={["Fix", "Invoicing"]}>
  ## Bug Fixes

  **Sales Tax on Add-On Offers** - Fixed sales tax not being applied to quote add-on offers even when "Apply Sales Tax to All Items" was turned on.

  **Due Dates No Longer Shift a Day Early** - Payment schedule due dates could display a day earlier than the date you picked if your timezone is behind UTC (all of the US, for example). Dates now show exactly as entered.

  **Short Links Fully Live** - The short, trackable customer links introduced on August 7 are now fully enabled in production. Copy-link buttons on leads, quotes, invoices, and events reliably generate a short `/p/` link instead of an occasional long fallback link.

  **Invoice and Quote PDF Downloads Fixed** - The PDF button on an invoice previously showed "PDF download coming soon" and did nothing. It now downloads a real PDF, and quotes gained the same download button — no more waiting on a customer portal link to get a copy.

  **In-Flight ACH Payments Now Visible** - An ACH payment that's still processing now shows clearly on the invoice page instead of appearing to have vanished.

  **Payment Alerts Send Reliably** - Fixed payment and quote-accepted alert emails to your team occasionally failing to send.
</Update>

<Update label="August 14, 2026" description="v0.12.71" tags={["Feature", "Platform"]}>
  ## Granular Team Permissions

  Custom roles now support fine-grained permissions across every area of Cortado — leads, events, quotes, invoicing, payments, settings, and more — instead of an all-or-nothing Admin toggle. Under Settings > Team, assign teammates exactly the access they need, and the app now tells them clearly when a page is off-limits instead of silently redirecting them. Existing roles and access are unaffected.
</Update>

<Update label="August 13, 2026" description="v0.12.70" tags={["Feature", "Invoicing"]}>
  ## Sales Tax Stays Applied

  Turning on "Apply Sales Tax to All Items" now keeps applying it going forward — line items you add afterward are automatically taxed too, so you don't have to reselect it every time.

  ## Better Support Context

  Messages sent through in-app support now automatically include the page you were on, so our team can help faster without needing to ask.

  ## Bug Fixes

  **Email Templates With No Variables** - Fixed an error that could occur when saving an email template whose subject and body don't reference any variables.

  **Correct Alert Links** - Payment and quote-accepted alert emails to your team now link to a page that actually exists, instead of a broken URL.
</Update>

<Update label="August 12, 2026" description="v0.12.69" tags={["Feature", "Integrations"]}>
  ## Google Calendar Description Templates

  Control what appears in the description of events synced to Google Calendar, using the same template variables available elsewhere (event details, quote and invoice info, notes, and more). The default description was also reshaped into a cleaner run-sheet style: event type, guest count, and space for your own notes.

  ## Event Directions

  The Directions card on an event's page now shows a live map with driving time and distance from your business address to the event location, plus an "Open in Maps" shortcut.

  ## Trackable Portal Links in Emails

  A new "Lead Portal Link" / "Event Portal Link" variable lets you insert a tracked link straight to a lead's or event's customer portal into a compose/reply email or a saved email template.

  ## Workflow Builder Polish

  A round of improvements to building and running workflows: clearer trigger setup and language (leads are now labeled "Lead" throughout, not "Inquiry"), explicit branch paths, a task assignee picker, new event-based branch options, clearer error states on blocks, a wider inspector panel, block descriptions shown right on the canvas, and a fixed scrolling issue in Safari.
</Update>

<Update label="August 11, 2026" description="v0.12.68" tags={["Feature", "Platform"]}>
  ## Workflow Branch Conditions on Related Records

  Branch conditions in workflows can now check a field on a related record, not just the record that triggered the workflow — for example, branching a quote workflow on the lead it came from, or an invoice workflow on the event it's tied to.
</Update>

<Update label="August 10, 2026" description="v0.12.67" tags={["Feature", "Invoicing"]}>
  ## Custom Discounts on Invoices

  Invoices now accept one-off discounts, not just discounts saved for reuse — matching what quotes already support. A discount applied on a quote also now survives being copied to an invoice and carries through routine invoice edits instead of silently disappearing.

  ## Bug Fixes

  **Workflow Emails No Longer Send Blank** - Fixed an issue where an automated workflow email could go out with a blank organization name or blank customer greeting instead of failing to send.

  **Workflow Emails Survive Template Changes** - Automated workflow emails no longer break if the email template they reference is renamed or deleted while the workflow is running.

  **Publish Checks** - The workflow editor now checks your setup before you publish and blocks publishing with a clear message if something isn't finished, instead of letting an incomplete workflow go live.
</Update>

<Update label="August 9, 2026" description="v0.12.66" tags={["Fix", "CRM"]}>
  ## Bug Fixes

  **No More Blank Greetings** - Replying on a conversation with no linked lead or contact could send with a blank greeting (e.g. "Hi ,") if the message referenced the customer's name. That reply is now blocked with a clear error instead of going out incomplete.
</Update>

<Update label="August 8, 2026" description="v0.12.65" tags={["Improvement", "Invoicing"]}>
  ## Duplicate Line Items on Quotes and Invoices

  Add the same catalog item to a quote or invoice more than once — the item picker no longer hides items you've already added, and each row gets its own duplicate action to quickly clone a line. Add Item is now only disabled when your catalog is empty.
</Update>

<Update label="August 7, 2026" description="v0.12.64" tags={["Feature", "Invoicing"]}>
  ## Short, Trackable Customer Links

  Quote, invoice, and lead links you share now use a short address that is easy to paste into a text message or email. Opening one signs your customer into their portal automatically, and the quote and invoice pages record when the customer viewed it so you can see whether your email landed. A customer who arrives on an expired link can request a fresh one without contacting you.

  ## Discount Rates on Quotes and Invoices

  Percentage discounts now show their rate alongside the amount — "Discount (Early Bird - 10%)" instead of a bare "Discount" — across quotes, invoices, and checkout, so a customer can tell a 10% discount from a flat \$50 one. Fixed-amount discounts are unchanged.

  ## Bug Fixes

  **Accepted Quotes Stay Locked** - Editing payment schedules or other financial details on an already-accepted quote is now refused, so a quote can no longer drift away from what your customer agreed to.
</Update>

<Update label="August 6, 2026" description="v0.12.63" tags={["Improvement", "Platform"]}>
  ## Email Templates Catch Broken Variables Before They Send

  Saving an email template now checks every variable in it against the automations that actually use it, and rejects any that could never fill in — naming the correct replacement rather than quietly mailing a customer "for your event on ?". Templates that are already broken stay editable so you can fix them, and template history is now retained so earlier wording can be recovered.

  A new health indicator surfaces automations that are failing, so a broken template shows up in the app instead of only in a customer's inbox.
</Update>

<Update label="August 5, 2026" description="v0.12.62" tags={["Feature", "Platform"]}>
  ## Rebuilt Email: Conversations, Composer, and Reliable Delivery

  Email is now a first-class part of Cortado. Conversations are threaded and readable in the app with unread tracking, and can be linked to the lead, quote, invoice, or company they belong to so the history lives with the record. The composer handles attachments, saved drafts, recipient chips, and template insertion.

  **Nothing Disappears Silently** - Outbound mail now goes through a durable queue that retries on failure. Failed sends appear in your Inbox and can be retried, and duplicate sends are prevented even if a message is submitted twice.

  **Clearer Sending Rules** - Mail you compose or reply to always goes out from a verified domain address, while automated system mail can still fall back to your organization's linked Gmail account. Replies stay on whichever address the conversation started on.

  ## Compose the Quote Email Before You Send It

  Sending a quote now opens a composer where you can edit the subject and message for that one quote, preview it rendered against the real quote, and add extra recipients — each of whom receives their own portal link to the same message. It works identically from the quote builder, the quote detail page, and the leads board, and the Stripe setup check now applies to all three, so a payable quote can no longer be sent to a customer who has no way to pay it.

  ## Bug Fixes

  **Embedded Inquiry Forms Restored** - Inquiry forms embedded on customer websites with older snippet code went blank after a routing change. Every snippet shape we have ever shipped now works again, and an automated check watches the live embed loader so a break is caught within half an hour instead of by a customer report.

  **Clearer Workflow Naming** - The workflow builder now states up front that a name is required before a workflow can be published.
</Update>

<Update label="August 4, 2026" description="v0.12.61" tags={["Improvement", "Platform"]}>
  ## Simpler Inquiry Form Links

  Embedded inquiry forms now resolve straight from your organization instead of a separate URL slug, removing a layer that could fall out of sync when your settings changed.
</Update>

<Update label="August 3, 2026" description="v0.12.60" tags={["Feature", "Invoicing"]}>
  ## Quote Builder Rebuilt as Guided Steps

  Building a quote now moves through progressive steps that adapt to your screen size, with reworked line item, event, and add-on tables and a readiness check so you know what is still missing before you send.

  ## Bug Fixes

  **Quote Acceptance Keeps Per-Event Dates** - Accepting a multi-event quote now carries each event's own date onto the booking instead of stamping them all with one date, and acceptance is refused outright rather than creating an event with no date at all.

  **Unexpected Permission Errors** - Recording a payment, editing quote items, and exporting invoice payments were checked against the wrong record, which could deny access to users who genuinely had it.

  **Announcements Without Header Images** - Dashboard announcements that carry no header image now render properly.

  **Tip Settings Repaired** - Organizations whose enforced tip configuration had been stored in an invalid shape have been corrected.

  **Deleting a Company** - Removing a company now cleans up its contact links instead of failing.

  **Support Panel Scrolling** - The support chat panel scrolls again on long conversations.
</Update>

<Update label="July 31, 2026" description="v0.12.59" tags={["Feature", "Platform"]}>
  ## Archive Leads and Events

  Leads and events you no longer want cluttering your lists can now be archived instead of deleted. Archived records drop out of lists, reporting, dashboards, double-booking warnings, and search, but stay retrievable and can be restored at any time. Archiving a lead can optionally archive its booked events too, and archived events are removed from Google Calendar. This also fixes five places where archived events were still counting toward revenue and conflict warnings.

  ## Automations You Can Rely On

  A broad reliability pass across workflow automations:

  **More Triggers Actually Fire** - Payment-received automations now run for manual payments, batch payments, and invoices marked as paid, not just card charges. Nurture sequences now stop when a lead books, instead of continuing to email a customer who already said yes. Bookings completed automatically now fire their follow-ups.

  **Run a Workflow From Anywhere** - The Run Workflow action now works from contact, quote, and invoice pages as well as leads and events.

  **Turning a Workflow Off Stops It** - Disabling a workflow immediately cancels its pending runs, runs that got stuck are detected and cleared so they can be retried, and a Cancelled tab shows both.

  **Better Conditions** - New "is one of" and "is empty" condition operators, plus a live preview showing how your conditions evaluate against real data.

  **Reminders Re-Arm** - Quote-expiring and invoice-overdue reminders are now tied to the actual date rather than the day they were scanned, so moving a quote's expiry re-arms the reminder, a shortened expiry still fires, and a missed day catches up instead of being lost. A second overdue installment on the same invoice is no longer skipped.

  ## Event Addresses Belong to the Event

  An event's address is now owned by the event itself rather than by its booking, so per-event addresses on a multi-event booking stop being overwritten and clearing an address actually sticks. The invoice page gained an Event Location card you can edit in place, and the events table now shows a Location column.
</Update>

<Update label="July 28, 2026" description="v0.12.58" tags={["Feature", "Platform"]}>
  ## Run a Workflow On Demand

  A Run Workflow action on lead and event pages starts any eligible workflow against that record immediately, instead of waiting for a lifecycle trigger to match. Manual runs are badged in run history, a second run is refused while one is still in flight, and the action is limited to organization admins.

  ## Purposeful Motion

  Considered transitions across the calendar, onboarding, workflow builder, and event pages, with reduced-motion preferences respected.

  ## Bug Fixes

  **AI Assistant Restored** - The assistant stopped responding after the model behind it was retired; it now runs on current models.

  **Accurate Lead Source Badges** - A blank tracking parameter no longer masks the real source, so a lead referred from Instagram, Facebook, or a search engine gets the right badge instead of "Direct" or a blank one. The "possible sources" tooltip now lists every channel the classifier can produce.

  **Custom Admin Roles** - A custom role carrying admin permission now sees admin-only actions, instead of the check matching only the built-in Admin and Owner role names.

  **Conditions on Lead Creation Date** - Automations filtered on when a lead was created never matched, because the creation time was not recorded on the triggering event.

  **Faster Email Previews** - Email previews reuse message data already loaded rather than re-converting it.
</Update>

<Update label="July 27, 2026" description="v0.12.57" tags={["Improvement", "Platform"]}>
  ## One Vocabulary for Email Template Variables

  Email templates, compose, and automations now share a single set of variables, drawn from the same catalog everywhere instead of three drifting lists. Previews render through the same engine that actually sends, so what you preview is what your customer receives. The template editor labels older-style variables that still work and warns about the ones that no longer do.

  **Editing Templates Feels Right** - Variable chips render with the correct label and color, backspace removes a whole variable instead of shaving a brace off it, and inserting a variable now lands in whichever field you were editing rather than always in the body.

  **Contacts and Bookings as Triggers** - Workflows can now trigger when a contact is created, and when a booking is created or changes stage.

  ## Bug Fixes

  **Apostrophes in Subject Lines** - "Sarah's Wedding" no longer arrives in the inbox as "Sarah's Wedding".

  **Dates Render as Dates** - Event dates and times inside templates now format in the event's own timezone instead of appearing blank or as a raw timestamp.

  **Templates Without Workflows** - Organizations that do not have the Workflows feature can author email templates again.

  **Booking Stage Automations See Current Data** - A workflow filtered on event type or location now evaluates against the values as they are after the update, not before it.

  **Tax Rates** - Tax rates display to two decimal places.
</Update>

<Update label="July 25, 2026" description="v0.12.56" tags={["Feature", "AI"]}>
  ## The Assistant Can Build Your Automations

  The AI assistant gained a skills system and its first skill: workflow building. It can now draft and create a workflow automation for you — choosing the trigger, conditions, and actions — instead of only explaining how to build one yourself.
</Update>

<Update label="July 24, 2026" description="v0.12.55" tags={["Feature", "AI"]}>
  ## One AI Assistant, Always in the Sidebar

  The separate chat and assistant experiences are now a single assistant that lives in the sidebar, opens with Cmd+I from any page, and knows which record you are looking at. Conversations are saved and resume where you left off, and the assistant can propose actions — such as sending a quote — for you to approve, with an optional autopilot mode for organizations that want it. Support chat moved into the sidebar as well.

  ## Quote Expiry Reminders

  A new "quote expiring soon" trigger fires a set number of days before a quote's expiry date, along with a ready-made "Final reminders before quote expires" automation that sends a reminder and then a last-chance email.

  ## Bug Fixes

  **No More Stale-Session Errors** - Returning to a tab left open past its session expiry no longer left panels stuck on "could not be loaded"; the session now refreshes before the page loads.

  **Error IDs Support Can Look Up** - The error screen now shows an Error ID only when there is a matching record for support to find.

  **Time-Limited Feature Trials** - The app now respects a feature grant's expiry date instead of showing a tab that can never load.

  **Waitlist Signups** - Submitting the waitlist form no longer requires being signed in.

  **Workflow Run Lists Stay Responsive** - A malformed workflow could stall the run list; the check that reports a run's current step is now bounded.
</Update>

<Update label="July 23, 2026" description="v0.12.54" tags={["Feature", "Platform"]}>
  ## Guest-Driven Inventory Calculator & Smarter Event Timeline

  **Guest Count Drives Inventory** - Configure drinks-per-guest and rounding defaults under Settings > Inventory, and the packing-list calculator can now size itself off guest count instead of only event length, with capacity warnings when supply falls short.

  **Cart-Aware Prep Time** - Prep time on the event timeline now scales with your cart count, with the added time shown inline.

  **Rounded Drive Time & Day Markers** - Drive time now rounds up to the nearest 5 minutes, and timeline segments that cross midnight show a small "-1d"/"+1d" marker.

  ## Refreshed Look for the Admin App and Customer Portal

  Adopted a warmer, more polished visual style — cream surfaces, an amber accent, and refined typography — across leads, events, invoices, quotes, calendar, reporting, and settings, along with a redesigned customer portal.

  ## Understand Empty Lead Columns

  Closed-stage columns on the Leads board now explain why they're empty when you're viewing Active leads only, with a shortcut to show all stages.

  ## Faster App Performance

  Backend response times are meaningfully faster across event, inquiry, and dashboard pages thanks to reduced database round-trips.

  ## Bug Fixes

  **Fixed Google Calendar Sync Retry Storm** - A backend issue that repeatedly retried Google Calendar syncs for events with permission errors, straining our API limits, has been fixed.

  **Shorter Event Type Labels** - Long default event type names no longer squeeze lead card details onto extra lines.
</Update>

<Update label="July 22, 2026" description="v0.12.53" tags={["Feature", "Integrations"]}>
  ## More Reliable Google Calendar Sync

  Event and booking changes now sync to Google Calendar more consistently — updates, cancellations, and archived events keep your calendar in step with Cortado. A sync status badge on the event page shows whether a sync is pending, failed, or skipped, and why. New Settings > Calendar options let you choose which event stages sync and whether assigned staff are invited as attendees, and the calendar picker now greys out calendars Cortado can't write to.

  ## Bug Fixes

  **Payment Workflow Email Amounts Display Correctly** - Dollar amounts in emails sent from payment-triggered workflow automations now show as formatted currency instead of raw numbers.
</Update>

<Update label="July 22, 2026" description="v0.12.52" tags={["Feature", "Invoicing"]}>
  ## Quote Add-Ons: Let Customers Choose Optional Upsells

  Customers can now add optional extras to a quote before accepting it. Flag any catalog item as an add-on under Settings > Services, and set its price and quantity when building a quote. Customers see the offer on their quote — and again in the accept flow — with totals updating live as they opt in or out. Available add-ons also show up on the quote PDF.

  ## Custom Event Types

  **Configure Your Own Event Types** - Replace the fixed list of event types with ones you define, under Settings > Services > Event Types. Rename, add, archive, and drag-and-drop reorder them to match how your business actually categorizes events.

  **Collect Company Name, Per Event Type** - Choose whether the inquiry form asks for a company name on a type-by-type basis, instead of it being tied to a fixed set of built-in types.

  **"Won't Do" Feedback Stage** - Feedback items can now be marked "Won't Do" alongside the existing Cancelled stage.

  ## Faster Dashboard Loads

  The dashboard now loads its widgets with a single request instead of many, so it appears noticeably faster, especially on your first visit of the day.

  ## Send Emails from Payment Workflows

  Workflow automations triggered by a payment event (like "Payment Received") can now include a Send Email action.

  Email features across the app (Inbox, Compose, Deliverability) are labeled Beta while we keep refining them.
</Update>

<Update label="July 21, 2026" description="v0.12.51" tags={["Feature", "UX"]}>
  ## Sort Leads and Edit Tasks Inline

  **Sort Leads by Date** - Add a "Sort by" control to the lead Kanban board to order cards within each column by date received or event date (soonest/latest, newest/oldest).

  **Edit Tasks Inline** - The Tasks tab in the Activity view now lets you change a task's status and open it for editing directly, instead of only showing a static badge.

  **Wider Quote View in the Customer Portal** - The customer portal's quote view is wider, giving side-by-side quote comparisons more room.

  ## Bug Fixes

  **Fixed Notification Links** - Notifications for accepted quotes and received payments now open the correct quote or invoice page instead of a broken link.

  **Payment Schedule Editing** - Typing a payment schedule item's title no longer loses focus after each keystroke.

  **Inventory Ratios Stick After Saving** - Saved inventory ratios no longer visually reset to 100% after saving.

  **Barista/Cart Counts Now Respond** - The +/- buttons for barista and cart counts on the quote event sheet now update correctly.

  **Subscription Status Handling** - If your subscription payment fails, you're now redirected to the billing page with a clear explanation, and your access isn't cut off immediately while we retry the payment.
</Update>

<Update label="July 20, 2026" description="v0.12.50" tags={["Feature", "Integrations"]}>
  ## Email Deliverability Checks and Custom Domains for Everyone

  **Email Deliverability Health Check** - A new Settings > Email > Deliverability section checks your sending domains' authentication (SPF, DKIM, DMARC, and more) and flags issues with a clear pass/warn/fail status.

  **Custom Domains for Every Plan** - Tenant-owned form and portal domains are no longer limited to a specific tier — every organization can now configure them under Settings.

  ## Bug Fixes

  **Fixed Broken Email Merge Tags** - Workflow emails using certain merge tags (like the customer's first name) that previously resolved to nothing now render correctly instead of sending blank content.

  **Correct Custom Domain Links Everywhere** - Payment receipts and form embed links now consistently point to your custom domain instead of falling back to the default cortado.pro address.

  **Cleaner Invitation Emails** - Team invitation emails now use a simple, readable format, and the invite link is no longer dropped from the plain-text version.

  **Workflows Can Publish Without Entry Conditions** - Automations that should run on every trigger event (the common "Always" case) can now be published without adding an unnecessary condition, and the builder no longer implies one is required.

  **Removed Non-Functional Hosted Form Link** - The "Hosted Form Slug" option under form settings never worked in production and has been removed.
</Update>

<Update label="July 19, 2026" description="v0.12.49" tags={["Feature", "UX"]}>
  ## Custom Branding for Your Inquiry Form

  Your embeddable inquiry form can now match your brand. Under Settings > Forms, pick a brand color, a font, and a corner style (sharp, soft, or round) — the rest of the form's colors are generated automatically to stay readable. You can also choose whether your logo appears on the form.

  A live preview shows your changes on the real form as you make them, before you save.
</Update>

<Update label="July 17, 2026" description="v0.12.48" tags={["Feature", "UX"]}>
  ## Easier Guest Counts and Mobile-Friendly Pickers

  **Editable Guest Count** - Type an exact guest count directly on the inquiry form instead of only using the +/- buttons, and enter counts up to 10,000.

  **Native Mobile Date & Time Pickers** - On phones, choosing an event date or time on the inquiry form now opens your device's native picker for smoother, more reliable selection.

  **Cortado Pro Branding** - Embedded inquiry forms now show a subtle "Powered by Cortado Pro" mark.

  ## Bug Fixes

  **Accurate Barista Scheduling Times** - Shift times on the barista scheduling view now consistently reflect the event's own time zone instead of your browser's, so the times you see and edit match the calendar.

  **Correct Quote Templates** - Applying a quote template no longer adds extra automatically-included items on top of the template's own curated items.
</Update>

<Update label="July 16, 2026" description="v0.12.47" tags={["Improvement", "UX"]}>
  ## Faster Detail Pages

  Event, quote, and invoice detail pages now open noticeably faster. We consolidated how each page loads its data so you spend less time waiting when you click into a record.
</Update>

<Update label="July 15, 2026" description="v0.12.46" tags={["Feature", "Invoicing"]}>
  ## Downloadable Quote & Invoice PDFs

  Quotes and invoices can now be downloaded as PDFs, and your customers can grab a PDF copy straight from a shared link. Generated documents are cached so repeat downloads are fast.
</Update>

<Update label="July 14, 2026" description="v0.12.45" tags={["Fix", "Invoicing"]}>
  ## Bug Fixes

  **Removed Line Items Stay Removed** — Creating a quote no longer re-adds "always include" line items you had deliberately removed.
</Update>

<Update label="July 13, 2026" description="v0.12.44" tags={["Improvement", "Platform"]}>
  ## More Reliable Workflows

  Automation workflows are now more dependable: retries are safer against sending duplicates, each run is fenced so it can't overlap with itself, and the events that trigger a workflow fire more reliably.
</Update>

<Update label="July 9, 2026" description="v0.12.43" tags={["Improvement", "Invoicing"]}>
  ## Smoother Portal Payments

  We polished the customer payment experience in the portal:

  **Revised Quotes Explained** — When a quote has been revised, customers now see a clear, org-aware note explaining what changed instead of a bare status.

  **Expired-Link Recovery** — If a customer's access expires mid-session, they're routed to a self-service page to request a fresh link rather than hitting a dead end.

  **Pay-in-Full Confirmation** — Switching a payment schedule to Pay in Full now shows a confirmation with an explanation before it applies.

  **Clearer Tip Input** — The custom tip field now shows inline below-minimum errors and is easier to use with a screen reader.
</Update>

<Update label="July 7, 2026" description="v0.12.42" tags={["Fix", "Invoicing"]}>
  ## Bug Fixes

  **Accurate Quote Totals with Tips** — An enforced tip is no longer subtracted twice from a quote's total, so quote amounts add up correctly.
</Update>

<Update label="July 6, 2026" description="v0.12.41" tags={["Feature", "Platform"]}>
  ## Simpler Portal Links

  You can now generate a shareable portal link that doesn't require a one-time token, making it easier to hand a customer a link they can open directly.
</Update>

<Update label="July 5, 2026" description="v0.12.40" tags={["Fix", "UX"]}>
  ## Bug Fixes

  **Embedded Form Redirects** — When your inquiry form is embedded on your website, a successful submission now redirects the whole page as intended instead of only the embedded frame.
</Update>

<Update label="June 23, 2026" description="v0.12.39" tags={["Feature", "Platform"]}>
  ## Attachment Library Folders

  Organize your uploaded files into folders in the attachment library, and pick from those folders directly when attaching files elsewhere in Cortado.
</Update>

<Update label="June 19, 2026" description="v0.12.38" tags={["Feature", "Platform"]}>
  ## Visual Workflow Builder

  Build automations on a drag-and-drop canvas. The new graph builder lets you lay out steps visually, add branch and stop points, use variables from the triggering record, and install ready-made templates on demand.

  ## Bug Fixes

  **Task Due Dates** — Task due dates no longer shift back a day depending on your timezone.

  **Slack Channels** — Fixed channel listing when connecting Slack so your channels show up as expected.

  **Legacy Tipped Invoices** — Fully-paid older invoices that included a tip now correctly show 100% paid.
</Update>

<Update label="June 10, 2026" description="v0.12.37" tags={["Fix", "Invoicing"]}>
  ## Bug Fixes

  **Editing Quotes with Payment Schedules** — You can once again edit a quote that has a fixed-amount payment schedule, which was previously blocked.
</Update>

<Update label="June 9, 2026" description="v0.12.36" tags={["Fix", "Invoicing"]}>
  ## Bug Fixes

  **Free Quotes & Invoices** — Quotes and invoices with a \$0 total are now allowed and skip the payment schedule step.

  **Clearer Domain Setup** — When setting up a public domain, we now show a single recommended CNAME record with its host label so it's obvious what to add.
</Update>

<Update label="June 8, 2026" description="v0.12.35" tags={["Improvement", "Platform"]}>
  ## Consistent Domain Linking

  Linking a public domain for your forms and portal now follows the same familiar flow as connecting an email domain, so setup feels consistent across the app.
</Update>

<Update label="June 7, 2026" description="v0.12.34" tags={["Feature", "Platform"]}>
  ## Custom Subdomains for Forms & Portal

  Serve your inquiry form and customer portal from your own branded subdomain instead of a Cortado URL, for a more seamless experience for your customers.

  ## Bug Fixes

  **Tip Collection** — Fixed a case where an enforced tip could be over-collected across an invoice's payment schedule.
</Update>

<Update label="June 6, 2026" description="v0.12.33" tags={["Improvement", "Invoicing"]}>
  ## Clearer Tip Accounting

  Tips are now tracked explicitly across an invoice's payment schedule, so tip amounts are applied and reported accurately as customers pay across multiple installments.
</Update>

<Update label="June 5, 2026" description="v0.12.32" tags={["Feature", "Platform"]}>
  ## Workflow History & Ready-Made Automations

  **Run History & Retry** — See a history of each workflow's runs and retry a run that didn't complete.

  **Template Gallery** — Browse a gallery of prebuilt workflow templates and add them with a click.

  **Starter Workflows** — New ready-to-use automations: re-engage stale leads, send overdue-payment reminders, and follow up on outstanding quotes.
</Update>

<Update label="June 4, 2026" description="v0.12.31" tags={["Feature", "Events"]}>
  ## Unavailable Dates on the Calendar

  Dates your organization has marked as unavailable now appear on the calendar, so it's clear at a glance which days you can't take on new events.
</Update>

<Update label="June 2, 2026" description="v0.12.30" tags={["Feature", "Platform"]}>
  ## Workflow Conditions & Actions

  When building a workflow you can now add conditions that must match for it to continue, and choose from a clear menu of actions to run next.

  ## Bug Fixes

  **Address Autocomplete** — The inquiry form no longer breaks when the Google Maps address suggestions fail to load.
</Update>

<Update label="June 1, 2026" description="v0.12.29" tags={["Feature", "Platform"]}>
  ## Workflow Trigger Picker

  Building an automation starts with a redesigned, two-step trigger picker that lets you choose from a curated set of events — like when an inquiry is created or a quote is accepted — to kick off your workflow. The workflow builder canvas was also refreshed for clarity.

  ## Bug Fixes

  **Notifications** — Fixed issues in the notification system so alerts are delivered reliably.
</Update>

<Update label="May 30, 2026" description="v0.12.28" tags={["Feature", "Platform"]}>
  ## Build Your Own Workflows

  You can now create and edit your own automation workflows from **Settings > Workflows** — previously you could only switch the built-in workflows on or off. Click **New workflow** to choose what starts it (for example, when an inquiry is created or updated), add optional conditions that have to match, and pick what should happen next — update a field, send a templated email, create a task, send an email, or send a notification. A live **"When this fires, what will happen?"** panel summarizes the workflow as you build it, and every workflow you create gets an **Edit** action so you can refine it anytime. The built-in workflows stay read-only.
</Update>

<Update label="May 21, 2026" description="v0.12.27" tags={["Feature", "Invoicing"]}>
  ## Accepted-Quote Invoices in the Portal

  When a customer accepts a quote, the resulting invoice is now immediately visible in the customer portal — so they can move straight to payment without waiting for the invoice to be sent separately.

  ## Accurate Quote Expiration

  Quotes now reflect their expired status the moment they pass their valid-until date, consistently across the app and public inquiry views, so you're never looking at a stale "live" quote.
</Update>

<Update label="May 20, 2026" description="v0.12.26" tags={["Feature", "UX"]}>
  ## Email Drafts

  Start an email and finish it later — Cortado now saves your drafts automatically so you never lose a message in progress.

  ## Snooze Email Threads

  Snooze a conversation to clear it from your inbox and have it return at a time you choose, keeping your inbox focused on what needs attention now.

  ## Leads by Source

  The Reports overview now includes a **Leads by Source** card that breaks your inquiries down by channel — paid search, social, your own website, referrals, and direct — over any period you select. Source detection has also been sharpened to better reflect where leads actually came from, and lead cards now show a source tooltip.

  ## Clearer Portal Visibility

  Quotes and invoices that your customer can see now read **"Live in portal"** instead of just "Sent," and the share actions on quotes and invoices have been reorganized so it's obvious what your customer is currently looking at.

  ## Bug Fixes

  **Reply-by-Email** — Restored notifications for customer replies that arrive by email.

  **Faster Leads List** — Resolved slow loads and timeouts on the leads list for organizations with a large history of quotes and events.

  **Inbox Search** — Search now responds instantly as you type, with local matching for quicker results.
</Update>

<Update label="May 19, 2026" description="v0.12.25" tags={["Feature", "Integrations"]}>
  ## Email Conversation Threading

  Inbox messages are now grouped into conversation threads, so an email and all of its replies stay together in a single, easy-to-follow view.

  ## Search Your Inbox

  A new search box in the inbox lets you quickly find conversations by sender, subject, or message content.

  ## Bug Fixes

  **Mark Invoice as Paid** — Fixed an error that could occur when marking an invoice as paid with a manual payment.

  **Switching Organizations** — Switching between organizations no longer briefly surfaces permission errors from the organization you just left.

  **Calendar Month View** — Fixed a layout issue where busy days could overflow in the month calendar view.
</Update>

<Update label="May 18, 2026" description="v0.12.24" tags={["Feature", "UX"]}>
  ## Redesigned Inbox

  The inbox has been rebuilt as a familiar mail-client layout — a message list alongside a reading pane — making it faster to scan, read, and reply to conversations without leaving the page.

  ## Shared Inbox Reply Notifications

  When a customer replies to a message in a shared inbox, the right people on your team are now notified so replies don't slip through unnoticed.

  ## Team Invites for Existing Members

  Inviting someone who already has a Cortado account now sends them an invitation email too, so they know they've been added to your organization instead of being added silently.

  ## Bug Fixes

  **Payment Recording** — Fixed a rare case where a card payment could fail to record if its checkout session hadn't finished setting up, which could drop the payment from the invoice.
</Update>

<Update label="May 17, 2026" description="v0.12.23" tags={["Feature", "Integrations"]}>
  ## Email Attachments

  Attach files when composing or replying to an email in Cortado, and download attachments that arrive on incoming messages — all without leaving the email view.

  ## Email Deliverability Controls

  When an email hard-bounces or a recipient marks it as spam, Cortado now automatically stops sending to that address and flags the affected messages with a delivery-status badge. A new **Email Suppressions** page (Settings > Communications) lets you review blocked addresses, block one yourself, and unblock anytime.

  ## Choose Your Sending Address

  When composing an email, you can now pick which connected address it sends from — your verified domain or a linked Gmail account.

  ## Bug Fixes

  **Unavailable Inquiry Dates** — Dates you've blocked on the inquiry form are now enforced when an inquiry is submitted, so a blocked date can't slip through even via a direct link.
</Update>

<Update label="May 16, 2026" description="v0.12.22" tags={["Improvement", "Integrations"]}>
  ## Allowed Email Domain Subdomains

  When adding an email domain in Settings > Communications, the input now accepts only `inbox.<yourdomain>` or `mail.<yourdomain>` subdomains. This matches our recommended setup and surfaces misconfigurations up front instead of catching them later during verification.

  ## Open Tracking DNS Record

  The DNS record list for a verified domain now includes the CNAME required for email open tracking alongside SPF, DKIM, DMARC, and MX. A domain isn't marked as fully set up until the tracking record verifies too, so you'll see a clear nudge if it's still pending.
</Update>

<Update label="May 16, 2026" description="v0.12.21" tags={["Feature", "Platform"]}>
  ## Attachments

  Upload files directly onto leads, events, quotes, invoices, contacts, and companies from a new **Attachments** tab. Images render as inline thumbnails, and clicking any image or PDF opens a fullscreen preview without leaving the page. Download or remove files from the same view.
</Update>

<Update label="May 15, 2026" description="v0.12.20" tags={["Feature", "Platform"]}>
  ## Rich Text Line Item & Catalog Descriptions

  Line item and catalog descriptions now support rich text formatting — bold, italics, lists, and links — across the quote builder, catalog editor, customer portal, and generated PDFs. Descriptions migrated from your existing catalog continue to display unchanged until you edit them.

  ## Announcement Modal Refresh

  In-app announcements from the Cortado team now lead with a header image and an optional category tag, so updates are easier to scan at a glance. The backdrop has also been softened so the announcement no longer feels heavier than it needs to.

  ## Upcoming US Holidays on Unavailable Dates

  Settings > Calendar > Unavailable Dates now includes an "Upcoming US Holidays" card so you can block off federal holidays in one click instead of looking up dates by hand.

  ## iOS Calendar Shows Events and Leads

  The iOS Calendar tab now pulls in both events and leads for the displayed month, with distinct colors, icons, and stage badges so each is identifiable at a glance. An "Upcoming" preview shows the next few items when no day is selected, and the tab no longer appears empty for users without scheduling assignments.

  ## Bug Fixes

  **Quote Tax on Schedule Edits** — Editing a quote's payment schedule no longer clears its tax line; the original tax is preserved across schedule recalculations.

  **Inbound Email Routing** — Emails arriving at your verified email domain are once again fetched correctly. After a recent dependency upgrade, inbound bodies were being looked up against the outbound endpoint and silently 404ing.

  **Orphan Checkout Sessions** — Replacing payment schedules now clears any in-flight checkout sessions tied to the previous schedule, preventing customers from completing payment against an invoice that has since changed.

  **iOS Activity Feed Icons** — Lead activity entries on iOS now show the correct entity-type icons instead of falling back to the default.
</Update>

<Update label="May 14, 2026" description="v0.12.19" tags={["Fix", "Integrations"]}>
  ## Email Domain Status Matching

  Email domain status checks now compare values case-insensitively, so a verified email domain is recognized regardless of how the provider reports its state. Affected orgs no longer see their verified domain appear unverified after refresh.
</Update>

<Update label="May 13, 2026" description="v0.12.18" tags={["Feature", "UX"]}>
  ## Cleaner Tax Rate Setup

  Creating a tax rate now uses a labeled Select dropdown for Tax Type with a conditional input that appears only when you pick "Other", and a refreshed Tax Name placeholder with helper text spelling out what the field expects.

  ## Bug Fixes

  **Inventory Ratio Saved Correctly** — The "% of people" ratio on inventory items now persists when editing organization inventory settings. Saving previously discarded the value silently on every update.
</Update>

<Update label="May 12, 2026" description="v0.12.17" tags={["Feature", "Platform"]}>
  ## Platform Announcements

  The Cortado team can now publish in-app announcements that surface on your dashboard — either as a floating card in the corner or as a centered modal — so you'll hear about new features and important updates without needing to check email.

  ## Gmail Calendars Grouped by Account

  If you've connected multiple Gmail accounts, the calendar picker in Settings > Calendar now groups each account's calendars together so it's easier to find and select the right one. When a selected calendar's connection is revoked, we now flag it for reconnect instead of silently switching to another account's calendar.

  ## Bug Fixes

  **Discounted Amounts on Line Items** — Quote and invoice line item tables now show each row's discounted amount instead of the pre-discount total, matching what the customer sees in the portal.

  **Multi-Day Inquiry Prefill** — Inquiry forms that span multiple days no longer duplicate prefilled catalog items, and deleting one line item no longer removes every row sharing the same catalog source.
</Update>

<Update label="May 11, 2026" description="v0.12.16" tags={["Feature", "UX"]}>
  ## Resend Expired Quote & Booking Links

  When a customer opens an expired quote or booking link in the portal, they can now request a fresh one with a single click. The new link is emailed to the original recipient, throttled to once every 5 minutes per link.

  ## Longer-Lived Portal Links

  Direct portal links for quotes, bookings, and invoices now stay valid for 30 days (up from a shorter window). Links shared by email from inside the app continue to expire after 7 days.

  ## Public Quote Views in the Activity Feed

  Anonymous and shared-recipient views of public quote links now show up in the lead activity feed, alongside the existing roll-up on the lead detail page.

  ## Bug Fixes

  **Stale Portal Tokens** — Older portal links issued before recipient tracking was added can once again open the quote via the inquiry contact, instead of dead-ending on the expired page.
</Update>

<Update label="May 11, 2026" description="v0.12.15" tags={["Fix", "Integrations"]}>
  ## Google Ads Conversion Tracking

  Inquiry form conversions now fire from your host page — where the `gclid` and Google Ads cookies actually live — instead of inside the embedded iframe where Google Ads couldn't see them. The embed snippet now loads a hosted script, so future fixes ship automatically. **Existing customers need to copy the new snippet from Settings > Communications > Inquiry Forms > Embed Form once.** Standalone (non-embedded) form visits keep working as before.
</Update>

<Update label="May 10, 2026" description="v0.12.14" tags={["Feature", "Platform"]}>
  ## Inquiry Form Post-Submission Redirect

  Send customers to your own page after they submit the inquiry form. Add a Post-Submission Redirect URL in Settings > Communications > Inquiry Forms > Customization. Embedded forms redirect the parent page; the standalone form briefly shows the success screen before navigating.

  ## Quote Activity on Leads & Contacts

  Public quote views, downloads, and acceptances are now associated with the recipient contact and rolled up on the lead detail page. Each forwarded share link is tracked separately, so you can see exactly which recipients have engaged with a quote.
</Update>

<Update label="May 8, 2026" description="v0.12.13" tags={["Fix", "Invoicing"]}>
  ## Quote Duplication Preserves Events

  Duplicating a quote now also copies its associated calendar event details, instead of leaving the new quote without them.

  ## Pay-in-Full Conversion

  Converting an invoice to pay-in-full now uses the invoice's current total, so the conversion no longer fails when line items have changed since the original payment schedule was created.

  ## Draft Quote Warning

  The Lead Quotes card now shows a warning badge when any quote on a lead is still in draft — a reminder that draft quotes aren't visible to the customer in the portal.
</Update>

<Update label="May 7, 2026" description="v0.12.12" tags={["Fix", "UX"]}>
  ## Mobile-Friendly Form Pickers

  Below the mobile breakpoint, the inquiry form's date and time pickers now use the OS-native iOS/Android pickers instead of the custom dropdown, fixing the awkward scrolling and positioning mobile customers were hitting.

  ## Catalog Item Deletion Guard

  Deleting a catalog item that's still referenced by a quote template now shows a clear error instead of silently failing or breaking the template.
</Update>

<Update label="May 5, 2026" description="v0.12.11" tags={["Feature", "Platform"]}>
  ## Rich Text System Email Templates

  System emails (New Inquiry, Quote Sent, Invoice Sent, Payment Receipt, and more) now support rich text editing for both subject and body overrides, with an inline variable picker that renders merge fields like `{{contact_name}}` as labeled badges. Variables in email subjects are also rendered when sending.

  ## Unmatched Inbound Email Queue

  Emails that arrive at your verified email domain but can't be matched to a contact, lead, or booking now show up in a new Unmatched Inbound Emails page (Settings > Communications). Review what's slipping through attribution so you can clean up sender addresses.

  ## Bug Fixes

  **Google Calendar Attendee Sync** — Fixed an issue where attendee changes on synced bookings could fail to propagate to Google Calendar.
</Update>

<Update label="May 4, 2026" description="v0.12.10" tags={["Feature", "Platform"]}>
  ## Custom Form Success Message

  Replace the default "Thank you for your inquiry" confirmation with your own message after a customer submits the inquiry form. Edit it from Communications > Inquiry Forms > Customization, with a one-click "Use default text" link to revert at any time.

  ## Google Analytics, Now Its Own Page

  Google Tag ID and Google Ads Conversion Label moved out of the Inquiry Forms Customization section and into a dedicated Google Analytics sub-page (Communications > Google Analytics), each with its own Save and Reset.

  ## Customizable New Inquiry Email Link

  The "View Menu" button in the New Inquiry system email now supports a custom destination URL alongside the existing button-text override. Set it from Settings > Communications > Email Templates; falls back to your organization's website when empty.

  ## Quote Templates with Titles & Prefill

  Quote templates can now carry a name and prefill quote details. When you start a new quote, pick a template by title to seed the quote's title, description, and line items in one click. Manage titled templates from Settings > Payments > Quote Templates.

  ## Smoother Portal Payment Flow

  Customers paying a quote or invoice from the portal now move through a cleaner Checkout → Processing flow with clearer status, the payment method shown on processing schedules, and the payment session preserved through the redirect back from Stripe.

  ## Bug Fixes

  **Quote Line Item Line Breaks** — Multi-line line item descriptions in the customer portal now render with their original line breaks instead of being collapsed into a single line.

  **Past-Date Inquiry Validation** — Submitting an inquiry with an event date in the past now shows an inline error and disables the submit button, instead of failing after submit with a generic toast.

  **Inquiry-to-Booking Validation** — Promoting an inquiry to a booking with a missing event date now surfaces a clear "event date required" error instead of a generic failure.

  **Form Customization Toast** — Saving an inquiry form change now shows a confirmation toast that accurately reflects what was changed.
</Update>

<Update label="May 1, 2026" description="v0.12.9" tags={["Improvement", "UX"]}>
  ## Better Lead Source Tracking

  The inquiry form now captures UTM tags, Google Click IDs (gclid), and Facebook Click IDs (fbclid) from direct links — Instagram bios, ad landing pages, anywhere the form is opened directly — and from the embed snippet's host page. Paid and social traffic is correctly attributed to its source instead of being lumped into Direct or Referral.

  ## Bug Fixes

  **Cleaner Validation Errors** — Validation toasts no longer carry extra technical prefixes; the message you see is just the actionable part.
</Update>

<Update label="April 28, 2026" description="v0.12.8" tags={["Feature", "Platform"]}>
  ## Personal Email Signatures

  Each team member can save their own email signature in their account settings. Compose a new email from a lead, contact, or booking and your signature is automatically appended — preserved across replies, forwards, and template insertions.

  ## Inquiry Form Unavailable Dates

  Block specific dates on the inquiry form's date picker from a new Unavailable Dates page (Communications > Inquiry Forms > Unavailable Dates). Add dates with optional reasons, remove them anytime, and customers won't be able to select them when submitting an inquiry.
</Update>

<Update label="April 28, 2026" description="v0.12.7" tags={["Feature", "Platform"]}>
  ## Email History on Leads, Contacts & Bookings

  A new Emails tab on every lead, contact, and booking shows a complete history of messages sent through Cortado, so you can see what's gone out without leaving the page.

  ## Email Templates in Compose

  Insert your saved email templates directly while composing — variables like contact name, event date, and quote totals are automatically filled in from the lead. Email templates are now available to all organizations without a feature flag.

  ## Per-User Gmail Accounts

  Each team member can now link their own Gmail account, and Cortado picks the right sender automatically — your linked account for emails you trigger, the organization's default for system emails. The Gmail settings table now shows who linked each account.

  **Reconnect Banner** — If a Gmail connection expires or is revoked, you'll see a clear "Reconnect Your Google Account" banner on the dashboard and a friendly toast when sending a quote or invoice — instead of a generic failure.

  **Verified Domain Indicator** — Sender entries that come from your verified email domain are now tagged with "(Domain)" in the From dropdown so you can tell them apart from Gmail-linked identities.

  ## Quote & Invoice Pages Redesign

  Redesigned quote and invoice pages across the app — the list, detail, and create flows are cleaner, more consistent, and easier to scan. Dollar amounts and contact names now display consistently across every list.

  ## Send Quote from the Builder

  A Send Quote button now lives in the quote builder itself — send a draft, or resend an already-sent quote with a confirmation prompt. The duplicate button on the lead page has been removed.

  ## Form Items Catalog Shortcut

  The Form Items Order card now includes a "Manage Catalog" link so you can jump straight to the catalog where your services are defined.

  ## Bug Fixes

  **Quote Validation** — Submitting a quote without a title now shows a clear error and snaps you back to the Details tab, instead of failing with a generic "Failed to create quote" message.

  **Payment Flow Stability** — Multiple fixes to checkout, refunds, and quote payment methods to prevent edge-case failures during payment processing.

  **Calendar Sync Reliability** — When a Google account's connection has been revoked, calendar sync now gracefully skips with a reconnect-friendly message instead of repeatedly failing in the background.

  **Portal Links on Safari/iOS** — Fixed an issue where some portal quote and invoice links could fail to open on Safari and iOS due to a token decoding bug.
</Update>

<Update label="April 20, 2026" description="v0.12.6" tags={["Fix", "UX"]}>
  ## Safari Share Actions

  Share buttons for copying invoice and quote links now work reliably in Safari and on iOS, where they could previously fail silently.
</Update>

<Update label="April 14, 2026" description="v0.12.5" tags={["Fix", "Events"]}>
  ## Event Times in Local Time

  Event times now display in the event's own local timezone across the customer portal, admin app, and email notifications. A 6 PM event in New York shows as 6 PM to everyone involved, no matter where they're viewing from. You can set or change an event's timezone from the event and inquiry edit sheets — including a one-click "Use location timezone" option when an address is set.

  ## Bug Fixes

  **Manual Payments** — Recording a payment is now protected against duplicate entries if a request is retried.
</Update>

<Update label="April 14, 2026" description="v0.12.4" tags={["Feature", "Invoicing"]}>
  ## Quote Accepted Alerts

  Get an email the moment a customer accepts a quote. The alert includes the customer name, quote number, total, and a link straight to the quote so you can jump into next steps right away.

  ## Bug Fixes

  **Dashboard Tasks** — The dashboard task list now shows only tasks assigned to you, instead of every task across your organization.
</Update>

<Update label="April 13, 2026" description="v0.12.3" tags={["Feature", "UX"]}>
  ## Customizable Tip Selector

  Tailor the tipping experience on your customer portal. Configure which tip percentages appear, set a default option, toggle custom amounts on or off, and write a personalized message for customers who choose not to tip.

  ## Quotes List Page

  A new Quotes page gives you a dedicated view of every quote, with status tabs and a summary strip so you can track outstanding, accepted, and declined quotes at a glance.

  ## Events Split: Upcoming & Completed

  The Events page now separates upcoming events from completed ones into their own tabs, making it easier to focus on what's next without losing access to past event history.

  ## Payment Schedule Editing

  Edit payment schedules on existing invoices — add, update, or remove scheduled payments in one go, with changes applied atomically so your totals always stay in sync.

  ## Home Sidebar Improvements

  Small polish to the home sidebar for a cleaner, quicker-to-scan layout.

  ## Bug Fixes

  **Quote List Dates** — Sent and expiration dates now display correctly on the quotes list.

  **Tip Input Behavior** — Fixed edge cases when editing custom tip percentages and preserving an explicit "all off" tip configuration.
</Update>

<Update label="April 12, 2026" description="v0.12.2" tags={["Improvement", "UX"]}>
  ## Share Draft Invoices

  A Share button now appears on draft invoices, so you can preview and share an invoice link before it's finalized.

  ## Bug Fixes

  **Calendar Refresh** — New events created from a lead's detail page now appear on the calendar immediately, without needing a page refresh.
</Update>

<Update label="April 11, 2026" description="v0.12.1" tags={["Feature", "Invoicing"]}>
  ## Payment Received Alerts

  Get an email notification the moment a customer pays — works for both card and bank (ACH) payments. The alert includes the customer name, amount, invoice number, and a link straight to the invoice.

  ## Bug Fixes

  **Calendar Refresh** — Leads, events, bookings, and tasks created from other pages now appear on the calendar right away, without needing to refresh.
</Update>

<Update label="April 10, 2026" description="v0.12.0" tags={["Feature", "Invoicing"]}>
  ## Send Invoice by Email

  Send invoices directly to your customers via email — no need to copy and share a link manually.

  ## Support Chat Improvements

  **Archive Threads** — Resolved support conversations can now be archived to keep your inbox clean.

  **Screenshot Capture** — Attach screenshots directly in support chat to better communicate issues.

  ## Bug Fixes

  **Payment Display** — Tip amounts are now correctly shown on paid payment schedules.

  **Invoice Layout** — Refined invoice header styling for a cleaner look.

  **Permissions** — Organization permissions are now properly scoped, preventing cross-org access issues.

  **Team Invites** — Improved reliability of team invitation flows.

  **Payment Calculations** — Fixed edge cases in payment status tracking and calculations.
</Update>

<Update label="April 9, 2026" description="v0.11.0" tags={["Feature", "Platform"]}>
  ## In-App Support Chat

  Get help without leaving Cortado. A new support chat lets you reach out directly from inside the app.

  ## Auto-Quoting

  Set up rules on your quote template items to automatically pre-fill quotes based on event details like guest count, duration, or event type — saving time on repetitive quoting.

  ## Auto-Completion

  Past events and bookings are now automatically marked as complete, keeping your pipeline accurate without manual updates.

  ## Bug Fixes

  **Quote Editing** — Fixed an issue where duplicate quote items could appear, and the unit field now saves correctly.
</Update>

<Update label="April 8, 2026" description="v0.10.0" tags={["Feature", "Integrations"]}>
  ## Event Navigation

  A new "View Original Lead" button on event detail pages lets you quickly jump back to the lead that created the event.

  ## Checkout Safety

  Multiple improvements to prevent duplicate charges during checkout, with better error messages when issues occur.

  ## UX Improvements

  **Gmail Integration** — Send buttons are now disabled when Gmail isn't connected, preventing failed sends.

  **Stripe Connect** — A contact email is now required before connecting Stripe, ensuring proper account setup.

  **Payment Recording** — Clarified that recording a payment is for manual tracking, not processing a charge.

  ## Bug Fixes

  **Event Details** — Event type and location now populate correctly from inquiry data.

  **Email Sharing** — Fixed invoice email sharing to work with the updated invoice format.
</Update>

<Update label="April 7, 2026" description="v0.9.0" tags={["Feature", "Invoicing"]}>
  ## Sales Tax Report

  A new Sales Tax report is now available in the Reports section, making it easy to calculate and reconcile collected tax for any time period.

  **Pre-Made Date Ranges** - Quickly select This Month, Last Month, This Quarter, Last Quarter, This Year, or Last Year — or set a custom range.

  **Tax Summary** - See total taxable sales and total tax collected at a glance.

  **Breakdown by Rate** - A detailed table shows tax collected grouped by each tax rate so you can file with confidence.

  ## Quoting

  Quoting is now available to all organizations — no early-access flag required. Create and send quotes directly from any lead.

  ## Onboarding Navigation

  You can now go back to previous steps during onboarding to review or update your answers before finishing setup.

  ## Bug Fixes

  **App Updates After Deploy** - The app now automatically reloads when a new version is available, so you're always running the latest release without a manual refresh.

  **Stripe Connect** - Fixed an edge case where Stripe Connect account links were generated with an incorrect URL scheme.
</Update>

<Update label="March 30, 2026" description="v0.8.0" tags={["Feature", "CRM"]}>
  ## Lead Rejection Reasons

  When marking a lead as Rejected — whether from the detail page, table, or by dragging on the kanban board — you're now prompted to select a reason and add optional notes.

  **Standard Reasons** - Choose from a set of built-in rejection reasons (e.g. Budget, Timing, Competitor) so you always know why a lead didn't close.

  **Rejection Banner** - A contextual banner on the lead detail page surfaces the reason and notes at a glance, and the reason can be updated at any time.

  ## Inquiry Source Attribution

  Every new inquiry now records where it came from so you can understand which channels drive your business.

  **Source Badges** - Leads in your pipeline display a source badge (Google Ads, Facebook, Organic Search, Referral, or Direct) so you can see attribution at a glance.

  **Source Detail** - The lead detail page shows the full attribution breakdown.

  ## Google Ads Conversion Tracking

  When a prospect submits your inquiry form, Cortado can now fire a Google Ads conversion event automatically.

  **One-Time Setup** - Add your Google Ads conversion label in Form Customization settings — no code changes required.

  ## Inquiry CC Email

  Add a secondary email address to receive a copy of every new inquiry notification.

  **CC Address** - Configure an inquiry CC email in Organization Settings. All new inquiry alerts will CC that address in addition to your primary contact.

  ## Barista & Cart Count on Events

  Track staffing requirements directly on each event.

  **New Fields** - Barista count and cart count are now available on all event forms, including events inside quotes. Cart count is validated to never exceed barista count.

  **Columns in Events Table** - Both counts appear as columns in the events detail table for quick reference.

  ## Accept Quote as Admin

  Admins can now accept a quote on a customer's behalf directly from the lead detail page — no need to send the customer a portal link.

  **Select a Quote** - When moving a lead to the booked stage, choose an existing quote (or proceed without one) to instantly create the booking, events, and invoice.

  ## Leads Reporting

  The Reports page now includes a full leads dashboard.

  **KPI Cards** - See total leads, close rate, and average deal size with period-over-period change indicators.

  **Stage Breakdown** - A visual chart shows how leads are distributed across your pipeline stages for the selected time frame.

  **Flexible Date Ranges** - Choose from presets or set a custom range, with an optional comparison period.

  ## Daily Activity Summary

  The Reports page now includes a Daily Activity Summary section showing everything that happened on any given day.

  **Notes & Tasks** - See all notes created and tasks completed across your entire organization for the selected date. Defaults to yesterday.

  **Linked Context** - Each item links directly to the related lead, event, booking, or invoice.

  ## Form Item Ordering

  Drag and drop to reorder the services and items displayed on your inquiry form.

  **Custom Order** - Rearrange items in Form Settings to control exactly how they appear to customers filling out your form.

  ## Settings Navigation

  Settings have been reorganized into six clearly labeled domain groups, making it faster to find what you're looking for.
</Update>

<Update label="March 20, 2026" description="v0.7.6" tags={["Feature", "Reporting"]}>
  ## Revenue Intelligence Dashboard

  A full analytics dashboard replaces the reports placeholder, giving you real-time visibility into your business performance.

  **Key Metrics** - See Collected revenue, Outstanding balance, Total Pipeline value, Average Invoice size, and Close Rate at a glance with color-coded KPI cards.

  **Revenue Trends** - A monthly dual-bar chart shows collected vs. invoiced revenue over the past year so you can spot trends and seasonal patterns.

  **Revenue by Event Type** - A horizontal breakdown shows which event types generate the most revenue, with event count badges for context.

  **Lead Conversion Funnel** - Visualize how leads move through your pipeline from New to Accepted, with counts at each stage.

  **Date Range Filtering** - Toggle between preset periods (This Week, This Month, This Year, etc.) to slice all metrics by the time range that matters.

  ## Google Calendar Picker

  Choose which Google Calendar to sync your events to — no more manual "Events" calendar setup.

  **Calendar Dropdown** - After connecting Gmail, select any calendar from your Google account as the sync target. Your selection is saved and shown with a green "Connected" status.

  **Simplified Setup** - Replaces the previous 7-step manual calendar creation instructions with a single dropdown picker.

  ## Slack Channel Management

  Select exactly which Slack channels receive new inquiry notifications.

  **Multi-Channel Selection** - Pick one or more channels from a searchable dropdown. Private channels are indicated with a lock icon.

  **Channel Badges** - Selected channels appear as dismissible badges so you can see and manage your notification targets at a glance.

  **Clean Disconnect** - Disconnecting Slack now fully revokes the integration and clears all channel data.

  ## Inventory Ratio Percentages

  **Per-Item Ratios** - Assign a ratio percentage to each inventory item (e.g., 80% wine, 20% spirits) so drink calculations reflect your actual service mix.
</Update>

<Update label="March 17, 2026" description="v0.7.5" tags={["Feature", "Invoicing"]}>
  ## Per-Invoice Payment Methods

  Each invoice can now specify which payment methods to offer at checkout — choose between credit card, ACH bank transfer, or both. When no override is set, the invoice falls back to your organization's default payment settings.

  **Custom Payment Methods** - Toggle "Use custom payment methods" in the invoice Details tab to override the default for that specific invoice.

  ## Fixes

  **Checkout Reliability** - Resolved an issue where retrying a checkout could fail due to a duplicate request error.

  **Quote Comparison** - Line items now display correctly in the portal's quote comparison view.

  **Quote Templates** - The quote template editor now pre-populates with existing values when editing a template.
</Update>

<Update label="March 12, 2026" description="v0.7.4" tags={["Feature", "Integrations"]}>
  ## Slack Integration

  Connect your Slack workspace to receive new inquiry notifications directly in Slack.

  **Connect via OAuth** - Go to Organization Settings → Integrations to connect your Slack workspace in a few clicks.

  **Choose Your Channel** - After connecting, select which Slack channel should receive inquiry notifications—keep your whole team in the loop without checking the app.
</Update>

<Update label="March 11, 2026" description="v0.7.3" tags={["Feature", "UX"]}>
  ## Single-Page Inquiry Form

  Your inquiry form can now be embedded in two modes: the standard multi-step wizard, or a new single-page format with all fields visible at once.

  **Embed Options** - The embed settings in Form Customization now show both modes as tabs with separate embed code for each. Single-page mode is ideal for customers who prefer to see all fields upfront.

  ## Quote Workflow

  **Send After Creating** - After creating a new quote, you're now immediately prompted to send it to the customer—fewer steps between creating a quote and getting it in your client's inbox.

  **Auto-Advance to Quote Sent** - When you send a quote for the first time, the lead automatically advances to the "Quote Sent" stage.

  **Gmail Auto-Default** - When you first connect a Gmail account, it's automatically set as the default sender so emails work without any extra setup.

  ## Invoice Payment Schedule Editing

  Payment schedules on existing invoices can now be edited with the same full experience as when creating new ones.

  **Edit Schedules Inline** - Add, modify, or remove payment schedules from the invoice edit sheet using the same preset templates available when first creating an invoice.

  ## Task Context

  **Parent Name on Task Cards** - Task cards in the kanban board now display the name of the related lead, event, booking, or invoice so you always know what each task is for at a glance.

  ## Employee Scheduling

  The scheduling section on event pages has been redesigned for easier use.

  **Date & Time Together** - Date and time are now set in a compact 2-column layout.

  **Duration Picker** - Set event duration with +/- controls at 15-minute intervals.

  **Staff List View** - Scheduled staff appear as a compact list with avatar, name, status, and shift details instead of a table.

  ## Multi-Day Calendar Events

  **Full Date Coverage** - Inquiries with multiple events now appear on each event date in your calendar, making it easier to spot potential conflicts at a glance.

  ## Fixes

  **Events Summary** - Events summary cards now always display on the dashboard, even when the count is 0. Cancelled events are correctly excluded from the "Total Upcoming" count.

  **Activity Feed** - Quote activity items in the activity feed are now clickable and navigate directly to the related lead.

  **Portal Acceptance** - The booking confirmation in the customer portal now includes the event duration and a personalized greeting.
</Update>

<Update label="March 3, 2026" description="v0.7.2" tags={["Improvement", "CRM"]}>
  ## Company Auto-Matching

  New inquiries are now automatically linked to existing companies in your CRM based on the contact's email domain.

  **Automatic Linking** - When a new inquiry comes in, Cortado checks the contact's email domain against your company records and associates them automatically—no manual linking required.

  ## Inquiry Form Improvements

  **Skips Empty Steps** - The add-ons step is now automatically skipped when no add-on services are configured, keeping your inquiry form streamlined for customers.

  ## Payment Reliability

  **ACH Refund Reversals** - If an ACH bank transfer refund fails, the payment record is automatically corrected to reflect the reversal.

  **Double-Charge Prevention** - Additional safeguards prevent duplicate charges from being processed in edge-case payment scenarios.
</Update>

<Update label="February 20, 2026" description="v0.7.1" tags={["Improvement", "Invoicing"]}>
  ## Payment Reliability

  Significant improvements to payment processing, refund handling, and webhook reliability across the platform.

  **Concurrent Payment Safety** - Payments are now protected against race conditions when multiple payments or refunds happen simultaneously, ensuring accurate balance tracking.

  **Webhook Processing** - Stripe webhook events are now processed more reliably with duplicate detection and automatic retry handling for transient failures.

  **Refund Accuracy** - Refund processing now correctly updates invoice balances and payment schedules in a single atomic operation, preventing inconsistencies.

  **Idempotent Payments** - Manual payments and charge operations now use idempotency keys to prevent duplicate charges if a request is retried.

  ## Leads Filter Redesign

  The leads filter bar has been redesigned with a cleaner, Linear-style interface.

  **Inline Filter Badges** - Active filters now display as compact badges directly in the toolbar, making it easy to see and modify your current filters at a glance.

  **Improved Interactions** - Filter dropdowns open inline with better keyboard navigation and clearer visual feedback for selected options.

  ## Portal Improvements

  **Event Details on Inquiries** - The customer portal inquiry page now displays event information, giving customers visibility into their event details before a booking is confirmed.

  ## Quote Emails

  **Custom Subject Lines** - Quote emails now correctly apply custom subject line overrides configured in your email settings.

  **Text Customization** - Custom text slot overrides are now properly applied to quote emails, ensuring your branded messaging comes through consistently.

  ## Background Reliability

  **Automatic Retries** - Background operations like payment processing, notifications, and calendar syncs now use tiered retry policies, automatically recovering from transient failures without manual intervention.

  **Error Monitoring** - All background workflows now report failures to centralized monitoring, enabling faster identification and resolution of issues.
</Update>

<Update label="February 3, 2026" description="v0.7.0" tags={["Feature", "Invoicing"]}>
  ## Quote Templates

  Create reusable templates for event-type-specific pricing to speed up quote creation.

  **Template Management** - Define quote templates in Payment Settings with default line items, base rates, and hourly rates for each event type.

  **Auto-Apply Templates** - When creating a quote, templates matching the event type are automatically applied, pre-populating line items and pricing.

  **Custom Rates** - Set base rates and hourly rates per template that calculate pricing based on event duration and guest count.

  ## Reporting Dashboard

  Track your business performance with new reporting metrics.

  **Close Rate** - See your lead-to-booking conversion percentage with trend comparisons to previous periods, last month, or same period last year.

  **Leads Count** - Monitor total inquiries received with breakdown by pipeline stage. Compare across custom date ranges.

  **Flexible Date Ranges** - Choose from presets (This Week, Last Week, This Month, etc.) or set custom date ranges for both current and comparison periods.

  ## Sidebar Improvements

  **Collapsible Sections** - Sidebar navigation sections can now be collapsed and expanded. Your preferences are saved automatically.

  ## Lead Filtering

  **Received Date Filter** - Filter leads by when they were received using preset ranges or custom dates.

  ## Quote Builder Improvements

  **Enforced Tip Pre-population** - When an event type has an enforced tip percentage, it's automatically applied when creating quotes.

  **Item Ordering** - Quote items now maintain consistent ordering with proper hours calculations.

  ## Bug Fixes

  **Currency Input** - Currency fields now format values on blur instead of during typing for a smoother editing experience.

  **Catalog Management** - Fixed dropdown event propagation issues and improved delete button styling for catalog items.
</Update>

<Update label="January 28, 2026" description="v0.6.3" tags={["Feature", "Invoicing"]}>
  ## Terms & Conditions

  Define your organization's terms and conditions that customers see when reviewing quotes and invoices.

  **Custom Clauses** - Create multiple clauses with titles and content. Reorder clauses to control how they appear to customers.

  **Customer Portal** - Terms are displayed in the portal footer with a link that opens a modal showing all clauses in order.

  ## Event Details in Tables

  **Event Type & Location** - The events table and event detail sheet now display event type and location directly, making it easier to see key event information at a glance.
</Update>

<Update label="January 28, 2026" description="v0.6.2" tags={["Feature", "CRM"]}>
  ## Quick Tags for Leads

  Quickly categorize your leads with visual tags for faster pipeline management.

  **Tag Options** - Mark leads with Follow Up, Urgent, Hot Lead, VIP, or Waiting tags to prioritize your outreach and track lead status at a glance.

  **Icon Display** - Tags appear as intuitive icons on lead cards in the kanban board, keeping the interface clean while providing instant visual cues.

  **Tag Legend** - Hover over tags to see what each icon represents, or view the legend to learn all available tag types.
</Update>

<Update label="January 27, 2026" description="v0.6.1" tags={["Feature", "Platform"]}>
  ## Tasks Kanban

  Manage your tasks visually with the new kanban board view.

  **Kanban Board** - View tasks organized by status (Pending, In Progress, Complete) in a drag-and-drop interface.

  **Filtering** - Filter tasks by assignee, priority, or due date to focus on what matters.

  ## Event Archiving

  Archive events you no longer need without permanently deleting them.

  **Soft Delete** - Archive events to remove them from active views while preserving the data for historical records.

  ## Lead Events Card

  The lead detail page now shows events more prominently.

  **Stats Header** - See key event metrics at a glance including total events and upcoming dates.

  **Events Card** - Events are now displayed in a dedicated card on the lead detail page for easier access.

  ## Feedback Categories

  Organize feedback with type categories.

  **Feedback Types** - Categorize feedback as Bug, Feature Request, or General to help prioritize and track submissions.

  ## UI Improvements

  **Event Details** - Event type and location fields are now available directly on events, not just inquiries.

  **Places Autocomplete** - Location fields now include Google Places autocomplete for faster, more accurate address entry.
</Update>

<Update label="January 27, 2026" description="v0.6.0" tags={["Feature", "Events"]}>
  ## Multi-Event Inquiries

  Inquiries can now include multiple events, making it easy to manage multi-day events, event series, and complex bookings.

  **Events Tab** - Each lead now has a dedicated Events tab showing all associated event dates. Add, edit, or remove events directly from the lead detail page.

  **Event Details** - Each event includes its own date, start time, duration, guest count, event type, and location. Changes sync automatically when converting to a booking.

  **Flexible Scheduling** - Perfect for multi-day weddings, corporate event series, or any booking that spans multiple dates.

  ## Multi-Event Quotes

  Quotes now support multiple events with per-event pricing and details.

  **Quote Events Section** - Add multiple event dates to a single quote, each with its own time, duration, and guest count.

  **Event Management** - Edit or remove events directly from the quote builder. Events are displayed with clear date and time formatting.

  ## Notification Bulk Actions

  **Mark All as Read** - Clear all unread notifications with a single click from the notification popover.

  **Archive All** - Archive all notifications at once to keep your inbox clean.

  ## Leads Kanban Improvements

  **Relative Timestamps** - Lead cards now show relative time (e.g., "2 hours ago") with a tooltip showing the exact date and time.

  ## Bug Fixes

  **Date Handling** - Fixed issues with invalid dates and NaN values in date formatting utilities.

  **Booking Events** - Fixed an issue where booking events weren't properly created from quote events when accepting a lead.

  **Dialog Buttons** - Fixed destructive dialog buttons to use proper white text for better readability.
</Update>

<Update label="January 15, 2026" description="v0.5.6" tags={["Feature", "Platform"]}>
  ## Notification Center

  Stay informed with real-time notifications about activity across your organization.

  **Bell Icon** - A new notification bell in the header shows your unread notification count at a glance.

  **Activity Feed** - Click the bell to see recent notifications including new inquiries, payment updates, and event changes.

  **Quick Actions** - Mark notifications as read or archive them directly from the feed. Click any notification to jump to the related item.

  ## Google Analytics Improvements

  **Expanded Tag Support** - Google Analytics now supports additional tag formats (GT- and AW- prefixes) in addition to the standard G- format.
</Update>

<Update label="January 15, 2026" description="v0.5.5" tags={["Feature", "Platform"]}>
  ## Custom Form Subdomains

  Your inquiry forms can now live on a personalized subdomain for a more professional, branded experience.

  **Organization Slug** - Set a custom slug in Organization Settings to create your unique form URL (e.g., `yourcompany.cortadopro.com`).

  ## Google Analytics for Forms

  Track inquiry form engagement with native Google Analytics 4 integration.

  **GA4 Measurement ID** - Add your Google Tag ID in Form Customization settings to enable tracking.

  **Automatic Event Tracking** - Form submissions, step completions, and user interactions are automatically tracked as GA4 events.

  ## Contact Management Improvements

  **Duplicate Email Detection** - When adding contacts inline, Cortado now checks for existing contacts with the same email and shows a warning before creating duplicates.

  **Preserved Note Drafts** - Note content you're writing is now preserved when the sheet closes and reopens, so you won't lose work in progress.
</Update>

<Update label="January 14, 2026" description="v0.5.4" tags={["Feature", "Improvement"]}>
  ## Scheduling Conflict Detection

  Lead detail pages now show potential scheduling conflicts to help you avoid double-booking.

  **Overlap Detection** - When viewing a lead, Cortado automatically checks for other events and leads that might overlap with the proposed event time.

  **Two-Column Layout** - Conflicts are organized into Events and Leads columns, each with count badges and direct navigation links.

  **Smart Buffering** - Overlap detection uses your organization's setup and teardown time settings to account for preparation time between events.

  ## Invoice Payment Display

  **Celebratory Styling** - Paid invoices now display totals in green with a clear tip breakdown (e.g., "$1,250 + $100 tip").

  **Visual Feedback** - Invoice cards on event pages provide at-a-glance payment status with improved styling for completed payments.

  ## Enforced Minimum Tips

  **Automatic Enforcement** - The customer portal now automatically enforces minimum tip percentages configured per event type.

  **Smart Selection** - When a customer's selected tip is below the enforced minimum, the tip selector auto-adjusts to meet the requirement.

  ## Bug Fixes

  **TimePicker Scrolling** - Fixed an issue where mouse wheel scrolling didn't work in the time picker when opened inside a sheet.

  **Refund-Aware Payment Schedules** - Payment schedule progression now correctly accounts for goodwill refunds when determining which schedule to pay next.
</Update>

<Update label="January 13, 2026" description="v0.5.3" tags={["Feature", "Platform"]}>
  ## Activity Feed

  Your dashboard now shows a real-time activity feed so you can see what's happening across your organization at a glance.

  **Recent Activity** - See the latest actions including new inquiries, quote updates, payment activity, event changes, and more—all in one unified timeline.

  **Direct Navigation** - Click any activity to jump directly to the related lead, event, invoice, or contact.

  **Automatic Tracking** - Activities are logged automatically as you work, including when bookings are created from accepted quotes.

  ## Contact Header Improvements

  **Avatar Display** - Contact headers now show avatar initials for a more personalized experience.

  **Improved Layout** - The contact header component has been refreshed with a cleaner, more organized design.
</Update>

<Update label="January 13, 2026" description="v0.5.2" tags={["Improvement", "UX"]}>
  ## Inquiry Form Redesign

  The embeddable inquiry form has been refreshed with a cleaner, minimal design for a better customer experience.

  **Streamlined Layout** - A new progress indicator and simplified navigation make it easier for customers to complete inquiries.

  **Improved Reliability** - Forms now include automatic fallback handling to ensure submissions go through even when connectivity issues occur.

  ## Google Calendar Enhancements

  **Manual Sync Button** - Trigger a calendar sync on demand from the event detail page when you need immediate updates.

  **Auto-Sync on Acceptance** - Events now automatically sync to Google Calendar when a lead is accepted, keeping your calendar current without extra steps.

  ## Lead Information

  **Event Days Display** - The lead information card now shows the number of event days, giving you a quick view of multi-day event scope.
</Update>

<Update label="January 13, 2026" description="v0.5.1" tags={["Feature", "CRM"]}>
  ## Company Management

  Organize your contacts by company with full company management capabilities.

  **Company Directory** - View all companies in a searchable list at `/crm/companies`. Create new companies with name, website, phone, and address fields.

  **Company Detail Pages** - Each company has a dedicated detail page showing company info, associated contacts, notes, and tasks.

  **Contact Associations** - Link contacts to companies and view the relationship from both sides. Add or remove contacts from companies with dedicated dialogs.

  ## Enhanced Contact Details

  Contact detail pages now provide a complete view of each contact's activity and relationships.

  **Related Inquiries** - See all inquiries associated with a contact directly on their detail page.

  **Related Events** - View all events linked to the contact without navigating away.

  **Company Links** - Contacts now show their company associations with direct links to company detail pages.

  **Unified Activity Tabs** - Notes and tasks are now displayed in a unified tabbed interface for cleaner organization.

  ## Bug Fixes

  **Phone Formatting** - Phone numbers now display consistently as (XXX) XXX-XXXX format on contact and company pages.

  **Breadcrumb Fixes** - CRM routes now correctly show "CRM" as the root breadcrumb, and "Companies" properly singularizes to "Company" in detail page breadcrumbs.
</Update>

<Update label="January 13, 2026" description="v0.5.0" tags={["Feature", "Platform"]}>
  ## Weekly Notification System

  Stay informed about your business with automated email summaries delivered on your schedule.

  **Notification Types** - Configure multiple notification types including weekly summaries, overdue task alerts, stale lead reminders, upcoming event notifications, and payment reminders.

  **Flexible Scheduling** - Choose daily, weekly, or monthly delivery with configurable time and day preferences. Weekly notifications can be set to any day of the week, and monthly notifications can target specific days of the month.

  **Content Customization** - Select exactly what to include in each notification: events, tasks, leads, or payments. Filter by stage to focus on what matters most—upcoming events, new leads, overdue tasks, or pending payments.

  **Additional Recipients** - Add extra email recipients to any notification type, ensuring the right team members stay in the loop.

  ## Dashboard Payment Schedules

  Your dashboard now surfaces critical payment information at a glance.

  **Overdue Payments** - See which payment schedules are past due and need attention.

  **Upcoming Payments** - Track payments that are due soon to stay ahead of your cash flow.

  ## Quote Expiration Dates

  **Update Valid Until** - Edit the expiration date on quote revisions directly, giving you flexibility to extend or shorten quote validity periods.
</Update>

<Update label="January 12, 2026" description="v0.4.0" tags={["Feature", "Invoicing"]}>
  ## Stripe Checkout Sessions

  A complete overhaul of the payment system, migrating from Payment Intents to Stripe Checkout Sessions for a more reliable and feature-rich payment experience.

  **Embedded Checkout** - Customers now complete payments through Stripe's secure embedded checkout flow, with support for multiple payment methods including cards and ACH bank transfers.

  **ACH Bank Transfers** - Customers can pay via bank transfer with automatic microdeposit verification. Email notifications guide customers through the verification process.

  **Payment Processing States** - Real-time payment status updates show customers exactly where their payment stands—from processing to verified to complete.

  **Tip Selection** - Customers can add gratuity during checkout with preset percentage options or a custom amount.

  ## Invoice Refunds

  Full refund management directly within Cortado.

  **Issue Refunds** - Process full or partial refunds on any payment with automatic Stripe integration.

  **Goodwill Refunds** - Track refunds that go beyond the original payment amount for customer service situations.

  **Refund Notifications** - Customers receive email confirmation when refunds are processed.

  ## Payment Schedule Improvements

  **Payment Progress** - Visual progress bars show how much has been paid on each schedule.

  **Manual Payments** - Record cash, check, or other offline payments with receipt and void notification emails.

  **Tip Distribution** - Tips can be applied to the final payment schedule or distributed across all schedules.

  ## Customer Portal Redesign

  **Invoice Sidebar** - A new sidebar layout shows all invoices for a booking, making it easy for customers to navigate between multiple invoices.

  **Share via Email** - Send quote and invoice links directly to customers with a single click.

  **Secure Links** - Portal links now include JWT tokens for enhanced security.

  ## Payment Filtering & Management

  **Payment Filter Toolbar** - Filter invoices by payment status, date range, and amount on the invoices page.

  **Disputes Dashboard** - New settings page to view and manage Stripe payment disputes.

  **Webhook Management** - View and manage Stripe webhooks in a new settings page, with sections for failed, stale, and all webhook events.

  ## Enforced Tips

  Configure mandatory gratuity percentages by event type to ensure consistent tipping policies across your organization.

  **Per-Event-Type Settings** - Set different enforced tip percentages for Corporate, Wedding, Party, and other event types in Payment Settings.

  **Automatic Application** - Enforced tips are automatically applied when creating quotes for matching event types.

  ## Quote Improvements

  **Quote Cancellation** - Quotes can now be marked as cancelled to better track declined or withdrawn proposals.
</Update>

<Update label="January 12, 2026" description="v0.3.2" tags={["Fix", "CRM"]}>
  ## Lead Items Preserved on Stage Changes

  Fixed an issue where selected services and items on a lead were being removed when changing the lead's stage.

  **Stage Updates** - Changing a lead's stage (New, In Progress, Quote Sent, etc.) now correctly preserves all selected items and services.
</Update>

<Update label="January 5, 2026" description="v0.3.1" tags={["Feature", "Settings"]}>
  ## Calendar Settings

  A new Calendar section in Email & Calendar settings helps you configure Google Calendar integration.

  **Calendar Status Check** - See at a glance whether your "Events" calendar is properly configured. A green indicator shows when everything is ready, while a red alert guides you if setup is needed.

  **Check Again Button** - After creating your calendar in Google, click "Check Again" to verify the connection without refreshing the page.

  **Step-by-Step Setup Guide** - Clear instructions walk you through creating the required "Events" calendar in Google Calendar, with a direct link to calendar.google.com.
</Update>

<Update label="January 5, 2026" description="v0.3.0" tags={["Feature", "Integrations"]}>
  ## Google Calendar Sync

  Events in Cortado now automatically sync with Google Calendar, keeping your calendar up to date without manual entry.

  **Automatic Sync** - When events are created or updated in Cortado, they're automatically synced to your connected Google Calendar account in the background.

  **Stay in Sync** - Changes to event details like date, time, location, and guest count are automatically reflected in Google Calendar. New events are created automatically, and existing ones are updated when you make changes.

  ## Browser Tab Titles

  Browser tab titles now automatically update to show the current page name (e.g., "Cortado Pro - Events"), making it easier to navigate multiple tabs and find the right page quickly.
</Update>

<Update label="December 31, 2025" description="v0.2.0" tags={["Feature", "Platform"]}>
  ## Signup & Onboarding

  A complete signup and onboarding experience to get new users set up quickly.

  **Signup Flow** - New users can create an account with email and password, then complete their profile with first and last name.

  **Password Recovery** - Forgot your password? Request a reset link via email, or use magic link authentication to sign in without a password.

  **Guided Onboarding** - After signing up, users are guided through setting up their organization with a step-by-step wizard:

  * **Add Services** - Choose from preset service items or create custom ones to build your service catalog
  * **Form Setup** - Configure your lead capture form with a live preview showing exactly how it will appear on your website
  * **Invite Team** - Add team members by email with role assignments using a multi-select dropdown
  * **Connect Gmail** - Link your Gmail account to send emails directly from Cortado
  * **Connect Stripe** - Set up Stripe to accept payments from customers

  **Progress Tracking** - A sidebar shows your progress through each step, with checkmarks for completed steps and the ability to skip ahead or come back later.
</Update>

<Update label="December 26, 2025" description="v0.1.6" tags={["Feature", "Events"]}>
  ## Create Events Directly

  You can now create events directly from the Events page without going through the leads pipeline first.

  **New Event Button** - A "New Event" button in the top right of the Events page opens a sheet to quickly create both a booking and its first event in one step.

  **Combined Form** - Select a contact, set event type and location, then add event details (date, time, duration, guest count) all in one place.

  **Streamlined Workflow** - Perfect for when you need to add an event that didn't come through your leads pipeline, or for quick event entry.
</Update>

<Update label="December 24, 2025" description="v0.1.6" tags={["Feature", "Improvement"]}>
  ## Calendar Stage Filtering

  Filter your calendar view by lead and event stages to focus on what matters.

  **Stage Filter Popover** - Click the new "Filter" button in the calendar header to select which lead stages (New, In Progress, Quote Sent, etc.) and event stages (Upcoming, Complete, Cancelled, etc.) to display.

  **Filter Count Badge** - See at a glance how many stage filters are currently active.

  ## Event Stage Updates

  Quickly update event stages directly from the event detail sheet.

  **Stage Dropdown** - Change an event's stage (Upcoming, Complete, Cancelled, Rescheduled, Postponed) using the dropdown in the event update form.

  ## Leads Event Date Filter

  A new badge-style filter on the leads page shows your active event date range filter with clear from/to dates.

  ## Payment Dispute & Refund Handling

  Stripe webhook events for disputes and refunds are now processed automatically via Temporal workflows.

  **Dispute Tracking** - When a customer opens a dispute, the system records dispute details including status, reason, and amount on the payment record.

  **Refund Processing** - Refunds are tracked with amount, reason, and status updates to keep your payment records accurate.
</Update>

<Update label="December 17, 2025" description="v0.1.5" tags={["Feature", "Improvement"]}>
  ## Invoice Detail Page Redesign

  We've completely rebuilt the invoice detail page with a professional, view-first design optimized for quickly reviewing invoice status and taking actions.

  **Two-Column Layout** - A new 380px sidebar with main content area provides better organization. The sidebar shows key invoice information at a glance, while the main area displays detailed breakdowns.

  **Invoice Summary Card** - See the invoice status, total amount with a large display, payment progress bar, and paid/due breakdown all in one place. Key dates (created, sent, next due) are easily visible.

  **Quick Actions** - Context-aware action buttons change based on invoice status. Draft invoices show "Send Invoice", sent invoices show "Record Payment", and paid invoices show "Download Receipt". Additional actions include Resend, Copy Link, Edit, and PDF download.

  **Status Timeline** - A visual timeline banner shows the invoice progression from Created → Sent → Viewed → Paid, with timestamps for completed steps.

  **Line Items Card** - Clean, collapsible display of all line items with quantity, unit price, and totals. Includes full breakdown of subtotal, discounts, sales tax, gratuity, and final total.

  **Payment Schedules Card** - Visual timeline of payment schedules with per-schedule progress bars, status badges (Pending, Partial, Paid, Overdue), and "Pay" buttons for recording payments.

  **Integrated Activity** - Notes, tasks, and payment history are now seamlessly integrated into the invoice detail view.
</Update>

<Update label="December 17, 2025" description="v0.1.4" tags={["Feature", "Platform"]}>
  ## Feedback

  Share your thoughts directly within Cortado with the new feedback feature.

  **Submit Feedback** - Click "Add Feedback" on the Feedback page to open a dialog and share your suggestions, feature requests, or report issues.

  **View All Feedback** - See all feedback submitted by your organization's team members in one place, with status badges showing the current stage of each item.

  **Upvote Feedback** - Show support for ideas by upvoting feedback items. Your own feedback is automatically upvoted when submitted. Feedback is sorted by upvote count so popular ideas rise to the top.

  **Edit & Delete** - Manage your own submissions with edit and delete options available from the card menu.
</Update>

<Update label="December 17, 2025" description="v0.1.3" tags={["Improvement", "UX"]}>
  ## Advanced Leads Filtering

  We've significantly improved the filtering experience for leads with unified controls across both table and kanban views.

  **Custom "Since" Date Filter** - Filter leads received since a specific date. Choose from presets (Past 3 Days, Past Week, Past Month) or pick a custom date to see all leads received from that point forward.

  **Event Date Range Filter** - Filter leads by their event date using a flexible from/to date picker.

  **Event Type & Stage Filters** - Narrow down leads by event type or pipeline stage with multi-select filters.

  **Unified Views** - Filters are now synchronized between table and kanban views. Switch between views without losing your filter selections.

  **Persistent Filters** - Your filter preferences are automatically saved to local storage and restored when you return.
</Update>

<Update label="December 13, 2025" description="v0.1.1" tags={["Improvement", "UX"]}>
  ## Global Search

  Find anything instantly with the new global search bar in the header. Press `⌘K` (or `Ctrl+K` on Windows) to jump to search, or just start typing.

  **Smart Search** - Search across contacts, leads, events, and invoices all at once. Results are fuzzy-matched and ranked by relevance.

  **Keyboard Navigation** - Use arrow keys to navigate results, Enter to select, and Escape to close. Results are organized by category for quick scanning.

  **Search Fields:**

  * Contacts: name, email, phone number
  * Leads: contact name, event type
  * Events: contact name, event date
  * Invoices: invoice number, contact name, title

  ## Contact Management on Leads & Events

  We've added quick contact management actions directly on lead and event detail pages, making it easier to keep your contact information accurate without leaving your workflow.

  **Edit Contact** - Click the pencil icon next to any contact name to quickly update their first name, last name, email, or phone number. Changes are saved instantly and reflected across all associated leads and events.

  **Swap Contact** - Need to reassign a lead or event to a different contact? Click the refresh icon to open the contact selector, where you can search existing contacts or create a new one on the fly.

  Both features are available on:

  * Lead detail pages (`/leads/:id`)
  * Event detail pages (`/events/:id`)
</Update>

<Update label="December 13, 2025" description="v0.1.0" tags={["Feature", "Platform"]}>
  ## Beta Launch

  We're excited to introduce Cortado - your all-in-one CRM and event management platform with integrated payments.

  ## Core Features

  **Leads Pipeline** - Manage your sales pipeline with a visual kanban board. Drag and drop leads through stages from initial inquiry to booked.

  **Leads Table** - View and filter all your leads in a powerful table format with sorting and search.

  **Events Table** - Track all your upcoming and past events in one organized view.

  **Contacts Directory** - Build your customer database with a searchable contacts table.

  **Unified Calendar** - See both leads and events together in day, week, or month views.

  ## Quotes & Payments

  **Quote Builder** - Create professional quotes directly from leads with line-item pricing, sales tax per item, overall discounts, and gratuity settings.

  **Payment Schedules** - Set up flexible payment plans using fixed amounts or percentage-based installments.

  ## Lead Capture

  **Form Builder** - Create custom lead capture forms for your website.

  **Embeddable Forms** - Embed forms directly on your site to automatically create new leads.

  ## Integrations

  **Stripe** - Accept payments with native Stripe integration.

  **Gmail** - Connect your Gmail for integrated email communication.

  ## Platform

  * Redesigned dashboard with consistent styling
  * Reorganized sidebar navigation for better workflow
  * Improved settings organization for catalog and forms
</Update>
