Sharing status with customers (customer portal)
Every work order, quote, and invoice can be shared with the end customer through a one-tap link. They open it without signing in and see a live, branded status page.
Generating a share link
On any work order, quote, or invoice detail page, click Share in the top-right. The first time you click, we generate an unguessable token and copy the URL to your clipboard. Subsequent clicks return the same URL (idempotent — we don't generate new links).
Send the URL via email, SMS, WhatsApp, or paste it into your CRM.
What the customer sees
For a work order at /portal/wo/[token]:
- Current status (Scheduled / In Progress / Completed) — updates in real time.
- Their assigned technician's name and photo.
- Service address, scheduled time, your contact phone.
- Parts that have been used (if any).
- Job-site photos uploaded by the technician.
- Customer signature once captured.
- A Get help button that opens our contact form.
For a quote at /portal/quote/[token]:
- The line items, totals, taxes.
- Your company info (from
org_profile). - An Approve quote / Request changes button.
For an invoice at /portal/invoice/[token]:
- The full invoice as a printable page.
- A Pay now button (when Stripe is configured).
What the customer does NOT see
- Internal notes
- Audit log entries (who did what when)
- Hourly rates or your cost basis
- Other customers' data — share tokens are scoped to one record
- Anything not on the order itself (no peek into your CRM)
Revoking access
On the WO/quote/invoice detail page, Share → Revoke. The token is invalidated; the URL now 404s. Generate a fresh one to share again.
Tips
- The portal works on mobile too — fully responsive.
- Customers don't need an account. No sign-up barrier between you and them seeing the status.
- Pair this with the contact form so customers can reach you from the portal page itself.