Studio Magic · Back office — how a job flows

I have a client — now what?

One job, from booking to delivered photos. Setting your studio up is a separate guide.

For: studio operators & front-desk staff Covers: book → portal → details → agreement → marketing → roster → plan the day → staff → prep → shoot day → cull → deliver
Book it → send their portal → session details → agreement → marketing → roster → plan the day → staff the shoot → equipment prep → shoot day → cull & production → deliver. Steps 1–6 get the client squared away; steps 7–12 are the shoot itself.

The one-page cheat sheet

Print it. Each line names the screen.

#StepWhere you goWhat happens
1Get the job inBooking Magic → 📥 Intake queue / 🎯 Book / Rebook, or Organizations → NewA job gets created
2They get their portalAutomatic when you approveOrg gets ONE "you're booked" email + their picture-day home
3Session detailsJob → Send session details (or they fill it in-portal)Headcount, schedule, arrival
4AgreementAgreements board → send for e-signThey sign; a copy files itself
5MarketingMarketing Magic → make postersPosters land in the org's portal
6RosterThey upload it in their portal, or send it and you run Import MagicThe list of who's photographed — always from the organization. Sign-ups and registrations tick it, never replace it
7Plan / schedule the dayJob → schedulePicture-Day Planner / Schedule Magic / Build the DayThe day gets a schedule + call times
8Staff the shootShifts → the staffing sheetCrew claim open seats, or you assign them
9Equipment prepJob → Equipment Prep (#/session-prep)Each gear set gets an owner + a prep list, emailed & texted
10Shoot dayShoot-day home (#/shoot-day/home) + the job BriefCrew see call time, details, scan subjects, log issues
11Cull & productionYour culling tool + BackstagePick keepers, QC, prep for the lab
12Deliver photosPortal Magic → Photos & files; families buy through your gallery platformOrg & families get their pictures

The job's to-do list — and how it checks itself off

The tasks you mostly don't have to touch.

Every job has a task list — send the agreement, build the schedule, order the lab package.

🤖Anything ticked for you says so on the row — "orders are coming in", "the makeup day is already booked". Un-tick it and it comes straight back. It never touches banners, composites, proofs, yearbook or district files, or commission, and it leaves a wrapped or archived job alone.

Where: jobTasks tab, or Tasks (#/tasks) for every job at once. Crew see only their tasks. Anything overdue also shows on the job's Overview card and your Dashboard.

The Tasks tab is for the few that need a nudge. You can follow this guide without opening it.

1

Get the job into the system

Pick the door that matches.

1a · A brand-new client you've never worked with

  • They book themselves. Send your booking link (they see book.yourstudio.com). The request lands in your Intake queue.
  • You send a prefilled booking link. From the org or the 🎯 Book / Rebook board, Send booking link emails a link with their info filled in.
  • You create it by hand — fastest after a phone booking. OrganizationsNew organization → on the org's page ➕ New job → type + date → save.

1b · A client you've worked with before

Booking Magic → 🎯 Book / Rebook. Each org shows its next-step button:

  • Most returning orgs → ▶ Send portal. Grants the portal and emails "time to book your next season." Already sent this season, it reads ↻ Resend portal.
  • Booked, still owes details → ▶ Send details link.
  • Sports → ▶ Send a sport link — pick the sport and who gets it; + send another sport does the next one.
  • Dance → ▶ Send recital link / ▶ Send company link.
  • A new org with no portal is the only one that shows ▶ Send booking link — or ▶ Send welcome-over link for an org you shot before you had Studio Magic.
  • 🚪 Send portal to all missing (N) sends the portal to every returning org without one, in one reviewed batch.

The same buttons sit on an org's own page (Send portal / Send booking link + ➕ New job).

1c · Approving a request that came through the form

Booking Magic → 📥 Intake queue. Open the request:

  • Confirm → Create job creates the organization, contact and job.
  • If it matches a job you already have: "⚠️ Already booked — approving this makes a duplicate"Update the existing job → folds the new answers onto that job.
🔔Needs review = they submitted something, waiting on you. Pending booking · awaiting their date = you sent a link, they haven't filled it in yet.
1d · Session types

Which form does each client get?

Every job has a session type; each form asks different questions.

📌Booking is two stages. Booking link (Stage 1) — dates and a rough headcount; send that first. Session details (Stage 2) — the full pre-shoot form, step 3.

Pick the right type when you create a job

Session typeUse it forIts form mainly asks
School Portraits (Fall / Spring)K-12 picture dayHeadcount, bell schedule, arrival, yearbook
School (multi-level)A campus with several session types"What kind of school?" then the right sessions
Preschool / DaycareDaycares & preschoolsRooms, headcount, parent sign-ups
School SportsYou dictate the dayTeams, athlete counts
Sports LeaguesLeague teams self-scheduleTeam booking slots
Dance (Recital)Parent-facing recital shootDancers, costumes, schedule
Dance CompanyCompetition-team shootTeams, costume-per-team
SeniorsHS senior portraitsHeadcount, look/attire
Staff Photo DayJust staff / faculty headshotsStaff headcount, arrival — no yearbook

2

They get their portal (this one's automatic)

Approve a booking (or click Send portal) and two things happen:

  1. The organization gets access to their portal.
  2. Their contact gets one email — "You're booked! Here's your picture-day home." — with the portal address and their password.
Don't send a separate confirmation. The portal invite is the confirmation — one email, never two, never zero. Re-approving doesn't resend it.

They open it to "What we need from you":

  1. ① Fill your session details
  2. ② Confirm your brand (colors/logo)
  3. ③ Set up your picture-day schedule
  4. ④ Your roster

Below that, "We're handling these — nothing needed from you" — agreement, prep, marketing. An org with more than one session sees a card per session.

3

Get the session details

Headcount, bell schedule, arrival, yearbook. Two ways it gets filled in:

  • They fill it in their portal — step ① on their list.
  • You send the link. Open the jobSend session details → pick who (CC anyone) → it emails the same form (#/session-details).
🔔When they submit: a bell, an email listing their answers, and a note on the org's Communication timeline. The job shows "✓ Session details sent" and warns before you send it twice.
4

Send the agreement

A "here's what we'll do together" letter, not a deposit contract. Agreements sorts every org into four columns:

  • Ready to send — details in, no agreement out.
  • Awaiting signature — sent, not signed.
  • Signed — on file.
  • Waiting on details — no session details yet.

One org: open its card → build it ✨ Full proposal or ✏️ From scratch → send for e-signature. Several: Send to all missing opens a review step first — one row per org with a Preview — before anything sends.

📄Automatic: when they e-sign, a frozen copy files itself into their Business documents.
5

Make & share your marketing

Picture-day posters for social media and parent apps, in the org's colors.

Auto-made posters are off by default (Marketing Magic → Approvals has the "Auto-marketing is off" button if you want them). Today it's make it, then share it.

How to make and share a set

  1. Marketing Magic (#/marketing-magic).
  2. Brand kit → Make → Approve → Set ready. Pick the org, pick a design; it renders in their colors.
  3. Finishing the set drops it into the org's portal (their Marketing Materials folder) and emails the org. Finishing is delivering.

One graphic you made elsewhere: Card Studio — upload it, drop the QR on, and send it into the same Marketing Materials folder.

6

Get the roster

The roster is the list of who's being photographed. The organization gives it to us — every job, no exceptions. No roster, no photos. We never type people in by hand.

  1. They upload it in their portal. Step ④ on their "What we need from you" list — drop a spreadsheet, or fix a name or contact right on the row.
  2. They send it to you and you import it — Import Magic (#/roster-magic, also #/import): Drop → Map → Preview → Commit. It flags anything odd for you to fix; it never guesses.

Sign-ups and registrations come after the roster, and only ever tick it. Same public page (#/register, plus the name-free #/team-day QR for sports); what it does depends on the shoot:

  • Daycare → parents SIGN UP. The center's roster is in; a parent says yes to pictures for a child on it and picks the room from the center's own list. That's the tick.
  • Sports → families REGISTER. The league's roster is names + teams, no contact info. A family finds their athlete and gives us the phone and email (and fixes a spelling or jersey #). Registration never closes — a late one is still a contact we didn't have.

A sign-up that matches a name on the roster exactly files itself. Anything less waits on the session's registrations screen for you to Link it to the right child — a near name reads "did they mean …?" and is never applied on its own; a typed team never makes a team. Without a roster, sign-ups wait — nothing lands on the session until the organization's list is in, and 📨 Ask for the roster is on that screen. The job's Subjects list marks each child Registered or Not registered against the roster, with a count at the top. Registered means a family said yes to pictures — never that anyone was photographed, and never that anyone was added. If the roster or the sign-ups can't be read it says so and marks nobody.

🔗Where's the sign-up / register link? A daycare, sports, or staff job opens it on its own when the job is created. To grab it: job → Client pages → Roster registration → Preview — that's the public page and the link (and QR) you share. Same page from 🌐 Open the portal → Share, and on a branded Card Studio QR. For sports, the picture-day one-sheet carries the same scan-to-register QR.
🔔Automatic: a roster drop or a family's sign-up notifies you three ways (bell + email + timeline).
🏅Sports extras — coach preferences & the coach packet. A sports booking or details form can also collect coach preferences per team (pose style, fun-photo permission and where those photos may go, sunglasses/props rules, banner ordering) — some guide your crew, a safe subset shows parents what to expect. When a sports job is confirmed (by hand or through a booking link) and has attending teams on it, a per-team coach packet builds itself — named roster + jersey #s, arrival & logistics, a checklist, the name-free team-day QR — files to the org portal, and you can send it to the coach (only that coach and you can open it; editable per team).
That's the client's side. Everything below is yours — shooting and delivering the job.

Part Two — Running the shoot

7

Plan or schedule the day

Who's photographed when, plus crew call times. Three tools; the session type decides which.

🧭On the job page, the left rail's Open in group has 🗓️ Picture-Day Planner / scheduler — it opens the right tool for that job. The org's portal Plan & Prep tab shows the same action from their side.

The three tools:

  • 🗓️ Picture-Day Planner (#/pictureday-planner/<jobId>) — school portraits and school sports. Roster classes or teams onto a time grid, timed from headcount + stations, printed with call times. Sports adds a Run of show — blocks (Varsity / JV / Freshman / Hype / Team / Individual) you drag teams into, for a per-team call-time sheet. It re-times itself when the roster changes; one run of show per day on a multi-day shoot.
  • 📅 Schedule Magicseniors and anything families self-book. Set the days, slot length and capacity; families pick their own time from a public link (QR in their portal). "Who's booked · who's still to come" tracks it. Seniors can multi-look (formal + cap & gown) with formal-wear sizing at booking.
  • 📋 Build the Day (#/build-day) — sports, when the booster lays out the run of show herself. Send the login-free link from the Picture-Day Planner's sports run-of-show; she drags teams onto blocks and submits; you lock it. She sees team names + headcounts only — never rosters or contacts.
Session typeHow the day gets scheduledTool
School Portraits (Fall/Spring)You lay it out from the roster's classesPicture-Day Planner
School Sports (you dictate the day)You lay teams on a time grid (+ run of show)Picture-Day Planner
Sports — hand it to the boosterBooster lays out the run of show; you lock itBuild the Day
Sports Leagues (self-schedule)Teams book their own slotSchedule Magic
Seniors / self-bookFamilies pick their own timeSchedule Magic
Dance CompanyYou schedule internally (team → costume → size)Dance Company Scheduler
Dance (Recital)Parents self-book / walk-up / during classSchedule Magic
🔁Step ③ on the org's list — "Set up your picture-day schedule" — is the same thing from their side: a self-book session opens their booking link; a Build-the-Day session opens the builder for their booster. A school day you plan asks nothing of them.
⏱️A class given less time than it needs is flagged before the day. Type in the school's fixed slots and the planner checks each against that class's roster — twenty-four pre-K children need about half an hour, not fifteen minutes. A band above the grid names each short class and by how much. Nothing on the schedule changes. ✉️ Write the message drafts the note to whoever built the schedule — which classes are short, the two ways out (a longer slot, or split across two), and that you changed nothing of theirs. Copy it and send it however you reach them.
🗣️Bilingual classes go one at a time. A class named Bilingual, Dual Language, ESL or similar is marked; two in the same round are flagged, because one photographer speaks the language. The message asks the school to send them down one at a time. A class named "Spanish" is a Spanish class and is left alone.

The schedule sets the crew's call/arrival times — what the staffing sheet and the shoot-day brief show.

8

Staff the shoot (crew & shifts)

Shifts. The default is the staffing sheet (▦ Sheet · ⊞ Grid · ☰ List toggle):

  • One row per session. Across it, the seatsLead · Camera 1–4 · Group · Assistant 1–3. Empty is a dash; a seat still to fill is a dashed amber OPEN.

Two ways a seat gets filled:

  1. Crew claim it. Photographers open Shifts on their phone — the same Sheet — and tap an open seat to claim it. They see the whole schedule, never anyone's pay.
  2. You assign it. Click an open seat → pick a person → add & assign. Confirm, edit or cancel a shift from the same window.
🗣️A school that needs a photographer who speaks a language. On the org, under Shoot configCrew languages needed, tick Spanish or type any language. Each person on your team has Languages they can work in. Filling a seat there, a line above the picker reads "Fain Elementary needs someone who speaks Spanish — nobody on this crew does", and the people who do are marked. It counts the crew on that shoot day, not your whole team. It never blocks an assignment — the only hard gates on a seat are certifications. If nobody has filled in their languages yet it says we couldn't check, never that they don't speak it. Nothing is recorded about a child's or a family's language.
Confirming a job opens the right number of seats, from the headcount. A bigger roster opens more — it only adds, never touches a claimed seat. Your job is a name in every OPEN seat before the shoot.

# Stations = camera setups the day needs (it drives the prep list too). Time = the crew's call/arrival time, worked back from setup.

If you change a setup time after people have claimed their shifts

Open seats move. A claimed seat stays put — that time is in their calendar. Two places catch it:

  • The job page shows a band naming everyone whose claimed shift no longer matches. Match all N to this session emails each person the new time and the old one. Nobody is copied on anybody else's.
  • The Shifts page⏱ Setup times checks every upcoming session. You see the list first — both times and who would be emailed — and nothing changes until you say so. Sessions it couldn't check are listed separately and left alone.
A shift that starts exactly at the setup time is not flagged — new seats open fifteen minutes ahead for unloading, but an older claim at setup time is fine. Only a real change, like a setup time moved the night before, is flagged. A cancelled shift, or one somebody stepped back from, never emails anyone.
9

Equipment prep (who grabs the gear)

Four prep sets. Each gets an Owner, who gets a checklist by email and text.

The four prep sets

  • 🔌 Electronics — cameras, batteries, SD cards, lights.
  • 🧰 Equipment — backdrops, stands, tripods, cases, props.
  • QC — the quality-check steps before the batch goes out.
  • ✂️ Cull — the keeper-assembly steps after culling.

What's actually in the prep room (and on the list)

Electronics and Equipment are your Equipment registry — built live from Equipment (#/equipment) plus your station kits. Electronics is what you charge or format; Equipment is what you pack. Lenses stay on the cameras. Add or retire gear in Equipment and the lists follow.

They scale with the day — a per-station amount times # Stations from the staffing sheet: 4 stations → "charge 4 batteries, pack 4 SD cards."

QC and Cull are the same short checklist every job. Write them once.

How you set it up on a job

  1. From the job's Crew & setup area (or the Equipment Prep header), open Equipment Prep (#/session-prep/<jobId>) — one card per set.
  2. Pick the Owner ("— pick a person —"), usually the Lead. The card shows an editable Stations number (prefilled from the job), a "N items · N to grab · N/N packed" count, the 📍 where it's stored line, and the list.
  3. Send list. The owner gets it by email and by text"Your studio: you're on Equipment for Franklin Elem Oct 14. Prep list ready — charge 4 batteries…" (with "Reply STOP to opt out"). Change something after and it reads Resend list.
📋The owner opens the list, preps each item and checks it off. Mark ready shows on shoot morning that the gear is packed.

Set up once: the sets' labels, where each is stored, and the QC/Cull steps live under Equipment Prep template setup (#/session-prep) — Electronics and Equipment preview your live gear there (edit it in Equipment); QC and Cull are tables you type into. After that, every job is pick an owner → Send list.

10

Shoot day

Crew live in Shoot-day home (#/shoot-day/home) on their phone.

What crew see

  • Today's sessions on a timeline, with the call/arrival time and one-tap call / route.
  • A Session details drop-down — backdrop, expected count, badge/check-in, parking, notes.
  • 📋 Job brief — the full day-of brief (#/brief/<id>).
  • Clock in / Clock out and confirm shift on their card.

Capturing what happens on the day

  • A pre-shoot Heads-up box — "anything to watch for today?"
  • Log issue for anything mid-shoot.
  • A short post-shoot pulse — a few questions + "anything else?" — each routed to where you'll see it.
  • Notes — everything the crew logged for that shoot, newest first.
🚫Someone who must not be photographed. Record it on the person, not the session: PeopleFlags & care → tick Must not be photographed. Two parts — no individual photo and not in any group or class photo; the box ticks both, untick one if you were told something narrower. It follows them to every future session at every organization: the top card on the session brief in red, a chip on the roster and Subjects list, and out of composite sheets when "not in any group photo". Only your studio sees it — never a school, never a family. ⚠️ Do not record why. There is no box for a reason, on purpose.
📸Marking who got photographed. Every subject has an access code (QR cards come from Card Studio). Scan the code before the photo and they're recorded as photographed. Anyone never scanned is your makeup-day list.
11

Cull & production (finish the photos)

Pick the keepers in your own culling tool — Cull Magic is on hold until it can get the photos straight from your gallery platform. After the cull:

Backstage. Tabs across the top, each with its count. What needs you now: Queue, Mentions, Production (still to build), Session issues (what crew flagged on shoot day). After the Season prep marker, the boards you open a few times a season: Yearbook readiness, the Makeup board (who still needs a makeup day), Production health (jobs sitting too long), and the SPA builder.

💡Keepers get picked in your culling tool; Backstage is where you watch the job through QC and out to the lab.
12

Deliver the photos

Two audiences:

Families buy their photos through your gallery platform

That's the store. Parents never log into Studio Magic. Hand families their gallery links (or a QR / access-code sheet) and they shop there.

The organization sees its files in the portal

Portal Magic📸 Your photos, grouped by session. A file shows once it's marked delivered; a draft stays hidden. When something reaches delivered we email the org — unless they still have an unopened one from us. The screen tells you which happened right after the upload.

🗂️What a folder takes: photos (JPEG, PNG, WebP, TIFF, HEIC), Photoshop and Illustrator files, PDFs, spreadsheets and zips — up to 500 MB each. A zip hands over a whole set of banners or merchandise artwork at once. A file we don't take is named, with what we do take; the rest of the batch still uploads.
📁A folder that looks empty when it shouldn't: open the org's Folders view. Finished files sitting outside their folder get a note at the top and one button to put them there. If the check couldn't run, it says that instead of all clear.

Handing links to families

Portal → 🤝 Share with families: the access-code list (CSV), QR cards and proof sheets, a printable photo-gallery sheet, and copyable "find my photos" + makeup sign-up links.

👥Staff galleries. The printable staff photo gallery sheet is on the same 🤝 Share with families tab for any org with a staff photo day — a Staff Photo Day or a picture day that also shot staff. Printing asks for the gallery password so it lands on the cards; we keep it scrambled and can't look it up, so set a new one right there if you've lost it.

Once it's online: check the session against the gallery

Lists drift — a name typed a second way, somebody who turned up on the day, a gallery rebuilt without the codes you had. Import MagicCheck a session against its gallery takes the subject list exported from the live gallery and shows where the two disagree.

Drop the file in. It reads the session from the file's name — confirm that — then shows four things: names spelled two ways, people in the gallery not on the session, people on the session the gallery hasn't got, and whether the online codes line up. Nothing changes until you click something.

🔑If the codes don't match, keep the gallery's — families are typing those now. One button hands them over; every old code stays alive, so a printed card still gets through. It refuses any change that would send a parent to the wrong child — a code already used elsewhere, someone in the gallery twice under two sports, a code a spreadsheet dropped a leading zero from — names each with the reason, and the rest go through.
✍️Names are yours to decide, one at a time. It shows both spellings and what's on file for that person — other sessions, a parent, an email, an order — because a name typed on the morning of a shoot is weaker than a long-standing record. Your pick is fixed on the roster and never asked again; if the roster's spelling wins, a reminder to change it in the gallery lands on the session's task list.
🔒It never touches the emails or phone numbers in those files — those are parents' details on children's rows. The screen names the columns it leaves alone. Don't put a gallery export through the normal roster import; it's a different file.

That's the line — from "I have a client" to families holding their photos.


What's automatic vs. what you click

MomentYou clickHappens on its own
Approve a bookingConfirm → Create jobCreates org+contact+job; grants portal; sends ONE "you're booked" email
Org opens portalShows the "Your next steps" checklist
Session details submitted(they submit)Notifies you 3 ways, email lists the answers; marks the job
Agreement signed(they sign)Files a signed copy into Business documents
Marketing set finishedGenerate & saveDrops posters into the Marketing Materials folder + emails the org
Roster dropped / a family signs upNotifies you 3 ways
Import a roster / deliver files / sign an agreement(you do the work)Ticks the matching job Task — no box to check by hand
Confirm a jobConfirm itOpens the right number of crew seats on the staffing sheet
Send an equipment prep listSend listEmails and texts the prep list to the set's owner
Crew claim / clock in(they tap)Fills the seat / logs their hours
File marked deliveredMark it deliveredEmails the org "something new is ready"