Skip to main content
A client has two kinds of contact, and they are not the same thing. Adding someone to the contact list does not give them access. Only a portal invite does.

Contact list entries

These are the people you email and call. Each row holds Name, Role, Email and Phone.
1

Open the client

Click the client in Clients.
2

Click Add contact

A new numbered row appears.
3

Fill in the fields

Only the name matters – a row without one is discarded on save.
4

Click Save changes

You see “Client saved.”
Use Remove on a row to delete it. This never affects a portal login.

Portal contacts

The Portal access panel sits below the client form. It exists because a portal login must belong to a client company – you cannot invite a bare portal user with no company. The panel does three things:
  1. Invites a new contact for this client.
  2. Lists who has joined and who still has an open invite.
  3. Lets you tick which of this client’s projects each contact can see.

Invite a contact

1

Open the client page

You need the Manage clients capability.
2

Enter the contact email

Type it into Contact email. It must be a valid address.
3

Click Invite contact

You see “Invite sent to …”. The role is fixed to Client – you cannot pick a different one here.
4

Copy the link if you need it

Copy invite link puts the latest invite URL on your clipboard, and the link is shown under Latest invite link. Use it if the email is slow or blocked.
When the contact accepts, they automatically get access to every project this client currently has. Projects added later are granted when you tick them, or when the project is moved to this client.
The full invite and acceptance flow is documented at /portal/invite-a-client-contact.

Contacts list

Below the invite form:
  • Joined contacts show their name and email, followed by a checkbox for every project of this client.
  • Pending contacts show the invited email and an Invite pending badge.
If the client has no projects yet, you see “This client has no projects yet. Assign a project to this client to grant access.” If nobody has been invited, you see “No portal contacts yet. Invite one above.”

Per-project access

Each joined contact has a checklist of this client’s projects. Tick a project to grant access. Untick it to revoke. Changes apply immediately – there is no save button. The list updates the moment the change lands.
Unticking a project takes the contact’s access away at once. They lose the project, its tasks and its shared documents from their portal. Nothing is deleted, and re-ticking restores access.

When the Client portal app is off

If an owner or admin switches the Client portal app off:
  • The invite form disappears. You cannot create a login that cannot be used.
  • A notice explains: “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.”
  • Existing contacts and their project checkboxes stay listed, and you can still untick a project.
Taking access away is deliberately never harder than giving it.

Plan gating

The client portal is a Pro feature. On Free the app is visible but locked behind a paywall. See /concepts/plans-and-features. Every portal contact is a login, so each one counts toward your seat total – the same as a staff member. See /team/seats-and-billing.

Example

Priya Raman gives Bluebird Coffee visibility into their work.
  1. She opens Bluebird Coffee and enters [email protected] under Contact email.
  2. She clicks Invite contact. The toast reads “Invite sent to [email protected].”
  3. The panel shows Ruth under Contacts with an Invite pending badge.
  4. Ruth accepts. She now appears as a joined contact with both Bluebird projects ticked – Website Redesign and Monthly Retainer.
  5. Northwind is not ready to share the retainer, so Priya unticks Monthly Retainer. Ruth now sees Website Redesign only.

Permissions

Portal contacts themselves hold zero internal capabilities. They see only what is explicitly shared with their company.

What happens next

  • A pending invite counts as access. It occupies a seat and appears in your invitation list until it is accepted or revoked.
  • Once accepted, the contact signs in and sees only their client’s shared projects. See /portal/what-clients-can-see.
  • Moving a project to a different client re-derives portal access automatically – the new client’s contacts gain it, the old client’s lose it.

Common questions

A contact is a name in the client’s phone book. A portal contact is a login. Adding the first does not create the second.
No. A portal contact must be tied to a client company, so the invite has to start from that client’s page. The server refuses a client invite that carries no company.
Never. A contact only ever reaches projects belonging to their own client company, and only those you tick.
No. Cost and margin figures are stripped before they leave the server for a portal login.
Untick every project to cut their reach, then remove the membership from the team roster. See /portal/remove-portal-access.

Troubleshooting

Invite a client contact

The full portal invite flow.

What clients can see

The portal firewall, in detail.

Remove portal access

Cut a contact off cleanly.

Client details

The rest of the client page.

Seats and billing

Why portal contacts count as seats.