Dashboard
Marketing idea of the day
Another idea →Upcoming sessions
Recently added
First things first — get set up 🤍
Optional layers — reach for these when you want them
Set your prices once — sessions, prints, albums, digital files, add-ons — then add them to any invoice from a dropdown instead of retyping.
Looking for your packages — the bundles a client picks when she books? Those live in Brand & settings → Session types & packages. Mark each one taxable or not, and set a default sales-tax rate that fills in automatically on new invoices.
Google recently changed how it asks for permission. Instead of one yes-or-no, each permission now has its own tickbox — and the calendar one starts unticked. Press Continue without noticing and you get a connection that works perfectly in every visible way and cannot see a single event in your calendar.
Until now that would have shown you a green “Connected” tick and your address, and then quietly never synced anything. You’d have had no way to know why.
We now record what you actually agreed to. If the calendar tickbox wasn’t ticked, the screen says so plainly and offers to try again, instead of a tick that isn’t telling the truth.
Nothing to do if your connection is fine — you’ll see the same green tick you saw before.
The connection itself is now genuinely working: the Google project is set up, and signing in with a Google account properly links it to your studio. That’s been the missing piece for months — the button existed, but there was nothing behind it.
It’s switched on for one studio at first, and that’s deliberate. Google keeps new apps in a testing mode where only invited addresses can connect, and anyone not invited gets a blunt “access blocked” screen that looks like our fault and isn’t something you could fix. Showing you a button that Google will refuse is worse than showing you nothing. So we’re proving it works on one account first, then inviting testers in small batches.
What connecting will do, once sync follows: your sessions will appear in Google the moment you save them rather than whenever your calendar app happens to refresh — and, more importantly, appointments already in your Google calendar will block that time in My Studio Books so a client can’t book over your daughter’s recital.
Until then, your calendar link still works exactly as it does today and remains the thing to use. Nothing about it changes.
We’ll ask for access to your calendar events and nothing else, you can disconnect at any time, and we will never touch an event we didn’t create.
(Christine — you asked a straight question and got a straight no. This is the work that turns it into a yes.) 🤍
Invoices now have a session. There’s a new “Which session is this for?” box right under the client. Tie an invoice to a shoot and whatever’s been paid on it appears on that session, in green, above your own deposit note. Create an invoice from a client and we set it for you.
Your existing invoices were sorted out too — but only where it was safe. Every invoice belonging to a client with exactly one session was joined up automatically. Where a client had several shoots, we left it blank on purpose and it’s waiting for you to choose. There is real money on those, and putting a family’s deposit against the wrong shoot is worse than leaving it empty. When the line description makes it obvious we’ll pre-select the likely one and say so — but it’s a suggestion, and you can always change it.
Your own Deposit noted box stays exactly where it is. It’s still the right place for cash handed to you at a shoot that never touches an invoice.
One more thing while we were here: closing an invoice used to pull the dimmed backdrop away from whatever was open behind it — the same fault Caryn hit when saving a session. Fixed in both places now.
(Caryn — this was the fourth point in a post about clicking, and it turned out to be the deepest thing in it.) 🤍
So the box now says Deposit noted, and says underneath exactly what it is: your own note of what she’s put down. It doesn’t read from her invoices and it won’t update when one gets paid.
Your revenue figures were never affected. Analytics counts your session prices, not this box — so nothing has ever been double-counted, even if you’d entered the same money in both places. I checked that before anything else.
Properly joining the two is a bigger piece of work than a wording change, and I’d rather do it carefully than quickly, because it touches money. It’s next. In the meantime the app will at least stop implying a connection it doesn’t have.
(Caryn — buried in a post about clicking, and it was the most useful thing in it.) 🤍
The button that does it was called “Email”. It was the quiet grey button, sitting next to a big Generate / Print. So the loudest thing on that screen was printing, and the one action that actually sends a contract for signing looked like an afterthought.
It now says Send for signing, and it’s the main button. Same thing it always did — it puts the contract on her client portal and drafts the email with her signing link already in it. Nothing about how it works has changed. It just says what it is.
The screen also explains both choices now, rather than only describing the printing half.
So, to answer the original question plainly: Forms → your template → Use → pick the client and session → Send for signing. No booking flow, no invoice needed. And the separate staff button is now Send to staff for signing, because internal agreements deliberately never appear on a client’s portal and the two shouldn’t share a name.
(Nichole, Caryn, Christine — three people converging on one badly-named button is a design problem, not a user problem.) 🤍
Open a gallery and look at the cover controls: there’s a third option, Cover: edge to edge. The photograph runs the whole width of the page with nothing above it — no rounded corners, no margins, no gap. It’s the first thing your client sees when she opens her gallery, and now it can fill the screen.
Your other two choices are untouched. One size keeps every cover the same height across all your galleries, and Whole photo shows the full frame whatever shape it is. Every gallery you already have stays exactly as you set it — this is a new choice, not a change to anything.
It’s set per gallery, so a wide beach maternity session can run edge to edge while a tall studio newborn cover stays neatly in its frame.
(Caryn and Kristina — thank you, both.) 🤍
Saving a session no longer throws you out. Every window in My Studio Books shares one dimmed backdrop. Closing a session removed that backdrop whether or not anything else was still open — so saving a session you’d opened from inside a client’s profile pulled the floor out from under the profile too, and you landed back at the beginning. Now the backdrop only lifts when the last window closes, and saving a session puts you back in the client’s profile where you were, with the numbers you just changed already showing.
Marking a session Booked now moves the client to Booked. Caryn changed a session to Booked and the client still sat in Leads under Consult after a refresh. She wasn’t missing a step. The Leads board reads the client’s pipeline stage, and until now the only thing on earth that could change that stage was ticking a to-do. Booking the session itself did nothing. It does now — and only ever forwards, from Inquiry, Re-inquiry or Consult. A past client booking again keeps her Past standing rather than being quietly reclassified.
And three things you could set up but never undo. While looking into Hannah’s deletions we audited every table for this, and found that connecting Stripe, verifying a sending domain, and issuing a gift card were all one-way doors. You can undo all three now. A gift card that’s already been partly spent still can’t be deleted — someone is holding that card, and it shouldn’t be able to vanish from underneath her.
(Caryn — the layering you described is a bigger piece of work and I’m not going to pretend otherwise. These two were the sharp edges inside it, and they’re gone.) 🤍
Open any gallery’s settings, tick Watermark with my logo instead of text, and you’ll find a size slider and a position picker underneath. Size runs from a quarter up to double. Position works when your watermark style is single — a tiled watermark covers the whole photo, so there’s nowhere to move it to, and the control says so instead of quietly doing nothing. It’s set per gallery, so a dark newborn set and a bright outdoor set don’t have to share one compromise.
The text watermark stays centred on purpose. A watermark sitting in a corner is a watermark that can be cropped off in seconds.
Now the harder half of Nichole’s question — the square around her logo. That square is part of her logo file. Nothing in My Studio Books draws it. When a logo is saved without a transparent background, the background travels with it and sits over your client’s photo as a visible box.
I tried to build something that would strip it out automatically, and I want to be straight with you about why it isn’t here. It worked beautifully on a plain white or cream background — and then it destroyed a logo that was one solid colour edge to edge, and hollowed out the white lettering inside a dark shape. Both of those are ordinary photographer logos. Worst of all, it failed quietly: it looked fine in a small preview and went out wrong on a client’s gallery. I’d rather tell you the truth once than hand you something that breaks your branding when you aren’t looking.
So instead: when you upload a logo, we now check whether it has a transparent background and tell you plainly if it doesn’t, before it ever reaches a gallery. The file-type note has been corrected too — it used to say “PNG or JPG”, which was misleading, because a JPG cannot hold transparency at all. If you get the warning, ask whoever made your logo for a PNG with a transparent background. It’s a standard request and usually two minutes of their time.
(Nichole — two questions, two honest answers. One of them isn’t the answer I wanted to give you.) 🤍
Under Brand & settings → Client portal there are five settings: header image, welcome message, your phone number, an Email us button and a Book another session button. All five saved correctly. None of them have ever been sent to the portal page. Not since the day that feature arrived.
The portal page asks the database for a specific list of things to show. That list was written before those settings existed and was never extended, so the page asked for your studio name, logo and colour, got those, and never even knew to ask for the rest. No error, nothing to see — just a portal that quietly ignored everything you’d set.
It asks for all of it now. If you set a header image months ago and assumed it simply looked different to how you’d pictured it, go and look again — it’s there this time. The Book another session button only appears if your booking page is actually switched on, so it can never send a client somewhere that isn’t open.
And Christine’s other question, answered honestly. The calendar sync goes one way only. We send your sessions out to Google, Apple and Outlook; we don’t read anything back. So a personal appointment you put straight into Google is invisible here and won’t stop that time being booked. There’s now a note saying so on the Calendar sync screen, because assuming otherwise going into a busy Fall is exactly how a double-booking happens. Two-way sync is on the list. It isn’t built yet, and I’d rather say that plainly than let you plan around it.
(Christine — both of these were yours. Thank you.) 🤍
The cause is the same every time. If something in the database is protecting a row, it removes nothing and reports no error at all. So we saw success, said “Deleted”, took it off your screen — and it was back the moment you reloaded. Anywhere in the app.
The worst of them was deleting several clients at once. That one counted the batch it had sent rather than the rows that actually went. So it would tell you “Deleted 100 clients” having deleted none of them. If you’ve ever cleared out test clients and found them all sitting there afterwards, that is exactly what happened, and you weren’t doing it wrong.
Every one of those now asks the database what it actually removed. If the answer is nothing, we say so plainly instead of pretending. You may start seeing a message where you previously saw a cheerful “Deleted” — that isn’t a new problem, it’s an old one finally becoming visible. Please send those to me, because each one tells me which rows are protected and why.
Nothing here deletes anything extra. It only stops us claiming a delete that never happened.
(Hannah — you reported one screen. It turned out to be twenty-two. Thank you for being precise about it.) 🤍
Since Build 590 on August 8, any contract without a {consent} question in it could not be signed at all. Three days. Not slow, not occasional — it could not succeed. Your client typed her name, pressed Sign, and got “we couldn’t save your signature, please try again”. Trying again did the same thing. It was never going to work, however many times she tried.
Here’s what happened. When we built {consent}, we added a new version of the signing routine to the database and left the old one sitting beside it. Both were valid. So when your client signed a plain contract, the database was handed two equally correct instructions and refused to choose between them — and stopped. Contracts that did carry a {consent} question sent enough detail to be unambiguous, so those kept working perfectly. That’s why this looked random. It wasn’t random. It depended entirely on whether that one question was in the contract.
And the safety net we’d built for exactly this kind of moment made it worse. It was written to rescue a signature if the database didn’t understand part of the request — but it recognised the wrong thing, fired, and retried in a way that was even more ambiguous than the first attempt. The one piece of code meant to catch her signature is what guaranteed it fell.
Signing now sends every detail every time, so there is nothing left to choose between. Nothing about what gets stored has changed, and no signature that was already saved is affected.
What this means for you. If a client told you she couldn’t sign since Friday, she was telling the truth and it was us. Please ask her to try once more — it will work now. And if you have contracts sitting unsigned that you assumed clients were simply slow to get to, it may be worth a second look. Some of them may never have had the chance.
I’m sorry. This was found while looking into something else entirely, which means it could have run longer, and I don’t love that. We’re now checking for this specific kind of duplicate across everything else in the database. 🤍
Two faults, both ours.
We never checked that anything was actually deleted. If a row is protected, the database removes nothing and reports no error at all — so we said “Session deleted”, took it off her screen, and it was back the moment she reloaded. She wasn’t imagining it and she hadn’t done anything wrong. We now check what actually went, and if nothing did we say so plainly, with the session’s id, instead of pretending.
And a session’s to-dos were being cut loose rather than removed. Deleting a session quietly emptied the link between its tasks and the job they belonged to — so they stayed in your list forever, with nothing left to say what they were for. Now they go with it, and we tell you how many before you decide.
If your To-do list has tasks you can’t place, from sessions you know you deleted, that’s where they came from. Those old ones have already lost their link and can’t be found automatically, so they’ll need clearing by hand — I’m sorry about that.
(Hannah, thank you for rebooting, checking, and reporting it precisely. That’s what made it findable.) 🤍
This morning we added {consent} to contracts, so a client could agree or decline to her images being used. Her answer was meant to save onto her record. It saved as a sentence — and that field only accepts one of five set choices. The database refused the sentence.
And because that happened inside the signing itself, the refusal took the signature down with it. So for a few hours today, any contract containing {consent} could not be signed at all. Not signed-without-recording-the-answer — not signed. Your client would have seen an error, and you’d have seen a contract still waiting.
Contracts without {consent} in them were never affected. If you added it today and someone struggled to sign, that’s why, and it was us, not them. Please ask them to try again.
Her answer now saves properly: yes becomes “Portfolio, social & website” on her record, no becomes “Declined — please don’t share”. And we’ve made the signature itself untouchable: if recording her preference ever fails again for any reason, the signature stands. Noting a preference must never be able to undo a legal act.
Sorry. It was found because Christina reported something else entirely, and we went looking. 🤍
They weren’t typos. They were sensible names, written by people who’d come from another CRM, or who simply called a thing what a contract calls it: {client1_first_name}, {contract_effective_date}, {event_time}. Every one of them printed straight through to the client with the curly brackets still showing — in documents named “Session Contract”, “Photo Session Agreement” and “Release of Claims Agreement”. Nothing warned anybody. One contract had the same broken field in it five times.
Most of them now simply work. Where we already had the answer and only had the wrong name for it, we’ve taught the app the name you wrote. Thirty-seven of those sixty-two fill in properly from today — your existing contracts included, with nothing for you to change.
And where we genuinely don’t have the answer, we say so. Save a contract containing a field we can’t fill and we’ll tell you which ones and what your client would see, while you’re still looking at the text. You can save anyway if you meant it.
One we deliberately did not paper over: {client_city}, {client_state} and {client_zip_code}. A client record holds one address, not separate parts — so filling those in would have put a blank space where a city should be. In a signed agreement, “residing at , ” is far worse than something visibly wrong. Those still warn.
If you’ve sent an agreement recently, it’s worth opening your contract templates and having a look. 🤍
There’s now a real header bar that stays with you as you scroll: the name on the left, and Home, See what it does and FAQ on the right. Somebody arriving cold from a post can now find out what this actually is before deciding about the price — which is the whole point of them being there.
“It’s technically a link” isn’t the same as somebody being able to find it. 🤍
It now links home from the studio name at the top, offers Take a look inside right under the buttons for anyone not ready to decide, and carries Home, the tour, What is a CRM and the FAQ in the footer.
Asking someone for $300 while giving them nowhere to look first was the wrong way round. 🤍
If you’re on annual, you’ll be moved to lifetime within 48 hours at no cost. Nothing to do, nothing to pay. If you’re on monthly, nothing changes at all. And if you’re already a lifetime member, you’ve been here from the start and nothing changes for you either. 🤍
There’s a page with the details, and a counter on it, at mystudiobooks.com/lifetime.html. It closes Monday at 11:59pm California time.
Our sign-in page still listed “coming next: online payments and deposits on invoices, and clients choosing their images in the gallery”. Both of those have been live for weeks. So anyone you sent to have a look was reading a description of My Studio Books from months ago — and being told two things you use every day were still on their way.
Worse, the “live now” list named about a third of what’s actually here. No mini sessions. No booking page. No gift cards, no discount codes, no newsletters, no expenses, no model-call forms, no referrals, no client portal, no multiple brands, no e-signing, no watermarks. All built, all in your hands, none of it mentioned.
Both lists now say what’s genuinely here, what’s genuinely next, and what’s further off — and we’ve been careful not to swap one kind of wrong for another. Nothing is listed as live unless you can use it today.
If you’ve ever recommended us to another photographer and she came back unconvinced, this may honestly be why. 🤍
There’s now a choice, sitting next to Grid and Masonry in your gallery:
Cover: one size — exactly what happens today. Every cover the same height, neat across all your galleries.
Cover: whole photo — no crop at all. The page makes room for whatever shape the photograph is, and she sees the frame you actually made.
This was Kelli’s idea, and it was the right one. We were about to pick a side for everybody, when the honest answer is that both are correct and it depends on the photograph — and on you.
One practical note: on “whole photo” a very tall portrait is still capped, so it can’t push the actual gallery off the bottom of a phone. The whole image, but not the whole screen.
Every gallery you already have stays exactly as it is. Nothing changes until you choose it.
(Caryn found it, Kelli solved it. Thank you both.) 🤍
There’s now a ✉ Newsletter button in the toolbar above your email templates and above your newsletter composer. Tap it and your signup link goes in as a ready-made link, already pointing at your studio and your brand.
Select some words first and those become the link — highlight “sign up here” in the middle of a sentence and it reads properly, rather than a bare address sitting on its own line.
(Mandie asked for this in the same post as the No Response buttons. Thank you.) 🤍
Here’s what was there before: a contract could print a checkbox next to that clause, and it was a drawing of a checkbox. Your client saw a little square, couldn’t tick it, signed anyway, and you got back a signed agreement with an empty box that meant nothing at all. Arguably worse than not asking.
Now type {consent} under your clause — or {consent:Use of your images} to title it — and she gets a real question, right where the clause sits: Yes, that’s fine with me or No, please keep them private.
She has to answer, and either answer lets her sign. Both halves of that matter. Silence isn’t consent — if she could skip it you’d be back to a signed contract and an empty field, knowing nothing. And consent she can’t refuse isn’t consent at all; it’s a formality, and for the season your clients trust you with, that difference is the whole point.
Her answer saves onto her record, into the same field that warns you before you open her gallery. If you’d already written something there yourself, yours stays — you may well have spoken to her since.
And one that had been quietly broken. When you send an agreement by email link rather than through her portal, that page showed the contract exactly as written — so a contract containing {initials} displayed the word “{initials}” to your client, as text. The portal has handled those properly since Build 475; this page never learned. It has now, and initials work there too.
Contracts without {consent} in them are completely unchanged. Nobody gets asked who you didn’t ask.
(Mandie and Rachel — thank you. And Cynthia, whose initials request in Build 475 is what this was built on top of.) 🤍
Send to book now takes as many sessions as the package actually has. Add the second and the third, give each one its own type and date, and they all land on her file together off one invoice and one signature.
You can leave a date blank. This mattered more than anything else here: you cannot schedule a birth. An undated session still gets created, still sits on her file waiting, and simply doesn’t appear on your calendar until you know. Fill it in when she calls you.
The price stays on the first session only. It’s one package at one price — putting the whole amount on all three would read as three times the money in your books, and your year would look like a fiction.
Your invoice says what she actually bought, too. If you picked a package it uses its name; otherwise it lists the sessions — “Maternity + Birth + Newborn — package” — rather than naming one shoot and going quiet about the rest.
Sending a single session is completely unchanged. If you never add a second row you won’t notice this exists.
(Mandie, this was the biggest thing you asked for, and you were right that it mattered. Thank you.) 🤍
Your questionnaire questions have had a Save answer to setting since Build 480, which drops an answer straight onto her record. Referral simply wasn’t in the list. It is now: Referral source for how she found you, and Referred by for the client who sent her — which is what feeds Top Referrers and your thank-you tracker. Set it once on the question and it does the rest, every time, by itself.
Two things we were careful about. If she types a name and you have two clients called that, we link nobody rather than guess wrong — her answer is still there in her responses for you to settle. And a source she gives never overwrites one you’ve set yourself; yours wins.
And a quiet one worth telling you about. While we were in here we found that Photo sharing permission — offered on questions since Build 480 — was never actually being saved. The database had never been taught that field. Every client who answered it had her answer dropped on the floor, and nothing anywhere said so. If you’ve been wondering why that box stayed empty on clients who definitely answered: that’s why, and it works now.
(Christine asked the question. Erin and Kristina, your photo-permission field is finally doing what we told you it did — sorry it took this long.) 🤍
Her numbers were never wrong. She’d put a blank line between each question — which is exactly how you’d space out a list you want to breathe — and a blank line was quietly ending the list. Every question became a list of its own, and every list starts counting at one.
Now a blank line between items is understood as spacing, not as a full stop. Your list stays one list, your numbers count properly, and it keeps the airier spacing you were reaching for when you pressed return twice. A real paragraph in between still separates two lists, so you can absolutely still write “and then:” and start again at one on purpose.
Bullets were breaking in the same way. They don’t renumber, so nobody ever saw it — but a spaced-out bulleted list was becoming several little lists stacked up, each adding its own gap, which is why some emails came out looking oddly airy in the middle. Fixed too.
(Thank you, Nichole — and thank you for the screenshot. It made this a five-minute find instead of an afternoon.) 🤍
There were three copies of the function that claims a mini spot. Your booking page calls the newest one — and that copy had been built by starting from the oldest version instead of the current one. It kept the new signature work and lost four guards that the older copy still had. Nobody would have seen it. Everything looked right.
Here’s what hadn’t been working:
Your booking close date. If you set a mini to stop taking bookings on a date, it stopped showing that message — and kept taking bookings.
Your scheduled open date. A mini set to open on Friday could be booked on Tuesday by anyone holding the link.
One spot per person. Unless you’d ticked “allow multiple”, the same email was supposed to be stopped from taking two spots. It wasn’t stopped.
A contract means a signature. If you’d attached an agreement, it could be skipped entirely by anything that wasn’t your booking page.
Your booking page has always known how to say all four of those things to a client, in kind words. It has simply never once been given the chance. All four are back, there’s now one copy of that function instead of three, and an email is required at the database itself — not just on the page — so no booking can arrive without a way to reach the person who made it.
If you’ve had a mini fill past its close date, or one person take two spots, this is why. It wasn’t you.
(All of this came out of Christine testing her own booking page as a client. Every bit of it.) 🤍
Caryn’s gallery was saying her name twice. Her logo at the top — which already has her name in it, beautifully set — and then her studio name again directly underneath in a different face. Your emails have chosen between these since Build 563: a logo if you have one, your name in type if you don’t, never the two stacked. The gallery had simply never been told the rule. It knows it now. Nothing changes if you don’t use a logo, and if your logo ever fails to load your name reappears rather than leaving the page headed by nothing.
And Mandie’s enquiries that go quiet. Some people write once and never write again. That isn’t declined — you didn’t turn them away, and marking it so put a decision in your mouth you never made. There’s now a No response button, its own filter tab, and its own quiet grey pill. Your Pending list goes back to being what it should be: people actually waiting to hear from you.
Both of those endings can be undone, too — anything declined or gone cold has a Reopen button, because people come back. That’s rather the point of the follow-up emails you’ll want to hang off this next.
(Caryn and Mandie, both of you. Thank you.) 🤍
The spot was hers. Held. One of a handful she had to sell that day, gone to someone she had no way on earth to contact.
Three things were wrong, and all three are fixed.
Her email is now required. It isn’t paperwork — it’s the only thread back to her. It’s where her confirmation goes, where the reminder goes, and it’s what we check to stop one person quietly taking two spots. Without it we were holding a time for a ghost.
Required questions are actually required. If you marked a question with a red asterisk, this page has been showing that asterisk to your client and then letting her walk straight past it. It promised you something and never once kept it. It does now.
And you can take the spot back. Anyone sitting in Awaiting deposit now has a Release the spot button. Until today your only choices were to mark them paid — a lie in your own books — or hold that time forever. Releasing opens it up again and clears their details. It doesn’t refund or message anyone, so if they deserve a word, send it first.
One honest note: a spot is still claimed the moment she books, before her payment goes through. That’s deliberate — it’s what stops two people paying for the same time — but it does mean an abandoned checkout still holds a slot until you release it. Making that time itself out automatically is the next piece, and it’s coming.
(Christine found this by testing her own booking page like a client would. That’s exactly how these get found.) 🤍
And it made a second her. A new, empty file with the same name, while her real one — four sessions, her gallery, her portal link, everything you’ve built together — sat untouched somewhere else in your list. Nothing warned you. The session window has checked for this since Build 483; this window never has.
Now, as you type, if she’s already in your studio we tell you so before you go any further, with the two things you actually wanted: Open her file, or Book her a session — straight into a new session with her already chosen, no second record made.
We’re careful about what counts. One email very often covers a whole family — a mum’s address on her newborn’s session and again on her sister’s. So a shared address alone never blocks you; we just mention it and let you carry on. Only the same name and the same email will stop and ask.
And to be plain about something that already worked: Sessions → New session has always let you pick an existing client from the list. You never needed the portal, and you never needed a new lead. It just wasn’t where you were looking.
(Mandie asked this one, and Christine said she’d want it too — she was right.) 🤍
Your booking page now opens on a month calendar. Open days are circled and tappable, the rest are just quiet, and picking one brings up that day’s times underneath exactly as before. There are arrows to move between months — and they only go as far as you actually have dates, so nobody wanders off into empty months. If a month has nothing in it, there’s a Find a date link that jumps straight to the next one that does.
The old list hasn’t gone anywhere. There’s a small see all dates as a list link above the calendar, and it remembers which one your visitor chose while they’re on the page. Nothing about your availability, your slot lengths or your notice period has changed — this is only how the same dates are shown.
(Mandie asked for this one and sent a picture of what she meant, which made it easy.) 🤍
There’s an entry for it now, and it answers the question underneath the question: if your booking page keeps saying $0.00, that’s the deposit field sitting at zero, because the page charges the deposit and not the price.
Then we went looking at why the search had let her down, and found something worse. Asking it a question the way a person asks one — “how do I set up a mini session” — matched every single entry on the page, because “how” and “do” and “a” turn up somewhere in all of them. You’d get the whole list, in no particular order, with something unrelated sitting at the top. It looked for all the world like your answer simply wasn’t there.
Search now sets the little joining words aside and sorts by how well each answer actually fits, so the closest one comes first. Christine’s question brings back six results with the right one at the top, instead of twenty-seven with the wrong one. (Thank you, Christine — an unanswered search is worth telling us about.) 🤍
You can now ask for the whole price. Your booking page has only ever charged the deposit — price was a figure clients read, not one anybody was asked for. So a mini priced at $325 with the deposit left at $0 took the booking and asked for nothing, and the confirmation email said, quite honestly, that there was nothing to pay. That is not a mini session; that is a free session. There’s a new tick box under the price: ask for the whole price to book. Tick it and the full amount is what they pay at checkout.
The address has its own line now. The line under your title used to run the place and the price together, so “Fabyan Forest Preserve, 1925 S Batavia Ave, Geneva, IL 60134 · $325” read as though the price were the last part of the address. Where it is goes on one line; what it costs goes underneath.
And a stray click can’t take your work any more. Clicking the dimmed area beside any window closed it instantly and threw away everything you’d typed. No warning. Ania lost a full set of package edits that way, and it would have caught any of us. We now notice when something has been typed and ask before closing — everywhere in the app, not just on minis.
(All three from Ania, in one very patient afternoon of testing her Fall minis.) \U0001F90D
Until now your Requests screen offered exactly two doors out: approve, which creates a session she never agreed to, or decline, which closes the door on someone who wanted to book with you. Neither of those is an answer.
There’s now a Reply by email button on the request. It opens your usual email window, addressed to her, with her question quoted underneath so you’re not switching windows to remember what she asked. The request doesn’t move — it stays pending, waiting for her, and you approve it when she’s ready. It’s there on approved and declined requests too, for when there’s one more thing to say.
(Mandie asked for this one, with the screenshot that made it obvious.) \U0001F90D
A questionnaire with no session type set is treated as this one is for everybody. Fair enough — except the box where you choose the session type only ever appeared on Pre-session prep questionnaires. Build one as Booking & inquiry intake or General and there was no box, so there was no session type, so it went to every client you have. You couldn’t have set it, because we never showed it to you.
That box now appears on every questionnaire, whatever kind it is. And it’s tick boxes rather than a single choice, so one newborn questionnaire can cover Newborn, Newborn Family and Newborn + Family at once, instead of you keeping three copies of the same questions in step with each other. Tick nothing and it goes to everyone, exactly as before — but now that’s something you chose, and it says so underneath.
There’s also a Portal questionnaire box on each client now, down in the portal section. Leave it alone and she gets whichever one matches her booked session. Pick one and she gets that one, on its own — for the client whose session doesn’t fit any of your usual boxes.
(Erin found this one and asked the question plainly. Mandie, this is the other half of what you spotted back in June.) 🤍
Asking our email provider to look at your records doesn’t give an answer straight away. Asking is what sets everything to “waiting”; the answer lands a few seconds later. We were asking, then reading a fraction of a second afterwards, seeing “waiting”, and saving that. The real answer arrived and we never looked. And the next time you pressed, we started by asking again — wiping out the result you were waiting for.
Which means the harder you tried, the more certain you were never to see it. Press it once and you might have got lucky. Press it every hour, like any sensible person would, and you never could.
We now read first, then ask — so each press shows you the settled result of the last one. And a fresh look can never downgrade a record that was already through. You’ll be told when we’ve asked for a new one, so you know to come back in a minute rather than reading a half-finished answer as the verdict.
(Kristina, since July 30th. Kelli, who waited her full 24 hours and did everything right. Caryn, if you ever wondered. None of you did a single thing wrong, and you were all three doing exactly what the button asked of you.) 🤍
Worse: each record has always carried its own status, and we never put it on the screen. You got a single badge for the whole domain and no way to see that three records were still waiting and one had already landed.
Every record now shows found or waiting next to it, with the count above — 1 of 4 records found so far. And when we can’t recognise a status, we now say “checking” instead of inventing a verdict. We’ve also stopped telling you “nothing more for you to do” when there might well be.
(Kelli spotted this one and asked whether she’d done something wrong. She hadn’t. Kristina, yours reads the same way — have another look.) 🤍
Open a gallery, and every photo now has a small star in the corner. Tap it and that image becomes the cover: full width across the top of her page, above your name and the title. Tap the same star again to take it off. Nothing is copied or re-uploaded — we just remember which one you chose, so it costs you nothing but the tap.
(Kristina asked for this one.) 🤍
There’s a new tick box on each gallery: ask visitors for their name & email before they view. Leave it off and nothing changes. Turn it on and a quiet card appears first, with your own words on it if you’d like to write them.
It is always skippable, and we mean always — no thanks, just show me the photos sits right under the button, and it takes them straight in. We’re not going to hold your client’s newborn photos to ransom for an email address, and we’d ask you not to either. Whoever does choose to leave one lands in Leads tagged Gallery visitor, so you can see exactly where they came from. Your own client’s record is never touched.
(Kristina again — she has been asking for both of these for a while.) 🤍
Your copy now goes out on its own with no reply line, so nothing about it looks borrowed. Everyone else’s copy is untouched: your clients still reply straight to you, exactly as before.
(Kristina, who noticed one address worked and another didn’t and told us so — that was the whole clue. And Christy, who’s been saying her own copy never arrives for a while now. It wasn’t you, and it wasn’t your inbox.) 🤍
Every domain added from today comes with tracking on from the start. If yours is already verified, open Brand & settings → Sending domain and press check — you’ll see one last CNAME record to add, and a line explaining what it’s for. Your email keeps sending exactly as it does now while you get round to it; the only thing waiting on that record is being able to see who opened.
(Caryn and Kristina, this one is yours — you were the first two on your own domains, so you were the two it cost.) 🤍
That button now sends her to the real form on her own private page, where she can fill it in properly and her answers come straight back onto her profile. We also switch on “Show this on the client portal” for you when you use it — asking us to email it to her is enough to say you want her to have it.
(Thank you, Erin, who said “it is only text, no fill ins” and was exactly right. And Kristina, who’d asked for the same thing from the other direction.) 🤍
Then, once opens started arriving, they still weren’t showing on the Stats panel. Newsletters going to more than 1,000 people were only loading the first 1,000 rows, so anything past that — opens, bounces, the recipient count itself — simply never made it to the screen. Stats now loads your whole list however long it is, and the Remove bounced tool sees everyone too, not just the first thousand.
If you send to a big list, your Recipients and Delivered numbers were being capped at 1,000. They’ll read true from now on. 🤍
Pick several to-dos at once. Tick boxes down the left, a select all on each day, then mark done, mark not done, or delete the lot together. (Mandie.)
Duplicate a product. A price list is mostly variations on a theme — copy one, change the size, done. (Julia.)
Put a gift card amount back. If you recorded a redemption and the client changed her mind, type the amount with a minus in front. It won’t let a card go above what it was bought for. (Kristina.)
Also: your products now belong to the brand you’re in, like your packages and pricing. 🤍
The reason: cards you issue by hand and cards bought on your public page were being kept in two different places, and the balance checker only ever looked in one of them. So every hand-issued card failed, from the first one. Fixed — and your existing cards bring themselves across the next time you open Money → Gift cards, so there’s nothing for you to redo.
Also, for the embedded version: there’s now a tick-box that hides the logo and studio name. Your website already says who you are, so on your own page it read as the same thing three times over. The link you send people still introduces itself properly. (Thank you, Kristina, for both of these.) 🤍
It’s on your dashboard now: “Your clients picked their images”, with who chose, from which gallery, and how many. It sits there until you’ve dealt with it, alongside your signatures and deposits. Click through and it opens the gallery. Your bell rings at the same moment, and it now rings for a gallery being opened too — once a day per gallery, so a client flicking back and forth doesn’t fill it with herself. (Thank you, Heather, for asking — and Kristina, whose bell it rings.) 🤍
So that button was quietly sending everyone to the wrong place. It now says Products & pricing, which is what it opens, and there’s a proper Packages button beside it that takes you straight to your packages and highlights them when you land. There’s also a line on the Products page pointing the way, for anyone who arrives there looking. (Thank you, Heather — you clicked Packages and reasonably expected packages.) 🤍
One thing we left out on purpose. The bell will never ring for an email being opened. An “open” is a hidden image loading, and Apple Mail loads it by itself before your client has read a word — a bell ringing for those would be ringing at nobody, and within a week you’d stop trusting the ones that matter. You’ll still see Opened and Clicked on the email itself, where you can weigh it for yourself.
(Thank you, Kristina, who asked for this and showed us how the tools she came from handle it.) 🤍
Now a gallery comes down as a single zip folder named after the gallery — malin-family-2026.zip — with all the photos inside it, still numbered in order. Your client double-clicks it and has a folder with your gallery’s name on it, not a hundred loose files. One save instead of a hundred, so no permission prompts either.
You’ll see it collecting the photos, then preparing the folder. A large gallery takes a moment, and the wait happens before anything saves rather than during. (Thank you, Caryn — you tested it, told us it worked, and then asked the better question.) 🤍
The tracking was never missing. When Resend accepts an email it hands back a reference number, and we were throwing it away — so when it later reported an open, there was nothing to match it to. Now we keep it.
Please read this part before you rely on it. Clicked is certain: someone chose to click a link. Opened is not. An open is a hidden image loading, and Apple Mail fetches that image by itself before anyone reads a word — so for a client on an iPhone or a Mac, “Opened” can appear when they haven’t looked. Treat it as a good sign, not proof. Hover any of these and it’ll tell you the same thing. We’d rather you knew than have you make a decision on a number that quietly lies. (Thank you, Kristina, for asking — and Caryn, for saying why it matters: a quiet client who is reading everything is a reassuring thing to know about.) 🤍
Each photo is now collected properly before it’s saved, so they all arrive — named after the gallery and numbered in order: malin-family-2026-001.jpg, …-002.jpg, and so on, padded so they sort correctly in a folder. Single-photo downloads get the same treatment. It’s a little slower now, and worth it. Your browser may ask permission to save several files at once — that’s normal, say yes.
On the smaller dimensions: that’s a separate thing, fixed yesterday. Galleries used to store photos at 2000 pixels on the long edge and now keep 3200 — but only for photos uploaded since. The bigger originals of anything already in a gallery were never kept, so an older gallery needs re-uploading to come through at the new size. (Thank you, Caryn, who tested her own gallery before sending it to a client.) 🤍
When we taught inquiries to remember which brand they came to, the change stored that brand in the wrong format for the database column holding it. The database refused it, and the refusal came at the very first step — so every inquiry failed, not only the ones from studios running two brands. Anyone who filled in your form saw “we couldn’t send that just now” and their message was never written down. It’s fixed, and this time the fix was run against a real database before it came anywhere near you.
If you use an inquiry form, it’s worth a test. And if someone told you your form was broken, they were right, and it wasn’t your website.
So this can’t cost you a client again: an inquiry that can’t be saved now still gets emailed to you with everything the person wrote and a note to add them by hand. A problem at our end should cost you a tidy record, not somebody who was trying to book you. (Found by Mandie, testing her own form.) 🤍
Open any client and you’ll find “+ Add a second email or phone” under the first pair. It stays tucked away until you want it, so nothing gets busier for anyone who doesn’t. Both show on their profile. When you write an email yourself, the To line becomes a little chooser so you can send this one wherever it belongs — and the Mail and Gmail buttons follow your choice.
Anything automatic — invoices, reminders, workflow emails — always goes to the first address, so nothing quietly changes course on you. If the other one should really be the main one, there’s a Swap them link. (Thank you, Crystal.) 🤍
Until now there was a single slot length for your whole booking page. Our own setup instructions told you to “pick the days you’ll take calls and set a short slot length on them,” which simply wasn’t possible — the only place a shorter length existed was on one individual date at a time. Look for Length underneath each block of hours; leave it on default and nothing changes. A length on the block wins over one on a special date, which wins over your page default.
Fixed alongside it: changing a session type on a special date used to quietly reset that date’s own slot length, and a date that inherited your weekly hours forgot which session types they were for. (Thank you, Mandie — you told us this twice and you were right both times.) 🤍
This applies to photos you upload from now on. The bigger originals of anything already in a gallery were never kept, so older galleries stay as they are — if one really matters, re-upload it and it’ll come through at the new size. (Thank you, Abby, who compared the same files side by side and trusted her eyes.) 🤍
All three now email you as soon as someone comes in, with their name, email, phone, session type and their message. Reply straight to it — it goes to them, not to us. They’re already sitting in your Leads either way. (Thank you, Cynthia — you embedded your form, got your first inquiry, and had no idea it was there.) 🤍
The cruel part is where it sends you: the price looks wrong, so you go and check the price — and the price was right all along. Numbers can no longer be saved as a currency symbol, the field says plainly what belongs in it, and if yours already has one it will quietly right itself the moment you load MSB. Letters stay put, so A$, kr and CHF are all safe. (Thank you, Mandie — twice. Your second message is the one that found it, and I’d had it wrong until then.) 🤍
Two more found alongside it: your package prices on that page were printed with a hard-coded dollar sign no matter what currency your studio uses — so a studio in Australia or the UK saw the wrong money entirely. And if you’d chosen to call it a Retainer, the line under your title still said “deposit to book.” Both fixed. (Thank you, Mandie.) 🤍
Editing a mini now shows you that exact line, live, as you type: “What clients read under your title.” No more publishing to find out. (Thank you, Mandie — you went looking for a field that didn’t exist, and you were right that it should have.) 🤍
New dates now borrow the right hours. When you clicked a date to give it hours, it always came up 9 to 12 — so if you’d set three hours for a newborn day, every new date looked like it was copying that. It wasn’t really copying anything; 9 to 12 was just baked in, and it happens to be three hours. Now a date starts from your weekly hours for that weekday: click a Monday, get your Monday; click a Friday, get your Friday. Change one and your weekly pattern stays put.
The list stops piling up. The calendar is the manager now, so the panel underneath shows just the date you clicked instead of every date you’ve ever opened. There’s a Show all link when you want the full list back.
Save without closing. There’s now a Save that keeps you in the editor and a Save & close for when you’re done — so you’re not thrown out and left hunting for which contract you were on. And no, it wasn’t secretly auto-saving; it only ever saved when you clicked, which is exactly why this needed fixing.
Put them in your own order. Little up and down arrows on each contract in the list — arrange them the way you think of them, and that’s the order they stay in.
Bullets that actually bullet. They weren’t working because a line starting with * wasn’t being recognised — only dashes were. Now *, - and • all make a bullet, and indenting a line gives you a sub-bullet underneath.
Until today, a contract on a mini session was for show. Your client read it, typed her name, ticked agree, and booked — and none of it was saved. No signed name, no date, no record of what she’d agreed to. It looked signed on her screen and left nothing behind. That’s fixed: her name, the moment she signed, and a snapshot of the exact agreement are all kept on the booking now.
And second, the part that prompted this: you can now put {initials} anywhere in a mini contract — after a cancellation clause, beside a model release — and your client gets a box to initial in that spot. She can’t book until every one is filled, and your record shows what she initialled and where. It’s the same clause-by-clause signing your portal contracts already had; minis simply never got it.
An honest note: contracts “signed” on a mini before today captured nothing, and there’s no record for us to recover — this puts it right from here forward. 🤍
Your clients and your sessions already came out this way; your invoices were the one thing that didn’t, and that never sat right. This is your financial record, and it should be yours to carry wherever you need it — your accountant, your taxes, or simply your own peace of mind. (Prompted by Rachel, asking a fair question about moving her data around. 🤍)
They’d been there all along, just locked inside the details screen, so grabbing a link to paste into a post took three clicks and a hunt. Copy link tells you if the mini’s still a draft rather than handing you a link that opens for nobody. Preview opens your page in a new tab. Publish flips it live, and warns you first if there are no days left to book.
(Thank you, Kristina — who is currently finding bugs, answering everyone else’s questions, and still filing better feature requests than we write ourselves.) 🤍
It tells you the number first, and it won’t let you past without saying so. If your client has already been in and marked favourites, or left you a selection list, it says that too — those are her choices, not ours to quietly bin. (Thank you, Caryn. 🤍)
If you attached a questionnaire to a mini session, your booking page didn’t just look wrong — it died. No times, no packages, no pay button, just “We couldn’t load this page.” Your client couldn’t book. She had no way to tell you, and you had no way to know, because the preview you’d check is the very same page.
What happened: questions used to be plain lines of text. When we built the smarter questionnaires — the ones that know a date from a phone number — your booking page never learned the new shape and fell over the first time it met one. It had a guard meant to catch exactly this, and the guard let it through.
Fixed, and better than before: your questions now arrive as you built them. Ask for a date and she gets a date picker. Give her choices and she gets a list. Mark a question required and it says so.
(Thank you, Kristina — you wrote “Am I doing something wrong?” and the answer was no, never, not once. You’d found the biggest thing on the board.) 🤍
Here’s the honest shape of it. Your clients pay you — your own Stripe account, your money, never ours passing it along. That’s deliberate and it’s right. But it means Stripe announces the payment on your account, and we had only ever asked Stripe to tell us about payments on ours. So every card deposit any of you has ever taken was announced to an empty room. Not failing. Not erroring. Just never arriving. The only deposits ever marked paid in this app were the ones somebody ticked by hand.
None of you could have reported this, because from your side there was nothing to see — an invoice that says unpaid looks exactly like an invoice. (Thank you, Caryn — you found $100 sitting in Stripe that we’d never heard about, and you pushed until we looked properly.)
Two things worth knowing. It’s fixed going forward, and it fixes something else too: a studio whose Stripe had gone live could have her clients turned away at the pay step, because the message saying “she’s ready now” was going to the same empty room. And it doesn’t heal the past. A payment that was never announced can’t be announced again. If a client of yours has paid a deposit by card, open her mini and use Mark deposit paid, and her invoice will read right. If you’re not sure which, tell us and we’ll go through it with you rather than leave you guessing. 🤍
Open a gallery and drag a photograph where you want it. It saves as you go, and it’s the order your client sees. There’s an Order photos… drop-down beside Grid and Masonry too — filename A–Z or Z–A, newest or oldest first — for when you just want it sorted and not fussed over. On an iPad or a phone, where dragging doesn’t work, each photo has a ‹ and a › to nudge it along.
An honest word: our own “How do I…?” has been telling you to drag and drop your images since before it was possible. So this wasn’t a new idea — it was us describing a studio we hadn’t finished building, and then leaving you to wonder what you were doing wrong. You weren’t doing anything wrong. (Thank you, Caryn — asked on 13 July, and you bumped it because we’d gone quiet. 🤍)
Here’s why, and it’s an ugly one. The invoice step was the last line of the routine that syncs new bookings, and that routine gave up early whenever there was nothing new to sync. So an invoice could only ever be raised on the single pass that also created the session. Miss that moment — and everyone did — and it became unreachable. Forever. The booking was fine, the session was fine, the money was in Stripe, and the invoice simply could never exist.
Fixed. Open your Minis page and any missing invoices are raised now, with what’s paid and what’s due two weeks before the session. (Thank you, Caryn — you had two live clients and real money riding on this, and you were right to keep pushing.) 🤍
They now appear in filename order, the way you name them, and properly — so Scanlan_2 comes before Scanlan_10 instead of after it. Nothing for you to do; open a gallery and it’s right.
Sorting and drag-to-reorder are next; this was the part that was simply broken. (Thank you, Caryn — you told us on 13 July and you were right the whole time.) 🤍
It now says so, and links you straight there. (Thank you, Caryn, for saying you were lost — and Kristina, for answering her before we did. 🤍)
Now it does — carefully. If it’s plainly the same person, we use her file and tell you. But one email very often covers a whole family: a mum’s address on her newborn’s session and again on her toddler’s, or a maiden name beside a married one. Those are two real clients, and we don’t get to decide that for you — so if the name doesn’t match, we ask. (Thank you, Kristina — and sorry it sat for six days.) 🤍
It’s the same availability, just somewhere you can actually see it — and every one of your session-type chips works exactly as before. (Thank you, Kristina, for describing it so precisely — and Angela, who asked for the same thing.) 🤍
There’s a new May I share her images? on every client, and your questionnaire can fill it in for you — set Save answer to: Photo sharing permission on the question. It’s a free-text field on purpose, because “yes, but don’t mention names” is neither a yes nor a no, and that’s exactly the bit worth remembering.
Then the part that matters: when you go to share her gallery, she tells you herself — her answer, in her words, right there on the sharing switch. No hunting back through a form. (Thank you, Erin, for asking — and Kristina, the gallery half was your idea.) 🤍
It also stops fibbing about who’s receiving it. “All clients” never meant all your clients — only the ones filed under the brand you’re in. Your Clients and Leads pages have always said when someone’s hidden; this one didn’t, so it looked as though people had gone missing. It now names the brand and tells you how many are filed elsewhere. 🤍
If we ever failed to read a client’s saved favourites — and a gallery with an access code is exactly where that happens — we quietly took that to mean she had none, and then wrote that emptiness back over the real ones. She could lose every pick she’d made and be told “✓ 0 favorites saved” for her trouble. A tick, and a claim of success, for a deletion.
Three things fixed. If we can’t read her favourites, we no longer touch them — she’s told to try again. A page that hasn’t loaded her favourites yet can’t save an empty list over them. And when a save to the cloud fails, we say so instead of throwing the error away, which is why nobody ever found out.
Separately: when she sent her selections we filed them under exactly the capitals she typed, which could split one person into two on your list. Fixed too. (Thank you, Kristina — you weren’t doing it wrong, and this was worth finding.) 🤍
**like this**). It all renders cleanly in the email your readers open, so your words look as considered as your images. (Thank you, Caryn!) 🤍Note: this needs the updated invoice-checkout function deployed to work.
Log your business expenses and mileage as they happen, so end-of-year write-offs are already done. Everything stays private to your studio.
—
Flag a contact
Private — clients never see thisWent cold
leads & clients who went quietDo not book
private — clients never see thisWhen you open a session for a flagged contact, a heads-up appears automatically so you (or anyone on your team) catch it before booking — nothing relies on remembering.
Your scouting library. Save the spots you shoot — address, notes, and reference photos for different seasons — so when you’re planning, it’s all in one place instead of in your head.
Plan your light. Enter a place and a date to see sunrise, sunset, golden hour, and blue hour \u2014 so you can book the session at the prettiest time of day.
Issue and track gift cards you sell — the balance updates as each one is redeemed. Perfect for cards sold in person, by phone, or through your own payment link. Letting clients buy one online and pay through the app is coming with payments.
Sell gift cards on your website
Give clients a page where they can buy a gift card themselves and pay by card. It goes straight to your Stripe, and the card activates the moment they’ve paid. They can check a balance there too.
Top referrers
Thank-you tracker
Where clients come from
Write once and send to the people already in your books — import a list, pick an audience, and the recipient list builds itself from your contacts.
Your lists
import & organize your audienceLists come from tags on your contacts. Import a list from Flodesk or any other tool and name it (like “Seniors” or “Children”), or open any contact and add a tag — then send straight to that list below.
Paste a whole list of emails…
Keep your list healthy
Remove every email that has bounced, failed, or reported spam — in one click. This protects your sender reputation so your good emails keep landing in inboxes.
Compose
# Heading, - bullet, or paste a link — it all formats beautifully in the email your readers get.Recent newsletters
drafts & scheduledA prep guide for every session type, in your brand voice. Write your own, or let AI draft a starting point — then turn on the ones you want. Auto-sending and PDF uploads arrive with the workflow + file-storage backend; the guide content you build here is ready for them.
Your session guides
tap a type to write or draft itBuild and AI-draft them now; sending them to clients arrives with the email backend. For now, “Email to a client” drops the questions into a ready email.
Apply a workflow to a session and every step lands in To-dos with the right dates. Email steps become a to-do with your draft ready — they'll send themselves once the email backend is live.
Inquiry / contact form
A simple “get in touch” form for new inquiries — just name, email, and a message, no dates or session picking. Everyone who fills it out lands right here in your Leads as an Inquiry (and starts your matching lead workflow). Paste it anywhere on your website.
Model Call signup form
embedPaste this on your website (Squarespace, Wix, Showit…). Everyone who applies lands right here in your Leads, tagged Model Call — with their session type, dates & details. If they tick the box, they also join your newsletter list. It’s a clean, script-free embed, so it won’t choke your site builder.
Launch waitlist form
A “notify me at launch” form with a newsletter opt-in — perfect for a coming-soon page. Sign-ups land in your Leads (tagged Launch waitlist) and join your newsletter.
Model Call submissions
Every model call application that comes in — with their answers, photo & details — lands right here, newest first. Nothing hides. 🤍
Set up a mini-session day, add bookable time slots, publish, and share the link. Clients grab an open time and it locks instantly — no double-booking. Every booking drops a client and session into your studio automatically.
This one is public, so put here only what you’re happy for anyone to read. Your bank details above stay private and are never shown on your booking page — that’s deliberate.
Requests
Studio details
Logo
Brand voice
Session types
The types you can choose when creating a session — one per line. Delete any you don't offer and add your own.
One per line. These are the choices in How did they find you? on a client’s profile, and what your Leads page counts. Add your referral partners by name — a midwife, a hospital, an agency, another studio — so you can see exactly who’s sending you work, not just “Referral”. 🤍
Give each session type its own colour, then flip on “Colour by type” on the Calendar.
Brand colors
Brand keywords
Client-facing
Calendar sync
Until two-way sync arrives, block personal dates inside My Studio Books and let your other calendar be the mirror. Anything you add here flows out; nothing out there flows in.
Photos are optimized to a crisp web size on upload, so galleries load fast and stay light on storage. Shareable client links (a clean, no-login view your clients open) and downloads + favorites are the next two phases.