---
title: Organizations
description: Org switcher, member lists, invites, roles, and profile surfaces.
---

The full [organizations](/convex-auth/organizations) UI stack — switcher, creation, member management, invitations, roles, and the org profile surface.

### `ConvexCreateOrganization`

**Props**

| Name              | Type                                                              | Optional | Description |
| ----------------- | ----------------------------------------------------------------- | -------- | ----------- |
| `classNames`      | `ConvexCreateOrganizationClassNames`                              | Yes      |             |
| `copy`            | `ConvexCreateOrganizationCopy`                                    | Yes      |             |
| `defaultImageUrl` | `string \| None`                                                  | Yes      |             |
| `defaultName`     | `string`                                                          | Yes      |             |
| `defaultSlug`     | `string`                                                          | Yes      |             |
| `errorMessage`    | `string \| None`                                                  | Yes      |             |
| `isLoading`       | `boolean`                                                         | Yes      |             |
| `onCancel`        | `() => void`                                                      | Yes      |             |
| `onCreate`        | `(input: ConvexCreateOrganizationInput) => void \| Promise<void>` | Yes      |             |
| `renderHeader`    | `(args: __type) => ReactNode`                                     | Yes      |             |

**classNames keys**

| Key               | Type     |
| ----------------- | -------- |
| `actions`         | `string` |
| `body`            | `string` |
| `card`            | `string` |
| `description`     | `string` |
| `errorBanner`     | `string` |
| `field`           | `string` |
| `header`          | `string` |
| `helper`          | `string` |
| `input`           | `string` |
| `label`           | `string` |
| `primaryButton`   | `string` |
| `secondaryButton` | `string` |
| `title`           | `string` |

**copy keys**

| Key                   | Type     |
| --------------------- | -------- |
| `cancelLabel`         | `string` |
| `createLabel`         | `string` |
| `creatingLabel`       | `string` |
| `description`         | `string` |
| `imageUrlLabel`       | `string` |
| `imageUrlPlaceholder` | `string` |
| `invalidSlugError`    | `string` |
| `nameLabel`           | `string` |
| `namePlaceholder`     | `string` |
| `nameRequiredError`   | `string` |
| `slugHelper`          | `string` |
| `slugLabel`           | `string` |
| `slugPlaceholder`     | `string` |
| `slugRequiredError`   | `string` |
| `title`               | `string` |

### `ConvexOrganizationInvitationLinkNotice`

No props.

### `ConvexOrganizationInviteForm`

**Generics:** `<Role>`

**Props**

| Name                   | Type                                      | Optional |
| ---------------------- | ----------------------------------------- | -------- |
| `classNames`           | `ConvexOrganizationMembersClassNames`     | Yes      |
| `copy`                 | `ConvexOrganizationInviteFormCopy`        | Yes      |
| `disabled`             | `boolean`                                 | Yes      |
| `inviting`             | `boolean`                                 | No       |
| `onEmailChange`        | `(value: string) => void`                 | No       |
| `onRoleTemplateChange` | `(value: Role) => void`                   | No       |
| `onSubmit`             | `() => void`                              | No       |
| `roleOptions`          | `readonly Role[]`                         | No       |
| `state`                | `ConvexOrganizationInviteFormState<Role>` | No       |

**classNames keys**

| Key                       | Type     |
| ------------------------- | -------- |
| `actions`                 | `string` |
| `form`                    | `string` |
| `formGrid`                | `string` |
| `input`                   | `string` |
| `label`                   | `string` |
| `labelText`               | `string` |
| `list`                    | `string` |
| `listCard`                | `string` |
| `listContent`             | `string` |
| `listHeader`              | `string` |
| `memberDetails`           | `string` |
| `memberEmail`             | `string` |
| `memberMetadata`          | `string` |
| `memberName`              | `string` |
| `primaryButton`           | `string` |
| `primaryButtonDisabled`   | `string` |
| `secondaryButton`         | `string` |
| `secondaryButtonDisabled` | `string` |
| `select`                  | `string` |
| `stateText`               | `string` |
| `status`                  | `string` |

**copy keys**

| Key                | Type     |
| ------------------ | -------- |
| `emailLabel`       | `string` |
| `emailPlaceholder` | `string` |
| `roleLabel`        | `string` |
| `submitLabel`      | `string` |
| `submittingLabel`  | `string` |

### `ConvexOrganizationMemberActionErrorNotice`

No props.

### `ConvexOrganizationMemberList`

**Generics:** `<Role, MemberId>`

**Props**

| Name               | Type                                                                 | Optional | Description |
| ------------------ | -------------------------------------------------------------------- | -------- | ----------- |
| `canManageMembers` | `boolean`                                                            | Yes      |             |
| `canManageRoles`   | `boolean`                                                            | Yes      |             |
| `classNames`       | `ConvexOrganizationMembersClassNames`                                | Yes      |             |
| `copy`             | `ConvexOrganizationMembersCopy`                                      | No       |             |
| `formatTimestamp`  | `(timestamp: number) => string`                                      | Yes      |             |
| `members`          | `readonly ConvexOrganizationMemberListItem<MemberId>[] \| undefined` | No       |             |
| `mutatingMemberId` | `MemberId \| None`                                                   | Yes      |             |
| `onReactivate`     | `(membershipId: MemberId) => void`                                   | Yes      |             |
| `onRoleChange`     | `(membershipId: MemberId, roleTemplate: Role) => void`               | Yes      |             |
| `onSuspend`        | `(membershipId: MemberId) => void`                                   | Yes      |             |
| `renderStatus`     | `(status: ConvexOrganizationMemberStatus) => ReactNode`              | Yes      |             |
| `roleOptions`      | `readonly Role[]`                                                    | No       |             |

**classNames keys**

| Key                       | Type     |
| ------------------------- | -------- |
| `actions`                 | `string` |
| `form`                    | `string` |
| `formGrid`                | `string` |
| `input`                   | `string` |
| `label`                   | `string` |
| `labelText`               | `string` |
| `list`                    | `string` |
| `listCard`                | `string` |
| `listContent`             | `string` |
| `listHeader`              | `string` |
| `memberDetails`           | `string` |
| `memberEmail`             | `string` |
| `memberMetadata`          | `string` |
| `memberName`              | `string` |
| `primaryButton`           | `string` |
| `primaryButtonDisabled`   | `string` |
| `secondaryButton`         | `string` |
| `secondaryButtonDisabled` | `string` |
| `select`                  | `string` |
| `stateText`               | `string` |
| `status`                  | `string` |

**copy keys**

| Key                      | Type     |
| ------------------------ | -------- |
| `emptyMessage`           | `string` |
| `lastOwnerDisabledLabel` | `string` |
| `loadingMessage`         | `string` |
| `reactivateLabel`        | `string` |
| `reactivatingLabel`      | `string` |
| `roleLabel`              | `string` |
| `statusLabel`            | `string` |
| `suspendingLabel`        | `string` |
| `suspendLabel`           | `string` |
| `unknownMemberLabel`     | `string` |

### `ConvexOrganizationMembersSurface`

**Generics:** `<Role, MemberId, OrganizationId, InvitationId>`

**Props**

| Name                        | Type                                                                                       | Optional | Description |
| --------------------------- | ------------------------------------------------------------------------------------------ | -------- | ----------- |
| `canManageMembers`          | `boolean`                                                                                  | Yes      |             |
| `canManageRoles`            | `boolean`                                                                                  | Yes      |             |
| `captureEvent`              | `(name: string, properties: Record<string, unknown>) => void`                              | Yes      |             |
| `classNames`                | `ConvexOrganizationMembersClassNames`                                                      | Yes      |             |
| `confirmSuspendMember`      | `(args: __type) => boolean \| Promise<boolean>`                                            | Yes      |             |
| `copy`                      | `ConvexOrganizationMembersSurfaceCopy`                                                     | Yes      |             |
| `defaultInviteRoleTemplate` | `Role`                                                                                     | Yes      |             |
| `getErrorMessage`           | `(error: unknown, fallback: string) => string`                                             | Yes      |             |
| `organizationId`            | `OrganizationId`                                                                           | Yes      |             |
| `refs`                      | `ConvexOrganizationMemberFunctionReferences<Role, MemberId, OrganizationId, InvitationId>` | No       |             |
| `renderActionError`         | `(message: string) => ReactNode`                                                           | Yes      |             |
| `renderInvitationLink`      | `(args: __type) => ReactNode`                                                              | Yes      |             |
| `renderStatus`              | `(status: ConvexOrganizationMemberStatus) => ReactNode`                                    | Yes      |             |
| `roleOptions`               | `readonly Role[]`                                                                          | No       |             |

**classNames keys**

| Key                       | Type     |
| ------------------------- | -------- |
| `actions`                 | `string` |
| `form`                    | `string` |
| `formGrid`                | `string` |
| `input`                   | `string` |
| `label`                   | `string` |
| `labelText`               | `string` |
| `list`                    | `string` |
| `listCard`                | `string` |
| `listContent`             | `string` |
| `listHeader`              | `string` |
| `memberDetails`           | `string` |
| `memberEmail`             | `string` |
| `memberMetadata`          | `string` |
| `memberName`              | `string` |
| `primaryButton`           | `string` |
| `primaryButtonDisabled`   | `string` |
| `secondaryButton`         | `string` |
| `secondaryButtonDisabled` | `string` |
| `select`                  | `string` |
| `stateText`               | `string` |
| `status`                  | `string` |

**copy keys**

| Key                   | Type                                     |
| --------------------- | ---------------------------------------- |
| `actionErrorTitle`    | `string`                                 |
| `invitationLinkTitle` | `string`                                 |
| `invite`              | `ConvexOrganizationInviteFormCopy`       |
| `members`             | `Partial<ConvexOrganizationMembersCopy>` |

### `ConvexOrganizationList`

**Props**

| Name                    | Type                                                | Optional | Description |
| ----------------------- | --------------------------------------------------- | -------- | ----------- |
| `classNames`            | `ConvexOrgListClassNames`                           | Yes      |             |
| `copy`                  | `ConvexOrgListCopy`                                 | Yes      |             |
| `currentOrganizationId` | `string \| None`                                    | Yes      |             |
| `invitations`           | `readonly ConvexOrgListInvitation[]`                | Yes      |             |
| `isLoading`             | `boolean`                                           | Yes      |             |
| `onAcceptInvitation`    | `(invitationId: string) => void \| Promise<void>`   | Yes      |             |
| `onCreateOrganization`  | `() => void \| Promise<void>`                       | Yes      |             |
| `onRejectInvitation`    | `(invitationId: string) => void \| Promise<void>`   | Yes      |             |
| `onSelectOrganization`  | `(organizationId: string) => void \| Promise<void>` | No       |             |
| `organizations`         | `readonly ConvexOrgListOrganization[]`              | No       |             |
| `showInvitations`       | `boolean`                                           | Yes      |             |

**classNames keys**

| Key               | Type     |
| ----------------- | -------- |
| `actionButton`    | `string` |
| `body`            | `string` |
| `card`            | `string` |
| `dangerButton`    | `string` |
| `description`     | `string` |
| `divider`         | `string` |
| `emptyState`      | `string` |
| `header`          | `string` |
| `invitationItem`  | `string` |
| `invitationMeta`  | `string` |
| `orgImage`        | `string` |
| `orgItem`         | `string` |
| `orgItemActive`   | `string` |
| `orgMeta`         | `string` |
| `orgName`         | `string` |
| `orgPlaceholder`  | `string` |
| `primaryButton`   | `string` |
| `secondaryButton` | `string` |
| `title`           | `string` |

**copy keys**

| Key                    | Type     |
| ---------------------- | -------- |
| `acceptLabel`          | `string` |
| `createLabel`          | `string` |
| `currentLabel`         | `string` |
| `description`          | `string` |
| `expiresLabel`         | `string` |
| `invitationsLabel`     | `string` |
| `membershipsLabel`     | `string` |
| `noInvitationsLabel`   | `string` |
| `noOrganizationsLabel` | `string` |
| `rejectLabel`          | `string` |
| `selectLabel`          | `string` |
| `title`                | `string` |

### `ConvexOrganizationPermissionChecklist`

No props.

### `ConvexOrganizationRoleActionErrorNotice`

No props.

### `ConvexOrganizationRoleCreateForm`

No props.

### `ConvexOrganizationRoleList`

**Generics:** `<RoleId>`

No props.

### `ConvexOrganizationRoleManagerSurface`

**Generics:** `<RoleId>`

**Props**

| Name                  | Type                                                                           | Optional |
| --------------------- | ------------------------------------------------------------------------------ | -------- |
| `buildCreateRoleArgs` | `(state: ConvexOrganizationRoleFormState) => ConvexOrganizationCreateRoleArgs` | Yes      |
| `canCreateRoles`      | `boolean`                                                                      | Yes      |
| `captureEvent`        | `(name: string, properties: Record<string, unknown>) => void`                  | Yes      |
| `classNames`          | `ConvexOrganizationRoleManagerClassNames`                                      | Yes      |
| `copy`                | `ConvexOrganizationRoleManagerCopy`                                            | Yes      |
| `getErrorMessage`     | `(error: unknown, fallback: string) => string`                                 | Yes      |
| `refs`                | `ConvexOrganizationRoleManagerFunctionReferences<RoleId>`                      | No       |
| `renderActionError`   | `(message: string) => ReactNode`                                               | Yes      |

**classNames keys**

| Key                     | Type     |
| ----------------------- | -------- |
| `badge`                 | `string` |
| `checkbox`              | `string` |
| `error`                 | `string` |
| `field`                 | `string` |
| `form`                  | `string` |
| `input`                 | `string` |
| `label`                 | `string` |
| `labelText`             | `string` |
| `list`                  | `string` |
| `listCard`              | `string` |
| `listContent`           | `string` |
| `permissionDescription` | `string` |
| `permissionGrid`        | `string` |
| `permissionItem`        | `string` |
| `permissionKey`         | `string` |
| `primaryButton`         | `string` |
| `primaryButtonDisabled` | `string` |
| `roleHeader`            | `string` |
| `roleName`              | `string` |
| `rolePermissions`       | `string` |
| `sectionTitle`          | `string` |
| `stateText`             | `string` |

**copy keys**

| Key                             | Type     |
| ------------------------------- | -------- |
| `actionErrorTitle`              | `string` |
| `createTitle`                   | `string` |
| `creatingLabel`                 | `string` |
| `customRoleLabel`               | `string` |
| `emptyMessage`                  | `string` |
| `loadingMessage`                | `string` |
| `nameLabel`                     | `string` |
| `namePlaceholder`               | `string` |
| `permissionCatalogEmptyMessage` | `string` |
| `permissionLabel`               | `string` |
| `roleListTitle`                 | `string` |
| `submitLabel`                   | `string` |
| `systemRoleLabel`               | `string` |

### `ConvexOrganizationProfile`

**Props**

| Name                  | Type                                                            | Optional | Description                                            |
| --------------------- | --------------------------------------------------------------- | -------- | ------------------------------------------------------ |
| `classNames`          | `ConvexOrgProfileClassNames`                                    | Yes      |                                                        |
| `copy`                | `ConvexOrgProfileCopy`                                          | Yes      |                                                        |
| `isAdmin`             | `boolean`                                                       | Yes      |                                                        |
| `isLoading`           | `boolean`                                                       | Yes      |                                                        |
| `onDelete`            | `() => void \| Promise<void>`                                   | Yes      |                                                        |
| `onUpdate`            | `(input: ConvexOrgProfileUpdateInput) => void \| Promise<void>` | Yes      |                                                        |
| `organization`        | `ConvexOrgProfileOrganization \| None \| undefined`             | No       |                                                        |
| `renderDeleteConfirm` | `(args: __type) => ReactNode`                                   | Yes      |                                                        |
| `showBrandFields`     | `boolean`                                                       | Yes      | When false, brand fields are hidden (default true).    |
| `showSecurityFields`  | `boolean`                                                       | Yes      | When false, security fields are hidden (default true). |

**classNames keys**

| Key               | Type     |
| ----------------- | -------- |
| `actions`         | `string` |
| `body`            | `string` |
| `card`            | `string` |
| `dangerButton`    | `string` |
| `description`     | `string` |
| `field`           | `string` |
| `header`          | `string` |
| `image`           | `string` |
| `input`           | `string` |
| `label`           | `string` |
| `primaryButton`   | `string` |
| `secondaryButton` | `string` |
| `statusBadge`     | `string` |
| `title`           | `string` |
| `value`           | `string` |

**copy keys**

| Key                         | Type     |
| --------------------------- | -------- |
| `accentColorLabel`          | `string` |
| `activeStatus`              | `string` |
| `brandSectionTitle`         | `string` |
| `cancelLabel`               | `string` |
| `confirmDeleteDescription`  | `string` |
| `confirmDeleteTitle`        | `string` |
| `deleteLabel`               | `string` |
| `description`               | `string` |
| `editLabel`                 | `string` |
| `emailFromNameLabel`        | `string` |
| `emailReplyToLabel`         | `string` |
| `nameLabel`                 | `string` |
| `primaryColorLabel`         | `string` |
| `requireMfaDisabled`        | `string` |
| `requireMfaEnabled`         | `string` |
| `requireMfaLabel`           | `string` |
| `saveLabel`                 | `string` |
| `savingLabel`               | `string` |
| `securitySectionTitle`      | `string` |
| `sessionTimeoutLabel`       | `string` |
| `sessionTimeoutPlaceholder` | `string` |
| `slugLabel`                 | `string` |
| `statusLabel`               | `string` |
| `suspendedStatus`           | `string` |
| `title`                     | `string` |
| `websiteLabel`              | `string` |

### `ConvexOrganizationSwitcher`

**Props**

| Name                          | Type                                                | Optional | Description |
| ----------------------------- | --------------------------------------------------- | -------- | ----------- |
| `classNames`                  | `ConvexOrgSwitcherClassNames`                       | Yes      |             |
| `copy`                        | `ConvexOrgSwitcherCopy`                             | Yes      |             |
| `currentOrganization`         | `ConvexOrgSwitcherOrganization \| None`             | Yes      |             |
| `currentOrganizationId`       | `string \| None`                                    | Yes      |             |
| `enableSearch`                | `boolean`                                           | Yes      |             |
| `onCreateOrganization`        | `() => void \| Promise<void>`                       | Yes      |             |
| `onInPlaceCreateOrganization` | `(name: string) => void \| Promise<void>`           | Yes      |             |
| `onSelectOrganization`        | `(organizationId: string) => void \| Promise<void>` | No       |             |
| `onSelectPersonalAccount`     | `() => void \| Promise<void>`                       | Yes      |             |
| `organizations`               | `readonly ConvexOrgSwitcherOrganization[]`          | No       |             |
| `personalAccountLabel`        | `string`                                            | Yes      |             |
| `renderCustomTrigger`         | `(args: __type) => ReactNode`                       | Yes      |             |
| `showPersonalAccount`         | `boolean`                                           | Yes      |             |

**classNames keys**

| Key                    | Type     |
| ---------------------- | -------- |
| `createButton`         | `string` |
| `dropdown`             | `string` |
| `dropdownDivider`      | `string` |
| `dropdownItem`         | `string` |
| `dropdownItemActive`   | `string` |
| `dropdownItemLabel`    | `string` |
| `dropdownItemMeta`     | `string` |
| `dropdownPanel`        | `string` |
| `dropdownSection`      | `string` |
| `dropdownSectionTitle` | `string` |
| `inPlaceCreateButton`  | `string` |
| `inPlaceCreateCancel`  | `string` |
| `inPlaceCreateForm`    | `string` |
| `inPlaceCreateInput`   | `string` |
| `searchInput`          | `string` |
| `trigger`              | `string` |
| `triggerImage`         | `string` |
| `triggerName`          | `string` |
| `triggerPlaceholder`   | `string` |

**copy keys**

| Key                        | Type     |
| -------------------------- | -------- |
| `createOrganizationLabel`  | `string` |
| `currentOrganizationLabel` | `string` |
| `inPlaceCreateButtonLabel` | `string` |
| `inPlaceCreateCancelLabel` | `string` |
| `inPlaceCreatePlaceholder` | `string` |
| `noOrganizationsLabel`     | `string` |
| `otherOrganizationsLabel`  | `string` |
| `personalAccountLabel`     | `string` |
| `searchPlaceholder`        | `string` |
