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

# Remove client portal access

> Take away a client contact's access – one project, the whole portal, or their login entirely – and understand what is kept when an engagement ends.

You can remove portal access at three levels: one project for one contact, the whole portal for everyone, or a contact's login altogether.

Nothing they wrote is destroyed. Comments, approvals and uploads are always kept.

## Which method to use

| You want to                               | Do this                                                    | Reversible                       |
| ----------------------------------------- | ---------------------------------------------------------- | -------------------------------- |
| Hide one project from one contact         | Untick the project on the client's **Portal access** panel | Yes – tick it again              |
| End one person's access completely        | Remove their membership from the roster                    | No – you would invite them again |
| Stop an invite that has not been accepted | Revoke the invitation                                      | No – send a new one              |
| Close the portal for every client at once | Switch the **Client portal** app off                       | Yes – switch it back on          |
| Move a project away from a client         | Change the project's client                                | Yes – move it back               |

## Remove one project from one contact

<Steps>
  <Step title="Open the client record">
    Go to **Clients** and click the company – for example **Bluebird Coffee**.
  </Step>

  <Step title="Find the contact">
    Scroll to **Portal access** and find their card under **Contacts**.
  </Step>

  <Step title="Untick the project">
    Clear the checkbox next to the project. The change saves straight away.
  </Step>
</Steps>

The contact loses that project the next time their portal loads. Everything they already commented or approved stays where it is.

<Note>
  Unticking works even when the Client portal app is switched off. You can always take access away, whatever state the portal is in.
</Note>

## Remove a portal contact completely

A portal contact is a member of your workspace, so you remove them the same way as anyone else.

<Steps>
  <Step title="Go to the roster">
    Open **Settings → Team Members**.
  </Step>

  <Step title="Find the contact">
    Search for their name or email. Their role badge reads **Client**.
  </Step>

  <Step title="Remove them">
    Open the three-dot menu and choose **Remove from workspace**.
  </Step>

  <Step title="Confirm">
    A dialog asks **Remove {name}?** with the text `They'll immediately lose access to {workspace}. This can't be undone.` Click **Remove member**.
  </Step>
</Steps>

Removing a person also revokes any outstanding invitation for their email address, in the same step. An open invite is access, so it has to go with the rest.

See [remove a member](/team/remove-a-member) for the full picture.

## Revoke an invitation that was never accepted

An invite that is still open is live access. Revoking it closes that door.

<Steps>
  <Step title="Open the roster">
    Go to **Settings → Team Members**.
  </Step>

  <Step title="Find the pending invite">
    Its status column reads **Pending**.
  </Step>

  <Step title="Revoke it">
    Open the three-dot menu and choose **Revoke invite**.
  </Step>

  <Step title="Confirm">
    The dialog reads **Revoke invite?** – `{email} will no longer be able to use this link. Anyone already on the roster stays on it – they just can't claim a login until you invite them again. This can't be undone.`
  </Step>
</Steps>

The old link stops working immediately.

## Close the portal for everyone

Switching the **Client portal** app off shuts the door for every contact at once.

<Steps>
  <Step title="Open Apps">
    Go to **Settings → Apps**.
  </Step>

  <Step title="Switch Client portal off">
    Find **Client portal** under **Connections** and turn the switch off.
  </Step>
</Steps>

The app describes what happens: `Clients can no longer sign in to the portal. Their comments, approvals and uploads are kept.`

Back on the client record, the **Portal access** panel explains the state:

> `The client portal is turned off, so contacts can't sign in and no new ones can be invited. Existing access is kept and can still be removed below. An owner or admin can turn it back on in Settings → Apps.`

<Tip>
  Use this when an engagement pauses. Switching the app back on restores every contact's access exactly as it was.
</Tip>

## Move a project away from a client

Changing a project's client revokes the old client's contacts and grants the new one's, in one step. Clearing the client field removes access without granting anyone.

This is the cleanest way to stop a former client seeing continuing work.

## What a removed contact sees

| Situation                                     | What they get                                                                                |
| --------------------------------------------- | -------------------------------------------------------------------------------------------- |
| A project was unticked                        | It disappears from their list. Opening an old link shows **You don't have access to this**.  |
| Their membership was removed                  | They can no longer reach the portal at all.                                                  |
| The app was switched off                      | **You don't have access to this** – they cannot tell a closed portal from a removed account. |
| Their access was switched off but not removed | They cannot sign in. Their history is untouched.                                             |

The message they see reads: `This item isn't shared with you. If you think that's a mistake, contact your project group.`

<Note>
  The error is deliberately vague. It never tells a client whether an item exists, so nothing leaks from a refusal.
</Note>

## What is kept

Removing access never destroys work.

| Kept                             | Detail                                        |
| -------------------------------- | --------------------------------------------- |
| Their comments                   | Stay on the deliverable, attributed as before |
| Their approvals                  | Stay recorded                                 |
| Their uploads                    | Stay attached                                 |
| Your projects, time and invoices | Completely unaffected                         |
| The audit trail                  | Every share and revoke is recorded            |

## Example

The Bluebird Coffee retainer ends. Priya Raman at Northwind Studio:

<Steps>
  <Step title="Unticks the finished project">
    On the Bluebird Coffee record she unticks **Monthly Retainer** for Ruth Castillo. Ruth keeps **Website Redesign**, which is still running.
  </Step>

  <Step title="Later, closes it out">
    When the redesign ships too, Priya removes Ruth from the roster in **Settings → Team Members**. Ruth's approvals and comments stay on both projects.
  </Step>

  <Step title="Frees the seat">
    Northwind's seat count drops by one, because Ruth's active membership no longer counts.
  </Step>
</Steps>

## Permissions

| Action                              | Capability                 | Roles that hold it by default |
| ----------------------------------- | -------------------------- | ----------------------------- |
| Untick a project for a contact      | `project.manage`           | Owner, Admin, Project Manager |
| See the Portal access panel         | `client.manage`            | Owner, Admin, Project Manager |
| Remove a contact from the workspace | `member.remove`            | Owner, Admin                  |
| Revoke an outstanding invite        | `invite.revoke`            | Owner, Admin, Project Manager |
| Switch the Client portal app off    | `workspace.updateSettings` | Owner, Admin                  |

## Common questions

<AccordionGroup>
  <Accordion title="Does removing a contact delete their comments?">
    No. Comments, approvals and uploads are kept exactly as they were.
  </Accordion>

  <Accordion title="Does archiving a project remove client access?">
    No. Archiving hides a project from your team's lists but leaves portal access alone. Untick it if you want the client to lose it.
  </Accordion>

  <Accordion title="Do I get the seat back?">
    Yes. Seats count active memberships and outstanding invitations. Removing either frees a seat straight away.
  </Accordion>

  <Accordion title="Can I pause access instead of removing it?">
    Yes. On the member record, switch **Can open this workspace** off. They cannot sign in, and turning it back on restores them exactly as they were.
  </Accordion>

  <Accordion title="Can I remove access while the portal app is off?">
    Yes. Unticking a project and removing a membership both work with the app switched off.
  </Accordion>
</AccordionGroup>

## Troubleshooting

| Problem                                   | Cause                                        | Fix                                                        |
| ----------------------------------------- | -------------------------------------------- | ---------------------------------------------------------- |
| A former contact still sees a project     | Their membership is still active             | Remove them from **Settings → Team Members**               |
| A revoked invite still works              | The wrong invite was revoked                 | Check the email on the invite row and revoke the right one |
| A contact reappears after removal         | A second, still-open invitation was accepted | Revoke every outstanding invite for that address           |
| You cannot find **Remove from workspace** | You do not hold `member.remove`              | Ask an owner or admin                                      |

## Related guides

<CardGroup cols={2}>
  <Card title="Remove a member" icon="user-minus" href="/team/remove-a-member">
    The full removal flow and what is kept.
  </Card>

  <Card title="Pending invitations" icon="mail" href="/team/pending-invitations">
    Why an open invite counts as access.
  </Card>

  <Card title="Portal projects" icon="folder" href="/portal/portal-projects">
    How project access is granted.
  </Card>

  <Card title="Portal permissions" icon="lock" href="/portal/portal-permissions">
    Who can manage portal access.
  </Card>

  <Card title="Apps and modules" icon="toggle-left" href="/concepts/apps-and-modules">
    Switching the Client portal off.
  </Card>

  <Card title="Seats and billing" icon="credit-card" href="/team/seats-and-billing">
    Freeing a seat.
  </Card>
</CardGroup>
