Nobody gets in until you approve them

A brand-new signup is marked pending and sees a waiting screen until an admin of the right company approves them with a role.

What it is

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

See it
Nobody gets in until you approve them
New lead 2
Marlin Hoover
$24k
Delia Yoder
$59k
Contacted 2
Sutter Kline
$64k
Ronan Petsch
$52k
Ivy Brubaker
$31k
Estimate 3
Ivy Brubaker
$59k
Gideon Alt
$73k
Sold 2
Marlin Hoover
$60k
Delia Yoder
$46k
The waiting-for-approval screen in light theme next to the admin's pending list with an Approve button and role picker. src/app/pending-approval/page.tsx. Sample data — no customer information appears here.
How it works
  1. 1The signup webhook verifies its signature, then writes status pending and role worker onto the new identity.
  2. 2The platform owner is exempt and stamped approved admin.
  3. 3Middleware redirects any explicitly non-approved user to the waiting page, with a small allowlist of routes that must remain reachable.
  4. 4The waiting page is forced light-themed because it is customer-facing and renders on a tenant's own address.
  5. 5Approve sets status, role and crew, mirrors the row into the membership table, and audits the action with the approving admin's identity.
  6. 6Cross-account approval is refused: the target's account must match the caller's, unless the caller is the platform owner.
Why we built it

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.'

The problem
  • 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.
Sound familiar?
What you get
No new account gets access until a real admin approves it with a role.
Approvals are audited with who did it and when.
Approval authority stops at your own company's boundary.

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 →