Homeowners never set a password. They log in by tapping a link delivered via SMS or email. One tap = authenticated session.
The flow
- Client visits
/client-loginand enters their email or phone. - System checks for a matching client record in any tenant.
- One-time magic link is generated (48-char token, 30-minute expiry).
- Link is sent via the matching channel (SMS if phone entered, email if email).
- Client taps the link. Token is validated, session created, redirected to the portal.
- Token is marked consumed; cannot be re-used.
Session duration
Default: 30 days on the portal. The goal is that a client never has to re-authenticate for a routine pay-an-invoice task. Shops with stricter security requirements can lower this via Settings → Security (coming Q3).
Pay links in email
Every automated email (invoice sent, reminder, service report) contains a signed link that auto-authenticates the client when clicked. They land directly on the relevant page — no intermediate login screen. Links in email are single-tenant-scoped and expire with the underlying action (invoice link expires when invoice is paid or 90 days out).
When a magic link does not arrive
Multi-tenant edge case
If a homeowner is a client at two different Servicio shops (e.g., they have a lawn service and a separate pool service), the magic-link flow will show them a tenant picker after authentication. They choose which shop's portal to enter. Session is tenant-scoped, so switching requires a new link.