Day to day
Bookings
Creating and pricing visits, recurring schedules, crew arriving at different times, skips and deletes.
A booking is one visit: who, where, when, what kind of work, and what it costs. Everything else in Sollos — hours, invoices, checklists, the calendar — hangs off bookings, which is why a tidy booking habit keeps the whole system honest.
Creating one
From Bookings → New, from an empty slot on the scheduler, from +Book on a client's profile (client, address, and their usual service/length/price arrive pre-filled from their last job), from Create booking on a request (date, address, notes, and service arrive pre-filled — and saving marks the request scheduled), or from Book this job on an estimate (client, price, and description carried over; the estimate shows "converted" once saved). A completed booking also has Book again — the same job duplicated onto the same weekday and time next week, landing on the edit page to adjust.
Under Scheduled at, the form names the day you picked — Wednesday, September 16 — and lists what is already booked on it. A phone's date picker is a spinner that never says which weekday you landed on, so this is how you tell a free Tuesday from a full one without leaving the form. Every other date field in Sollos does the simpler half of this: pick a date anywhere — a contract, an invoice due date, time off, a pay period — and the weekday is spelled out underneath, so an Android picker that only shows digits can't land you on the wrong day.
The fields that matter most:
- Service — what kind of work. Drives the calendar color, reports, and any checklist attached to that service.
- Total — what the client will be billed for this visit. Price the job when you book it. A $0 booking becomes a $0 invoice later, and those are the ones that end up as awkward client conversations.
- Assigned to — the cleaner(s). Everyone assigned gets notified and sees the job in their field app. Subcontractors who claim an offered shift count too: every claimer shows on the booking tagged (subcontractor), alongside any assigned member — including when the offer had several spots and only some are taken.
Recurring
Tick Repeats and set the pattern; Sollos generates the visits ahead of time and keeps generating them. Editing a recurring booking asks whether you mean just this visit or this and future — the second rewrites the schedule from that date forward. A client skipping one week is a skip, not an edit.
The recurring list shows each series' billing state: an amber "N unbilled" chip means completed visits no invoice has claimed — click it to bill them. And the two recurring engines guard each other: if a client is on a billing cycle AND has a standing recurring invoice, the standing one is held with a warning instead of double-billing them.
When visits drift from their series. Every visit remembers the time it was booked for, in your workspace's time zone, and Sollos keeps the exact moment matched to that time overnight — so a change in clock rules (Alberta staying on one time from November 2026) can't quietly move a 9:00 visit to 10:00. If a recurring client's upcoming visits ever stop matching their series' time, Needs you asks about it: Restore puts them back at the series' time, and Make 10:00 AM the series' time keeps the visits where they are and moves the series to match, so future visits follow. Visits you moved by hand are left alone. Neither button messages anyone.
When a save would notify the client — the visit time moved, or the recurring schedule was rewritten — Sollos stops and asks: Save & notify client, or Save without notifying (you tell them yourself). The notice goes out by the client's own channel preference: email, text, or both. Saves that change nothing client-visible never notify; a save with an untouched schedule doesn't touch future visits at all.
Moving a job
Drag a job to a new time or person on the scheduler, or change it on the booking. A drag tells the client the new time (by their own email/text preference); the booking form asks first, with Save without notifying for when you've told them yourself. Either way the crew gets a push, and Google Calendar — yours and each cleaner's — moves within a minute or two. A move to a day someone marked off still goes through, with a warning naming who is off.
Photos
Job photos are taken on the job: tap Before, After, or the extra-photo button, then Take photo to use the camera or From gallery to add pictures already on the phone (several at once is fine). Big photos are shrunk on the phone before they upload, so they go through on slow data too. The office sees them on the booking.
Home photos & videos are about the place itself, not one clean: the pictures and videos a client sends for a quote, where the key is, the state the home was in before you started. Add them on the client's profile or on a booking (owners, admins and managers) with Take photo, Record video or From gallery, plus an optional note. On a booking you choose whether one stays with the client — shown on every visit — or belongs to that booking only. Everyone on the team sees them on the job, so a cleaner going somewhere for the first time knows what to expect. Videos can be up to 50 MB each, roughly 30 seconds of phone video.
Crew arriving at different times
Pick everyone in Crew. If they all arrive together, that's it. If they don't, tick Different times for each person and give each one an Arrives at time and a Time on site — say 9:00 AM for six hours, 11:00 AM for six, 1:00 PM for five. Times can overlap (working together), run end to end (a hand-off), or leave a gap. Each cleaner's phone shows their own arrival time, each clocks in and out for themselves, and pay comes from their own clocked hours. An arrival can't be earlier than the job's start time — move the job earlier if someone comes first.
Availability on the scheduler
Cleaners can submit their working hours in the field app (Profile → Availability). Whatever they declare shows on the scheduler: a green dashed chip with the hours in their day cells on the week view, and the hours beside their name in the day view's column headers. A specific day marked off beats the standing weekly hours. No chip just means nothing was submitted — unknown, not unavailable.
Statutory holidays show too, once a region is picked in Settings → Currency, tax & holidays: the day gets a violet label with the holiday's name on every scheduler view. It's a label, not a block — you can still book the day; you just do it knowing it's Labour Day. Computed locally from the region (province-level rules included), no calendar account involved.
Status, and changing it back
A booking moves Pending → Confirmed → In progress → Completed, and can be Cancelled from anywhere along the way. Set it from the dropdown on the bookings list, from a job's quick view on the scheduler, or on the booking's own form.
For a job that has already happened, status only moves forward — you can't un-complete a visit the books say happened, and a cancelled one stays cancelled.
A job scheduled in the future is different, because it's a plan rather than a record. Anything more than four hours out can be set freely to Pending, Confirmed or Cancelled — including back to Pending after you move it. That's the one to reach for when you reschedule and the client hasn't agreed to the new time yet: the "your job is tomorrow" reminder only goes out for Confirmed jobs, so parking it back on Pending stops the client being told about a time nobody has agreed. Future jobs aren't offered Completed or In progress at all — a job next week can't have happened.
Undoing a Completed job is allowed, but not out from under an invoice. If a live invoice bills it, void or fix that invoice first, then change the status.
Deleting and skipping
- Skip is for one visit of a recurring series that shouldn't happen — the series continues.
- Delete removes the booking. Past bookings can be deleted too (you'll get a firmer warning); hours logged on it are kept in Timesheets, just unlinked. A booking that's been invoiced refuses politely and tells you why.

