Last reviewed against v0.9.0
source:
infra/terraform/modules/paddle_webhook/lambda/org_routes.mjs, frontend/src/components/Settings/TeamManagement.tsx Inviting members
Branded ZeptoMail invite. Accept link mints membership. Federated-Google email-mismatch handled.
On a Team plan, an admin can invite a new member by email.
Flow
- Admin enters an email in Manage team → Invite.
- ShellYard generates a single-use, time-limited invite token.
- ZeptoMail delivers a branded invite email with the accept link.
- Recipient clicks the link, lands on
/account?invite=<token>. - If signed in, the accept call fires immediately. If not, the invite token is pre-stashed in localStorage and survives the OAuth round-trip.
- Backend mints membership, sets
custom:org_idandcustom:org_role=memberon the recipient’s Cognito user.
Edge cases handled
- Email mismatch — the recipient signs in with a different email than the invite. Returns
email_mismatch; the UI explains. - Expired — invite tokens have a TTL. Expired returns
invite_expired; admin can re-issue. - Already a member — the API short-circuits.
Internal name is Org (post-rename); user-visible copy says Team.