The identity-provider webhook stamps every new non-owner account as pending worker at creation. Middleware redirects a pending user to a waiting page and returns 403 on API calls. An admin approves from the team surface, which sets status, role and crew, mirrors the membership, and writes an audit entry. Approval is guarded so an admin of one company can't approve a user belonging to another.
Also called: pending approval · approve new user · waiting for approval screen · account approval
- 1The signup webhook verifies its signature, then writes status pending and role worker onto the new identity.
- 2The platform owner is exempt and stamped approved admin.
- 3Middleware redirects any explicitly non-approved user to the waiting page, with a small allowlist of routes that must remain reachable.
- 4The waiting page is forced light-themed because it is customer-facing and renders on a tenant's own address.
- 5Approve sets status, role and crew, mirrors the row into the membership table, and audits the action with the approving admin's identity.
- 6Cross-account approval is refused: the target's account must match the caller's, unless the caller is the platform owner.
The approval guard closes a real hole: 'an admin in Tenant A could approve (and promote to any role) a pending user in Tenant B just by passing their Clerk userId — the route only checked caller is admin, never target is in caller's tenant.' The waiting page itself was rebuilt for a different reason, recorded as Keith 08-10: written in raw inline styles with a stale accent colour, 'on a dark-themed device it inherited near-black on the card and read as an empty box with body text under it' — and this is 'the first thing a new user ever sees of the product.'
- Self-serve signups reaching a company's data before anyone vetted them.
- An admin of one company being able to approve and promote a user in another.
- New users landing on a broken-looking waiting screen as their first impression.
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →