> ## Documentation Index
> Fetch the complete documentation index at: https://help.pipelime.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Invite team members and manage access

> Invite by email, pick the role they join with, change a role later, or remove someone from the workspace.

export const Kbd = ({children}) => <kbd className="pl-kbd">{children}</kbd>;

export const UiPath = ({children}) => {
  const parts = String(children).split(/\s*(?:→|>)\s*/).filter(Boolean);
  return <span className="pl-path">
      {parts.map((part, index) => <span key={`${index}-${part}`}>
          {index > 0 && <span className="pl-path__sep">→</span>}
          {part}
        </span>)}
    </span>;
};

export const Screenshot = ({id, alt, caption, frame = 'browser', url, marks = [], lang = 'en', workspace = 'northwind-outbound'}) => {
  const src = `/images/screenshots/${lang}/${id}.png`;
  const chrome = url ? `app.pipelime.ai/${workspace}${url}` : 'app.pipelime.ai';
  return <figure className={`pl-shot pl-shot--${frame} not-prose`}>
      <div className="pl-shot__frame">
        {frame !== 'bare' && <div className="pl-shot__bar">
            <span className="pl-shot__dots">
              <span className="pl-shot__dot" />
              <span className="pl-shot__dot" />
              <span className="pl-shot__dot" />
            </span>
            <span className="pl-shot__url">{chrome}</span>
          </div>}
        <div className="pl-shot__media">
          <img src={src} alt={alt} loading="lazy" />
          {marks.map(mark => <span key={mark.n} className="pl-shot__mark" style={{
    left: `${mark.x}%`,
    top: `${mark.y}%`
  }} aria-hidden="true">
              {mark.n}
            </span>)}
        </div>
      </div>
      {caption && <figcaption className="pl-shot__caption">{caption}</figcaption>}
    </figure>;
};

By the end of this page you've invited someone to the workspace, and you know how to change their role or remove their access again later.

<div className="pl-availability">
  <div className="pl-availability__row">
    <div className="pl-availability__label">Where</div>
    <div className="pl-availability__value"><span className="pl-path">Settings<span className="pl-path__sep">→</span>Access</span></div>
  </div>

  <div className="pl-availability__row">
    <div className="pl-availability__label">Your role needs</div>
    <div className="pl-availability__value">Read access to Access <code>read-users</code>. Admin, Member and Viewer have it by default.</div>
  </div>

  <div className="pl-availability__note">If you cannot find this in your sidebar, your workspace may have a custom menu configuration. Contact support and we will check it for you.</div>
</div>

## Before you begin

* Inviting, changing a role and removing someone are each gated on their own permission. A role that can open this tab doesn't necessarily hold any of the three, and the control for the one it lacks just doesn't render.
* You can only hand out a role whose permissions you hold yourself. Picking one that goes past your own is refused when you send, not hidden from the list.
* The workspace owner's row and your own row never show a role dropdown or **Delete**. Nobody can change the owner's role, and nobody can change or remove their own access from this table.

## Steps

<Steps>
  <Step title="Open the Access tab">
    Go to <UiPath>Settings → Access</UiPath>. Everyone currently in the workspace is listed
    there, one row each, with their email and the role they hold in this workspace.
  </Step>

  <Step title="Add the email addresses">
    Type an email under **Invite team members** and press <Kbd>Enter</Kbd>. Repeat for
    everyone you want to invite in one go. Each address turns into a chip, and anything that
    isn't a valid address is dropped again with a warning, so only real addresses stay in the
    field.

    **Invite as** and **Invite** only appear once you've added at least one address.

    <Screenshot id="settings-team/invite-team-members--invite" url="/settings/access" alt="The Access tab with two email chips staged in the invite field, and the Invite as role select and Invite button now showing beneath it" caption="The role select and the Invite button stay hidden until there's at least one address to send to." />
  </Step>

  <Step title="Choose the role they join with">
    Open **Invite as** and pick from the roles your workspace already has: the system roles
    plus any custom role you've built. It opens on Member, so leaving it alone invites at that
    role. See [Roles & Permissions](/en/settings-team/roles-and-permissions) for what each one
    can do.
  </Step>

  <Step title="Send the invites">
    Choose **Invite**. Every address on the list gets an email (an account is created for
    anyone who doesn't already have one), and a toast confirms the invites went out.
  </Step>

  <Step title="Change someone's role later">
    Find them in the members table and open the role dropdown in their row, then pick the new
    role. There's no save step: the change goes through as soon as you pick it, and a "Role
    updated" toast confirms it.

    <Screenshot id="settings-team/invite-team-members--members" url="/settings/access" alt="The members table with an Owner chip on the first row, and a role dropdown open on another row listing the system roles alongside a custom role" caption="The dropdown lists every role the workspace can assign: system roles and custom ones together." />
  </Step>

  <Step title="Remove someone from the workspace">
    Choose **Delete** in their row, then **Confirm** in the dialog, which names the person and
    the workspace. This takes their role away in this workspace only. Their account, and any
    other workspace they belong to, is left alone.
  </Step>
</Steps>

<Note>
  When you are on a partner-branded domain, a member whose address is on our own staff domain
  shows here as **Account team** instead of their email.
</Note>

## What happens next

<Check>
  Every address you invited is in the members table right away, on the role you picked, and
  each one has an email with a link that signs them in.
</Check>

Membership is attached when you send, not when they open the email, so there is no invitation
for them to accept and no pending state to chase. The row is already a full member. Nothing
on this screen tracks whether the email has been opened.

See [Joining a workspace you were invited to](/en/workspaces-account/joining-a-workspace-by-invitation)
for what an invited member sees on their side.

## Troubleshooting

<AccordionGroup>
  <Accordion title="An address vanishes from the invite field, or Invite never appears">
    Two different things. An address that fails the format check is added and then removed
    again with a warning, so retype it and press <Kbd>Enter</Kbd>. Text you typed but never
    committed with <Kbd>Enter</Kbd> stays sitting in the field without becoming a chip, and
    only chips count. With none of them, **Invite as** and **Invite** don't render at all.
  </Accordion>

  <Accordion title="Inviting someone already in the workspace is rejected">
    An invite to someone who is already a member only resends the email if the role you picked
    is the one they already hold. Any other role is refused, with a message telling you to
    change it from their row instead, which is what you should do. Because the addresses are
    sent one request each, a rejection part-way through a batch doesn't undo the invites that
    already went out, and the field keeps every chip.
  </Accordion>

  <Accordion title="The role dropdown or Delete is missing, or the change is refused">
    Neither control ever appears on the workspace owner's row or on your own: nobody,
    including you, can change the owner's role or remove the owner, and nobody can change or
    remove their own access from here. Three more rules are enforced when you send rather than
    on screen: the last remaining admin can't be demoted or removed, you can't grant a role
    holding permissions you don't hold yourself, and you can't remove a member whose role
    outranks your own. Each one comes back as a sentence naming what stopped it.
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="Roles & Permissions" icon="shield" href="/en/settings-team/roles-and-permissions">
    The three system roles, how custom roles are built, and what each permission unlocks.
  </Card>

  <Card title="Joining a workspace you were invited to" icon="log-in" href="/en/workspaces-account/joining-a-workspace-by-invitation">
    What an invited member sees when they open the link, from their side.
  </Card>
</CardGroup>
