What's New — Studio Lifesaver Changelog
Changelog

What’s new

We ship constantly. Here’s what’s changed recently.

September 14, 2026

Mini sessions book properly, and one link can show a set of sessions

Fixed

Mini session dates are now honoured when clients book online

If you set up a package as a Mini Session with specific dates, your booking page wasn't using them — clients saw an ordinary open calendar and could pick any day, any time, and type in their own location. Your mini session dates now drive the booking page: clients choose from the dates you set, at the times inside your window, and the venue comes from the date they pick rather than being something they enter. Sold-out and past dates are shown but can't be chosen.

Improved

Mini session dates show as a list, not a calendar

Because mini session dates are often weeks or months apart, a calendar hid half of them behind a “next month” arrow. Clients now see every date you're offering at once, each with its venue, its times, and how many slots are left.

New

Name each mini session date, and keep the venue name

Each date can now carry its own name — “Piedmont Park Minis”, “High Museum Minis” — which is what clients see when choosing between them. Picking a venue also keeps the place's name alongside its address, instead of showing clients a bare postcode.

New

Groups: one link that shows a chosen set of sessions

Service Packages now have a Groups tab. Put your consultation calls in one group and this year's mini session dates in another, and each group gets its own shareable link showing only those sessions — so you can send someone straight to your mini session dates without them wading through everything else. A session can belong to more than one group, and your main booking page shows them as sections. When a season is over, hide the group and it disappears from your booking page while the sessions themselves stay untouched.

Fixed

Rescheduling a mini session stays inside your dates

A client rescheduling a mini session could previously move it to any date at all. They now choose from the same mini session dates you're offering, with their current slot marked — or you can turn rescheduling off entirely and handle those by hand.

Improved

Duplicate session names and booking links are now caught

Two sessions sharing a name are impossible to tell apart in a list, and two sharing a booking link made that link ambiguous. Both are now refused when you save, with a message naming the session already using it. Duplicating a session suggests a free name and link rather than leaving you to fix a clash.

September 14, 2026

Discount codes, gift certificates, and invoice accuracy

Fixed

Discount codes work when booking online again

The booking page had only one code box, and it only ever checked gift certificates — so a perfectly good discount code came back as “Invalid or expired gift certificate code”. Discount codes now have their own box, are checked against your own rules for dates and usage limits, and reduce what the client actually pays.

Fixed

Tax is now charged on the discounted amount

When automatic tax calculation is switched on, a discount wasn't reducing the tax — a 50%-off code on a $100 session still charged tax on the full $100. Tax now follows the amount actually being paid, both when a client books and when you create an invoice by hand. Worth re-checking any recent discounted invoice.

Fixed

Gift certificates could not be created or redeemed

Creating a gift certificate reported an error even though it had been saved, the Discounts & Gift Certificates page could go blank, and certificates couldn't be applied by a client at checkout. All three came from one missing field and are fixed. Redeeming one now also reduces its balance where you can see it, marks it partly or fully used, and records which booking it went toward. Viewing a certificate finally shows its code, ready to copy.

Fixed

Contracts were showing clients raw placeholders

A contract presented during online booking arrived with its merge fields unfilled — clients were asked to sign a document reading “{{client.name}}”. Contracts are now filled in before the client sees them, using the same information as your proposals: name, address, session type and location, duration, price, retainer, tax and payment schedule. What the client signs is also saved as it appeared, so editing a template later never rewrites a contract someone already signed.

Fixed

Bookings with nothing left to pay can be completed

If a discount or gift certificate covered the whole amount, the booking couldn't be finished — it either asked for card details for $0.00 or reported that online payments weren't available. A booking with nothing due now completes without a payment step. A gift certificate also can't be spent against a zero balance any more, so its value isn't burned for nothing.

Fixed

Invoices now show the discount, the payment, and what is really left

On a discounted invoice the discount line was missing in several places, leaving a subtotal and total that didn't add up. After a part-payment the invoice kept showing the full amount as outstanding and still called itself paid. Invoices now show the discount and the code that produced it, what's been paid, the true balance due, and which scheduled payments are settled — the same way on your side, on the client's invoice, and in the client portal.

September 14, 2026

Opt-in checkboxes: naming, channels, and a clear current status

New

Give each opt-in a short name of your own

The wording a client reads is a full sentence — fine on a booking page, unwieldy as a list name or a column heading. Each opt-in can now carry a short name for your own use, like “Marketing email” or “SMS updates”, shown wherever you manage them. Renaming or rewording an opt-in never splits its history: the answers people have already given stay attached to it.

New

Say what each opt-in actually permits

Opt-ins aren't all about messaging — photo usage, a referral programme, bringing a pet. Each one now records whether it permits contact by email, by text message, or neither. Only the first two will ever feed a mailing list; the rest are recorded on the contact and left out. Opt-ins created before this stay unclassified until you choose, rather than being guessed at, and are excluded from mailing lists in the meantime.

New

A reminder about what belongs in a contract

Consent checkboxes are optional by design and never block a booking, so anyone who leaves one unticked books anyway. That makes them the wrong place for anything a client must agree to, like a liability or safety acknowledgement — that belongs in your contract, which is signed and can be required. The editor now says so where it's relevant.

Improved

A contact’s Consent section now leads with where they stand today

It used to list every answer a client had ever given, newest first, without saying which one counted — so someone who declined twice and later opted in showed three entries and no answer to the only question that matters: are they on the list? Each opt-in now shows its current status, the most recent answer winning, with the earlier answers kept in a history underneath so you can still see exactly when someone changed their mind.

Fixed

Consent on a session read as opted in either way

The consent summary on a session showed a tick or a dash beneath a green header, so a declined checkbox looked much like an accepted one — the answers were recorded correctly, they just weren't presented clearly. It now says “Opted in” or “Declined” outright, matching the contact page.

September 13, 2026

Ask clients for marketing consent while they book

New

Write your own opt-in checkboxes on any service package

Service Packages now have a Consent Checkboxes section where you write the wording yourself — "Email me about future sessions", "Text me when mini-session dates open", whatever matches how you actually market. Clients see them while booking that package. They're always optional, unchecked by default, and never block a booking.

New

Every answer is recorded, including the declines

An answer is saved whether the client ticks the box or leaves it alone, so "they said no" and "they were never asked" never look the same in your records — which is the distinction that matters if you're ever asked to show why someone was on a marketing list. Each answer is stored with its date and with the exact wording the client saw, so editing or deleting a checkbox later never rewrites what past clients actually agreed to.

New

See what each client agreed to, and when

Contacts now have a Consent section listing every response newest first — the checkbox wording, which package it came from, the date, and a clear Opted in or Declined badge. The answers given during a particular booking also show on that session.

September 4, 2026

Split-payment invoices now show the correct amount after a partial payment or gift certificate

Fixed

The next installment could show more than was actually owed

On an invoice with multiple scheduled payments, once a gift certificate or other partial payment had been applied toward an installment, the client's invoice page kept showing — and charging — that installment's full original amount instead of what was actually left to pay, even though the invoice's own balance-due total was correct. The next installment now reflects the true remaining amount, on the page and at checkout.

August 25, 2026

Gallery downloads restored, and big uploads no longer interrupt the app

Fixed

Download buttons in client galleries did nothing

Clicking download on a photo in a client gallery produced no file and no error message — it simply appeared to do nothing. An update on August 24th changed the address your galleries used to request photos, and every download request quietly went nowhere. Downloads work again across all your galleries, and the address is now worked out automatically so this particular failure can't come back.

Fixed

Clients couldn't sign in to the client portal

Signing in, resetting a password, or opening a client portal invitation link all failed with a "Not Found" message. This had the same cause as the gallery download problem — an update on August 24th changed the address those pages used to reach the server. Sign-in, password resets, and invitation links all work again.

Fixed

Publishing a large batch could interrupt the app partway through

Uploading a lot of photos at once — especially from the Lightroom plugin, which sends them one at a time — could use more memory than the server had and force a restart mid-upload, leaving the rest of the batch unprocessed. Photos are now prepared using a small fraction of the memory they needed before, and the number being processed at once is limited across the whole app instead of per batch. A 200-photo publish now runs comfortably start to finish. Your original files are untouched, and the web and thumbnail versions look exactly as they did.

August 25, 2026

A clearer to-do list, and downloads that tell you when something goes wrong

Improved

Active Tasks now show which client and session they belong to

Tasks created by your workflows carry generic titles like "Send pre-session check-in email" — useful, until you have several sessions running and can't tell which one a task is about. Each task on your dashboard now shows the client and the session it belongs to, including the session date and time, so you can tell at a glance what needs doing and for whom. Tasks that aren't tied to a session are unchanged.

Improved

Failed gallery downloads now explain themselves

If a photo download failed, the download icon simply stopped spinning and nothing happened — leaving your client with no idea whether to wait, retry, or contact you. Failed downloads now show a short, plain-language message, and where you've set a studio contact email, it points your client to it.

August 24, 2026

Invoice fix: split payments showing to clients when they were turned off

Fixed

Client invoices showed a payment schedule you never set

An invoice saved with Split Payments turned off and a custom due date could still show your client two installments — the default from the session's booking package — and hide the due date you'd set. The Pay button charged the full total regardless, so a client could select a $100 installment and then be asked for the whole balance. Your client's view now matches exactly what you set on the invoice.

Fixed

Turning off Split Payments now clears the schedule for good

Unchecking Split Payments left the old schedule stored on the invoice behind the scenes, where it could resurface on your client's view. It's now cleared when you save. If an installment has already been paid, the schedule is left alone so your payment history is never lost.

August 23, 2026

Publish straight from Lightroom, and faster gallery uploads

New

Lightroom Classic plugin

Publish photos directly from Lightroom Classic into a Studio Lifesaver gallery — no browser upload needed. Create a new gallery or attach to one that already exists (like one created when you booked the session), right from Lightroom's Publish panel. Set it up from Settings → Integrations → Lightroom Plugin, which walks you through downloading the plugin, installing it, and generating a Connection Key — a revocable credential the plugin uses instead of your account password.

New

Link any gallery to a client and session, anytime

Creating a new gallery now starts by searching for a client, then choosing one of their sessions shown with dates — much easier to navigate than one long list of sessions that often share the same name. Already have a gallery that isn't linked yet (say, one created from Lightroom, or one you meant to attach at booking)? You can now link it to a client and session — or change an existing link — right from the gallery's Settings tab, or attach an existing gallery to a session from the session's own page.

Improved

Faster processing for large galleries

After you upload photos, Studio Lifesaver generates the web and thumbnail sizes your clients actually see. That now happens for multiple photos at once instead of strictly one at a time, meaningfully speeding up big uploads like a full wedding.

Fixed

QuickBooks settings showing up for accounts that never connected QuickBooks

The category and account mapping sections — including a nag about unmapped categories — were appearing even if you'd never connected QuickBooks. That section is also now collapsed by default, so it doesn't push your other Integrations settings out of view.

August 11, 2026

Choosing your H1, routing, and mobile speed fixes

New

Choose which line of your Hero is the H1

If your Hero section has both an eyebrow and a main heading, you can now pick which one search engines treat as your page's H1 — independent of which one looks biggest. Model your title tag around your location and specialty while keeping your preferred line visually dominant, or leave it as-is.

Fixed

Content pages could still fall back to the booking screen during a brief backend hiccup

A previous fix caught routing checks that timed out, but missed ones that came back with an outright error response — which can happen for a few seconds during routine backend restarts. Those were wrongly treated as a confirmed "this isn't a real page" answer, so pages like /about or /contact could briefly show the generic booking screen with a plain "Client Portal" title instead of your real content. Now treated the same safe way as a timeout: when we're not sure, your real page wins.

Fixed

Hero background photo wasn't sized for mobile

Your homepage's main photo was always sending the full, largest version of the image — even to a phone on a slow connection. It now sends an appropriately-sized version based on screen size, the same way every other image on your site already does. This was the single biggest factor in a poor mobile speed score.

Improved

Faster connection to your photo storage

Fixed a mismatch that had your site preparing a fast connection to the wrong step of your photo delivery. It now connects early to the step that actually matters, shaving meaningful time off how quickly your images can start loading.

Improved

Smaller, more modern site code

Published sites were shipping a small amount of extra compatibility code for browser versions that are no longer in real use. Trimmed, for a slightly faster page load on every visit.

August 10, 2026

Business info, structured data, and site speed

New

Business Info: phone, address, and areas served

Add a phone number and address to your Site Settings — pulled from your existing Business Settings, so you never have to enter it twice — plus a new list of the cities and regions you serve. This now powers a clickable phone/email in your footer and richer info in your site's search-engine listing.

Improved

Richer search-engine listing info

Every published site now includes your business phone, address, and service areas in its structured data, alongside your name and description — helping search engines show more complete local-business results.

Improved

Faster mobile page loads

Your homepage's main photo now loads with priority instead of competing with everything else on the page, portfolio thumbnails request an appropriately-sized image instead of a full-resolution one, and fonts no longer block the page from rendering. Aimed squarely at mobile load times, where this matters most.

Fixed

Footer phone number wasn't showing on most layouts

The footer's phone/email display only worked if you'd switched to the "Columns" footer layout — every other layout, including the default, had no way to show it at all. It now shows automatically on every layout as soon as a phone number is set.

Fixed

Booking page link showed the wrong URL

If your booking page lives on its own domain or subdomain, Site Settings was showing an incorrect link reconstructed from your website's own domain instead of your real booking URL. Fixed.

Fixed

Business address could run together without a space

If your saved address spans two lines (street, then city/state/zip), it could display — and appear in your site's search-engine listing — with no space between them, e.g. "...Cir NAtlanta" instead of "...Cir N, Atlanta". Fixed.

Fixed

Some website pages could intermittently show the wrong content

A behind-the-scenes routing check could occasionally time out on a real content page (like /about), causing it to briefly show a generic booking screen instead of the page you built — with a plain "Client Portal" title instead of your real one. Made this fail safe: a page is only ever redirected when we're certain it isn't real content, never on an inconclusive check.

Fixed

Website list could get stuck in an unrecoverable error loop

If your session needed refreshing while the Websites list was loading, dismissing the error could immediately trigger the same error again with no way out. Fixed at the source so this can't loop regardless of what caused the original error.

Improved

Clearer guidance for your homepage's main heading

The Hero section's "Heading" field now explains that it becomes your page's H1 — the single most SEO-important line of text — with a nudge to include what you do and where (e.g. "Atlanta Family Photographer") rather than just a stylistic line.

August 9, 2026

Website Builder sites are now built for search engines

Improved

Every page now ships with real, readable content

Website Builder pages used to send browsers an empty shell and fill it in with JavaScript afterward — fine for a visitor, invisible to a search engine. Every page (home, your content pages, portfolio categories, and blog posts) now renders its full content on the server, so Google and every other crawler see the same page a person does.

New

Automatic sitemap.xml for every published site

Every published website now has a live sitemap at yoursite.com/sitemap.xml, listing every published page and blog post. It updates itself automatically as you publish new pages — nothing to generate or maintain.

Fixed

Some content pages were falling back to the booking screen

A routing bug could cause a real page on your site (like /contact) to show the legacy booking-request screen instead of the page you actually built. Fixed for custom domains and studiobook.us subdomains alike.