Managing Clients & Permissions

The settings, status changes, and lifecycle controls for clients — plus the access model for who can see and edit what.

Capability Matrix

CapabilityWho Has It
View Clients pageAdministrator, Editor
View any client workspaceAdministrator, Editor
View own client workspaceClient users assigned to that client (limited to features they have access to)
Create clientsAdministrator, Editor
Edit client settingsAdministrator, Editor
Add / remove contactsAdministrator, Editor
Send / resend invitesAdministrator, Editor
Designate billing contactAdministrator, Editor
Manage statuses (taxonomy)Administrator, Editor
Manage categories (taxonomy)Administrator, Editor
Archive clientAdministrator, Editor
Permanently delete clientAdministrator only
Bulk import clientsAdministrator, Editor

Other roles (representative, technician, client roles, subscriber) cannot reach the /clients/ listing — they're redirected with an "Access Restricted" notice.

The Settings Tab

The Settings tab is the configuration hub for the client itself — distinct from the contact list, project list, etc.

It's organized into stacked cards:

Basic Information

  • Client Name (required)
  • Logo (with drag-drop upload + remove)
  • Description (textarea)

Billing Contact

  • Dropdown of client users to designate as the billing contact
  • Form text reminder to add contacts in the Contacts tab first if the list is empty

Address Information

  • Multiple addresses (Address 1, Address 2, etc.)
  • Add Address button to append more
  • Each address has its own Remove button

(Future cards)

Additional configuration cards may appear depending on enabled features and your portal customization.

Click Save Changes at the bottom to commit. Changes are saved via AJAX — a success toast confirms.

Editing Basic Information

In-place editing for the three core fields:

Name

  • Edit the input directly
  • Save commits the change to the post title and re-slugs the URL if the title changed significantly
  • Old URL still works (WordPress redirects from old to new slug)

Logo

The logo upload zone:

  • Upload — opens file picker (PNG/JPG)
  • Remove (trash icon) — clears the logo
  • Drop a file directly onto the zone for fast replacement
  • Preview shown immediately

Description

A standard textarea — multi-line plain text. Saved with the rest of the form.

Managing Addresses

A client can have any number of addresses — useful for multi-location companies, separate billing/shipping addresses, or franchise networks.

Add an address

  1. Click Add Address at the top of the Address Information card
  2. A new collapsible block appears with empty fields
  3. Fill in: Street, Billing flag (toggle), City, Country, State/Province, Zip
  4. Click Save Changes at the bottom of the form

Edit an address

  • Just type into the fields and save

Remove an address

  • Click the Remove button on any address block
  • Confirm
  • Click Save Changes

Billing flag

Each address has a Mark as Billing toggle. The flag is just a label — it doesn't auto-route anything. Use it to identify which address should appear on invoices and other billing documents.

You can mark multiple addresses as billing if a client has separate billing entities. Most setups use exactly one.

Status Management

Client statuses are stored in the client-status taxonomy.

Changing a client's status

  • From the client workspace, the status badge near the name shows the current status
  • Click the badge → dropdown → pick a new status
  • Or in Settings, change the status field and save

Adding new statuses

  1. From the Clients page, click the gear icon next to the status filter tabs
  2. The Manage Statuses modal opens
  3. Add a new status: Name + Slug + Description
  4. Optionally set Hide from filter — keeps the status active but doesn't show its tab on the Clients page (useful for archive states)

Editing a status

  • From the same modal, click the edit (pencil) icon on any status row
  • Update name, description, or the hide-from-filter flag

Deleting a status

  • Click the delete (trash) icon
  • Confirm — clients currently with this status fall back to "Active"
  • Default statuses (Active / On Hold / Inactive) cannot be deleted

Status filter cap

The Clients page filter row shows a maximum of 8 statuses. If you have more, the rest are accessible from the Manage Statuses modal but won't appear as tabs.

Category Management

Categories work the same way as statuses but with a different purpose — categories group clients (Enterprise, SMB, etc.) while statuses describe state (Active, On Hold, etc.).

Adding a new category

  1. From the Clients page sidebar, click the gear icon next to "Categories"
  2. The Manage Categories modal opens
  3. Add a new category with Name + Slug + optional Parent (categories are hierarchical)

Hierarchical categories

Categories support parent-child relationships. Example structure:

  • Enterprise (parent)
    • Fortune 500 (child)
    • Mid-market Enterprise (child)
  • SMB (parent)
    • Startup (child)
    • Established Small Business (child)

In the sidebar, child categories nest under their parent. Filter by either the parent (matches all children) or a specific child.

Assigning categories

  • A client can be assigned to multiple categories simultaneously
  • Set categories from the Add Client modal at create time, or
  • From the Settings tab → Category multi-select

Archiving a Client

When a client is no longer active and you want to keep them out of the active list without deleting:

  1. Open the client workspace
  2. Click the three-dot menu in the header
  3. Click Archive Client
  4. Confirm

The client gets _archived = '1' post meta. Effects:

  • Hidden from the default Clients page view
  • Hidden from dashboard widgets and dropdowns
  • Their projects, tickets, contracts remain in the database
  • The client's contact users retain their accounts

Viewing archived clients

  • A separate filter or query parameter exposes archived clients
  • Restore by editing the client and removing the archive flag

Why archive vs change to "Inactive" status

  • Inactive status keeps the client visible in lists with an "Inactive" badge — useful when you want them on radar but not actively engaged
  • Archived removes them from the working list entirely — useful when they're truly done and you don't want to scroll past them

Most workflows use both: change to Inactive when engagement ends, archive when you're past needing the visual reminder.

Deleting a Client

Permanent deletion is administrator-only and irreversible.

How to delete

  1. From the workspace, three-dot menu → Delete Client
  2. Confirmation dialog appears, requires typing the client name to confirm
  3. On confirm, the client post is deleted

What gets deleted

  • The client post itself
  • The client's address records (stored as ACF metadata)
  • The client's logo (the media library attachment can stay — only the link is removed)

What survives

  • Projects, tickets, contracts, invoices linked to this client — they still exist but their the_client reference becomes broken
  • Contact users (kept; they might be linked to other clients)
  • Activity logs (preserved for audit trail)

Because of these orphaned references, archive is almost always preferable to delete. Reserve delete for clients created in error or test data cleanup.

Cascade Effects

Changes to a client cascade to other features:

ActionCascade
Rename clientUpdates the dropdown label everywhere; the_client references work via ID, not name, so they're unaffected
Change status to InactiveSome dashboard widgets filter inactive clients out; existing projects/tickets stay accessible
Archive clientClient disappears from active client lists; existing tickets/projects show but their client filter no longer matches
Change billing contactFuture invoices route to the new contact; existing invoices stay routed to the original
Remove a contactThe contact loses access to this client's content; their projects/tickets they authored remain (post_author doesn't change)
Delete clientOrphans all related content's client reference; not recommended

Client User Visibility

When a logged-in client user opens the portal, what they see is filtered by:

The assign_to_client field

The user's assign_to_client user-meta points to one or more clients. The client filter on every feature (projects, tickets, contracts, etc.) intersects this with the feature's data:

  • A user with assign_to_client = [Acme] sees Acme's projects, Acme's tickets, etc.
  • A user with assign_to_client = [Acme, Globex] sees both clients' content
  • A user with no assignment sees nothing client-scoped

The user's role

Within their assigned client(s), a user's WordPress role further scopes what they can do:

RoleCapabilities
client_basicView only — no creating/editing
client_standardView + file tickets
client_billingclient_standard + view invoices
client_adminEdit anything for their client (closest to a "manager" role within the client company)
author / contributorLegacy WordPress roles — broadly equivalent to client_standard for portal purposes

Account managers (representative role)

The representative role gives access to multiple clients' content but with admin-style permissions:

  • Can view any client they're assigned to via assign_to_client
  • Can create projects, file tickets on behalf of clients, send contracts
  • Cannot manage clients themselves (admin/editor only)

This is the typical "account manager" persona — sales reps, customer success managers, etc.

Was this page helpful?