Join requests
Join requests are the self-serve path for a second employee at a company that already has an InPolicy workspace. Instead of hitting a dead-end waitlist, they can request to join and a workspace admin approves or declines from the Users page.
How it works
Section titled “How it works”- A prospective member goes to the InPolicy sign-up page and enters their work email.
- Because a workspace already exists for their email domain, the sign-up gate redirects them to a Request to join screen.
- They confirm their email and click Request to join your workspace.
- Every workspace admin with the Manage users permission receives an email notification with a link to the pending requests list.
- An admin opens the Requests tab on the Users page, reviews the request, and clicks Approve or Decline.
- The requester receives an email with the outcome.
Auto-approve
Section titled “Auto-approve”Admins can turn on Auto-approve join requests in Settings → Plan. When enabled, join requests for the workspace are approved automatically (the requester is provisioned as a Viewer without waiting for admin review). Auto-approve only takes effect on unlimited-seat workspaces — single-seat free plans still queue requests for manual review.
Reviewing requests (admin)
Section titled “Reviewing requests (admin)”- Open the Users page.
- Click the Requests pill next to All (a count badge shows how many are pending).
- The table shows every pending request and anything approved or declined in the last 24 hours.
- For a pending row, click Approve or Decline.
- Approve provisions the person as a Viewer in your workspace and sends them a sign-in link. You can assign a more specific role afterward using the role-assignment controls on the Users page.
- Decline notifies the requester by email.
Approved rows briefly remain visible in the Requests tab before moving to the All/Active filter — this lets you immediately apply role changes without switching views.
Seat limits
Section titled “Seat limits”InPolicy workspaces start on the single-seat free plan (seatLimit = 1). On this plan, join requests are queued but cannot be approved until seats are unlocked.
Unlocking unlimited seats
Section titled “Unlocking unlimited seats”There are three ways to upgrade to unlimited seats:
| Path | Who | Where |
|---|---|---|
| Sign up with an access code | Any new user | Sign-up gate |
| Redeem a code as an existing admin | Workspace admin (Manage tenants) | Settings → Plan → Unlock with code |
| Internal flip | InPolicy ops/sales | Internal API |
Once the workspace is unlimited, admins can approve join requests and optionally enable auto-approve.
Email notifications
Section titled “Email notifications”Three transactional emails are sent as part of the join-request flow:
| Recipient | When | |
|---|---|---|
| New join request | All workspace admins | A request is submitted (de-duplicated: one email per requester per 4 hours) |
| Request approved | Requester | An admin approves, or auto-approve fires |
| Request declined | Requester | An admin declines |
All emails are localized to the workspace’s default locale (English, Spanish, French, German, Japanese, Korean, or Chinese).
Idempotency
Section titled “Idempotency”Re-submitting a join request for an email that already has a pending or decided request returns the existing status without creating a duplicate or sending another admin notification.
Related
Section titled “Related”- Invite users by email — the admin-initiated path: you send the invite, they click a link
- SSO directory sync — bulk import from Google Workspace or Microsoft Entra
- Users and roles — managing members after they join