No login, and that's the point
The portal is a private link, not an account. Your customer doesn't create a password they'll forget, and you don't field the "I can't get in" call six months later. Behind it, the link is a 256-bit random token that resolves to exactly one client in one business, and every quote, invoice, job and message thread is re-checked against that client on every single request.
An invalid or expired link returns a plain not-found on purpose — it gives away nothing about whether the link ever existed.
You control the link, not the other way round
- Links age out after exactly 90 days
- Revoke kills a link on the spot
- Rotate issues a fresh one and kills the old
- The next quote, invoice or message you send re-mints a valid link automatically, so you never have to think about it
Portal links are also stripped out of every internal read — lists, detail views, mutation responses and both sync feeds — specifically so a client's link can't end up sitting in a cache on a staff phone.
What the client actually sees
Their quotes, their invoices with paid and outstanding amounts, their message thread, and any job you've explicitly shared. A job you haven't shared isn't there — it returns not-found even for the right client. Nothing leaks by default; you opt work in.
Where a document snapshot exists, the portal renders the quote or invoice as it was sent, so the client is looking at the same figures that landed in their inbox.
Per-field sharing, on each job
Turn sharing on for a job and then tick exactly what's visible: the schedule, the location, the status, the title, the description, who's assigned, the to-do list, and photos. Eight independent switches. Everything else stays internal.
Photos go further — on a job with photo sharing on, you flag the individual photos that go to the client. Only processed photos are served, over short-lived signed links. It's pull-based: flipping a photo on sends no email, it simply appears the next time they open the portal.
Four things a client can do
- Accept or decline a quote — with a reason if they decline, bound to the exact PDF version they were sent
- Pay an invoice by card — once you've connected your own Stripe account and switched Stripe on
- Message you — a real two-way thread, not a contact form
- Raise their next job — submit an enquiry straight from the portal, landing in your enquiry list ready to quote
Messaging that's attached to the right thing
Threads hang off the client, a specific job or a specific quote, so a question about the bathroom job doesn't get lost in a general inbox. Read receipts run both ways. An unread client message becomes a critical item in your Needs Your Attention list, so it doesn't sit unanswered for three days. Field staff only ever see threads on jobs they're assigned to.
The thread is text only — you can't attach a file to a message. Photos reach the client through job photo sharing instead.
What it isn't
It's a web page, not an app. Your client opens a link in their browser — on a phone, a tablet or a laptop — and there's nothing for them to download. For a homeowner who'll deal with you twice in five years, that's the right answer, and we're not going to pretend a customer app would be better.
Frequently asked questions
Do my customers need an account?
No. The client portal is a secure no-login link. Your customer can view and accept quotes, follow the jobs you've shared, view and pay invoices, message you and submit a new enquiry, without creating an account or downloading anything.
Is it secure if there's no password?
Access is a 256-bit random link that resolves to exactly one client in one business, with every record re-checked for ownership on every request. Links are rate-limited, they expire after 90 days, and you can revoke or rotate any of them instantly. Portal links are also stripped from every internal view so they can't leak out through staff devices.
How much of a job can the client see?
Exactly what you tick. Sharing is off until you turn it on for that job, and then eight separate switches control the schedule, location, status, title, description, assigned staff, to-dos and photos. A job you haven't shared isn't visible at all.
Can I share photos of the work?
Yes, photo by photo. On a job with photo sharing on, you flag which individual photos the client sees, and they're served over short-lived signed links. Nothing is emailed — the photos appear next time the client opens their portal.
Do the links expire?
Yes, after 90 days. You can also revoke a link immediately or rotate it to issue a new one, and the next quote or invoice you send re-mints a valid link automatically.
Can clients pay through the portal?
Yes, once you've connected your own Stripe account and enabled Stripe in Payment Methods. Eligible invoices then carry a Pay Now button in the portal and in the invoice email, and the money settles into your Stripe account with no platform fee from us.
Is the portal an extra?
No. It's included at every seat, like every other feature, and it's on by default. You can switch it off for the whole business in settings if you'd rather not use it.
→ See the portal from the client's side in the live demo — no sign-up. Or read about quoting and invoicing.