Bookings
Bookings let you manage every shoot from first enquiry to the day of the session — all in one place. You can create bookings yourself, take requests through a public booking page, collect deposits, keep your clients in the loop through their portal, and sync everything to the calendar app you already use.
Bookings are a Plus+ feature. The public booking page and team assignments require Pro.
What Bookings is
A booking represents a single shoot. Each one has:
- A client — the person being photographed.
- One or more shoot days — a booking can span multiple days.
- A status — where the booking sits in your pipeline (see Statuses).
- Optional deposits and payments — taken through Stripe or recorded manually.
- Optional linked documents — an invoice, a contract, or a quote.
- A reference number in the format
BK-YYYY-NNNN(for example,BK-2026-0001). Quote this when you email or message a client about their shoot.
Note: Bookings are gated behind the Plus plan. If the menu prompts you to upgrade, your current plan does not include Bookings yet.
Creating a booking
You can add a booking from your own records — for example, after a phone call or DM.
- Go to Bookings and click + New.
- Enter a title (e.g. "Sarah & Jamie — engagement shoot").
- Choose a booking type (wedding, portrait, event, commercial, product, family, newborn, maternity, or other).
- Optionally pick a session type to pre-fill the price and deposit, or set the price manually.
- Set the start and end dates (turn on the multi-day option if the shoot spans more than one day).
- Add the location and choose the client — search your existing clients or create a new one inline.
- Set the total amount and any deposit.
- Add internal notes if you like — these stay private to you and your team.
On save, a new manual booking is Confirmed by default.
Managing a booking
The bookings dashboard
The Bookings page lists everything in your pipeline. From here you can:
- Switch between List and Calendar views.
- See KPI tiles for your approval queue, confirmed shoots, and in-progress work.
- Filter by status, search by client name or reference, and narrow by date range.
- Export the current list to CSV.
The booking detail page
Open any booking to see its full record, organised into tabs:
- Overview — title, type, dates, location, client details, linked documents, notes, and the Job panel showing the quote, invoices and contract this booking belongs with.
- Schedule — each shoot day with its date, timing, and location. Use + Add day to extend a booking across multiple shoots without creating a new record.
- Team — assigned crew, their roles, and pay (Pro — see Session types, availability & the public page).
- Payments — every payment on the booking's job, whether it was recorded here or paid against a linked invoice, with the ability to record a payment, mark it refunded, or issue a Stripe refund. The billing card shows Collected and Outstanding from the same figures, and tells you when the booking's pending instalments have been handed over to its invoice (see Bookings and jobs).
- History — a reverse-chronological audit trail of every status change, payment, and action, with who did it and when — including when the booking was created from a quote, added to or removed from a job, or had its payment plan changed.
The detail page header shows the reference, status badge, an Add to calendar button, and status-aware actions (Approve, Reject, Cancel, Edit, and so on).
Bookings and jobs
Every booking belongs to a Job — the record that keeps the quote, bookings, invoices, contract and payments for one piece of work together. A few things on the booking page come from that:
- Generate invoice — if the job has an accepted quote with no invoice raised from it yet, you are asked whether to bill the quote (its line items, tax and discount) or the booking package, and warned if the two totals differ. Otherwise the invoice is one line for the package. Once the job's quote has an invoice raised from it that is not cancelled — a converted or deposit invoice, a change order, or parts billed item by item — the billing card says so while the booking has no invoice linked: "This job's quote is already invoiced (INV-…) — to have this booking pay through one of them, open it and use Link to booking, instead of generating another invoice.", or "This job's quote is invoiced in parts (INV-…, INV-…) — …" when it is billed item by item. Generate invoice then asks Generate anyway? before creating anything, naming the invoices that already bill the quote. Go ahead only if the booking package is separate work.
- Deposit received? — when a deposit is paid on the job's invoice while the booking is still waiting on money, a banner offers to confirm the booking. Nothing is confirmed automatically.
- Create booking from a quote — on an accepted quote, Next steps → Create booking opens this form already filled in and files the booking into the quote's job.
- Keeping the deposit credit up to date — money paid on a booking is credited onto its invoice when the invoice is created, so the client is never billed for a deposit they already paid. If the two drift apart afterwards, a banner above the tabs says so — "RM 500.00 captured on BK-… isn't credited on INV-…" after a later payment on the booking, or "RM 200.00 refunded on BK-… is still credited on INV-…" after a booking refund — with an Update button. The confirmation spells out the invoice's new balance, whether a paid invoice will reopen (which locks the client's downloads until it is paid again), and that the client is emailed that the invoice changed. Nothing changes until you confirm. When the money cannot be credited — the invoice is already paid in full, or it was marked paid without a recorded payment — the banner explains why and offers no button. Link existing attaches an invoice without moving the deposit, so this banner is where you finish that job. When the job's quote is billed item by item, the credit goes on the part the booking points at while that part has room. Once it is paid (or refunded), the banner offers the credit on the oldest other part of the same quote you have sent — "INV-… is fully paid, so this goes on the next invoice for the same quote, INV-… — which still asks the client for money they've already paid on the booking." — and when only some of it fits, the confirmation says where the rest goes: onto another sent part of the quote that has room, or nowhere, when none has. A credit is never handed on to a draft, to a part another booking points at, or to a part that bills an item another live part of the quote also bills.
- One place to pay — a booking can have its own instalments and an invoice. Once the booking is confirmed and its invoice has been sent, the invoice takes over: your client's portal shows the invoice balance with a Pay invoice button, and the booking's pending instalments are no longer offered to them. The instalments are hidden, not deleted — the billing card notes how many are pending and which invoice the client now pays through, and cancelling or unlinking the invoice brings them straight back. While a booking is still being reserved (Pending, Awaiting Payment, Awaiting Approval) the deposit that holds the date is always paid on the booking itself, and a draft invoice never takes over because your client cannot see it yet. Two things make the hand-over wait, because in both the invoice's balance is not yet what your client really owes, so they keep paying through the booking exactly as before: the credit banner above is waiting for your Update (a payment to credit, or a refund to take back off), or an instalment your client paid by card is still Authorized — held on their card but not captured. Confirm the banner, or capture or release the hold, and the invoice takes over. If you have not connected Stripe, the portal offers View invoice instead of Pay invoice, since the invoice's pay page takes cards only.
- A quote billed in parts — when the job's quote is billed item by item, the booking points at one of the parts. While that part can't take money — it is paid, refunded or still a draft — your client's Pay invoice takes them to the oldest other part of the same quote that you have sent and that still has a balance, in the same job, for the same client and currency, not already another booking's invoice, and not one of two parts that bill the same item (after a late card payment revives a cancelled part whose items were billed again, cancel one of the two first — once your client pays it, it can't be cancelled). The hand-over waits while the credit banner above shows anything at all — its offer to move the credit onto the next part included — or while an instalment is Authorized. Meanwhile, a banner crediting money on the part itself or taking a refund back off any part, or a held instalment, keeps your client paying through the booking as above; with any other banner their booking page stays on the part the booking points at — showing Paid in full once it is paid — or, for a draft or refunded part, on the booking's instalments. Cancelling or deleting the part a booking points at moves the booking to the quote's next part in the same job that no other booking points at, for the same client and currency — one already sent first, then a paid one, then a draft — or releases it when there is none. Any deposit credit on the part it leaves is released, and the credit banner on the booking page shows where it can go; while that banner waits for you, the booking's page follows the waits above.
- Deleting a booking is refused while money paid on it is still credited on a live invoice — remove the credit (cancel the invoice, or update the credit after refunding the booking) first.
Booking statuses
Every booking moves through a clear set of statuses:
| Status | Meaning |
|---|---|
| Draft | An internal placeholder you haven't finished setting up. |
| Pending | A newly created record that hasn't entered a specific flow yet. |
| Awaiting Payment | A request waiting on a manual (bank/cash) payment before its deadline. |
| Awaiting Approval | A request waiting for you to approve or reject it. |
| Confirmed | The shoot is locked in. |
| In Progress | The shoot has started. |
| Completed | The shoot is finished. |
| Cancelled | The booking was cancelled by either party. |
| Declined | You turned down an incoming request. |
| No Show | The client didn't show up — recorded for your reporting. |
Tip: Status changes are recorded on the booking's History tab, so you always have an answer to "what happened with this booking, and when".
Session types, availability & the public page
These features let prospective clients request bookings directly from a page you share.
Note: The public booking page and team assignments require the Pro plan.
Session types
A session type is a bookable product — for example "30-minute portrait" or "Wedding day". Go to Bookings → Session types to create them. Each has a name, description, duration, price, an optional deposit, and before/after buffers so back-to-back shoots don't overlap. You can mark a type active (shown publicly), featured, and reorder them by dragging.
Availability
Under Bookings → Availability, set the days and time ranges you're open for bookings. The public calendar combines these rules with your existing bookings and each session type's buffers to offer real open slots.
The public booking page
Under Bookings → Settings, enable the public booking page and choose a URL slug — your page then lives at /book/your-slug. You can also set a page title and description. Clients pick a session type, choose an available slot, enter their details, and reserve. Depending on your settings they'll either pay instantly, request approval, or follow manual-payment instructions.
In the same settings screen you can configure defaults: the default booking type, auto-confirm (skip the approval queue when payment succeeds — requires Stripe), minimum notice and maximum advance windows, deposit requirements, and reminder days.
Deposits & the manual-payment window
You can require a deposit on a booking, taken one of two ways:
- Online (Stripe) — the client pays by card. This requires Stripe to be connected. See Stripe Connect to set this up.
- Manual — bank transfer, cash, or e-wallet. The client gets payment instructions and a deadline, and the booking sits in Awaiting Payment until you record the funds. The window defaults to 48 hours from reservation. Mark the deposit received from the booking's header or its Payments tab once the money arrives.
Note: Without Stripe connected, the public page only offers the manual-payment flow. Online instant-reserve and auto-confirm both need Stripe. See Stripe Connect.
What your client sees
Your clients manage their shoots from their client portal. On their Bookings page they see upcoming and past bookings; opening one shows the shoot details, schedule, any linked documents, the payment status (with a Pay balance now button while they pay the booking's own instalments, or Pay invoice once you have sent an invoice for a confirmed booking), and an Add to calendar button. They can also request a reschedule — the request lands back on your booking's detail page for you to action.
Clients can't edit the booking itself, see your internal notes, or trigger refunds — those stay with you.
Calendar sync
Seleckt offers two independent ways to get bookings into the calendar app you already use. Neither is a two-way sync — Seleckt writes to your calendar, but changes you make in Google or Apple Calendar don't flow back.
Add a single booking to your calendar
Both your booking detail page and your client's portal view have an Add to calendar button. It offers:
- Apple Calendar / Download (.ics) — downloads a standard
.icsfile that any calendar app can import. - Google Calendar and Outlook — open a pre-filled event in a new tab.
The event carries the shoot title, dates, and location — never your internal notes.
Subscribe to your whole booking schedule
For a live, always-up-to-date feed of all your bookings, go to Bookings → Settings → Calendar Sync and turn on Enable calendar sync. Seleckt generates a private feed URL you can subscribe to once:
- Add to Apple Calendar or Add to Google Calendar with one tap, or copy the URL into Outlook.
- New bookings, reschedules, and cancellations sync automatically — no re-importing.
- Turn on Show unconfirmed bookings to include pending and awaiting-approval bookings as tentative events.
- Use Regenerate to issue a fresh URL and revoke the old one if it's ever exposed. Anyone already subscribed will need to re-add the new URL.
Warning: Keep your calendar feed URL private — anyone who has it can see your entire booking schedule. If you think it's leaked, Regenerate it.
Troubleshooting
The public booking page shows a 404. Check that Enable booking page is on under Bookings → Settings and that the slug in the URL matches your configured slug exactly. The public page also requires the Pro plan.
A client sees "no sessions available". You have no active session types. Go to Bookings → Session types and create at least one with Active turned on.
A client sees "no times available". Either the day is fully booked or your availability rules exclude it. Check Bookings → Availability.
Auto-confirm is greyed out in settings. Stripe isn't connected. Connect it from Stripe Connect and the toggle becomes available.