Contacts & Billing

A client without contacts is just a folder — no one can log in, file tickets, sign contracts, or receive invoices. The Contacts tab is where you wire up the people.

The Contacts Tab

The Contacts tab is the default tab on every client workspace. It's a Vue.js application that splits into two sub-tabs:

Sub-tabWho
Client UsersExternal users from the client company — the people who log into the portal
Account ManagersInternal team members responsible for this client

The header shows a "Most Recent" badge with the contact who logged in most recently — useful at a glance to see if the client is active.

Client Users vs Account Managers

The two sub-tabs map to two different role groups:

Client Users

  • WordPress roles: client_basic, client_standard, client_billing, client_admin, author, contributor
  • Linked to this client via the assign_to_client user-meta field
  • See only their client's content (projects, tickets, contracts, etc.)

Account Managers

  • WordPress roles: administrator, editor, representative
  • Linked to this client via the same assign_to_client field — but their admin role gives them broader portal access
  • Used for assignment in dashboards ("show my clients") and for routing client communications

A user can be a contact for multiple clientsassign_to_client is a multi-value relationship.

Adding a Contact

To add a client user (someone who'll log into the portal):

  1. Open the client workspace
  2. Confirm you're on the Client Users sub-tab
  3. Click Add Contact
  4. The Add Contact modal opens

Fields

  • First Name (required)
  • Last Name (required)
  • Email (required) — must be unique across all WordPress users
  • Phone (optional)
  • Job Title (optional)
  • Role — pick from the client roles dropdown (default: client_standard)
  • Send invite email immediately — toggle (default: off)
  1. Click Add Contact

ClientCove:

  1. Creates a WordPress user with pending_invite = 1 and active = 0
  2. Sets assign_to_client to this client
  3. Adds them to the contacts list immediately
  4. If "Send invite" was on, sends the activation email
  5. If "Send invite" was off, the contact appears with a "Pending Invite" badge — you can send the invite later

Why "Add Contact" doesn't always send invite

Two reasons to skip the immediate invite:

  • Bulk staging — onboarding 20 contacts in one sitting; send all invites in a batch when you're ready
  • Awaiting confirmation — you've created the contact but the client hasn't confirmed they want them in the portal yet

The Pending Invite state lets you stage without committing.

Sending an Invite

For contacts in the Pending Invite state:

  1. Find the contact row in the Client Users list
  2. Click the Send Invite button (envelope icon, "Send Invite" label)
  3. Confirm in the prompt
  4. ClientCove sends an account activation email
  5. The contact's row updates to show "Invite Sent" with a timestamp

The activation email includes:

  • The contact's name greeting
  • A link to set their password
  • Your portal's branding (per Settings → Email)

The activation link is one-time-use and expires after 7 days. If the contact doesn't act in time, click Resend Invite to issue a new link.

Pending Invites & Activation

The lifecycle of a contact:

StateWhat's true
Pending InviteUser account exists, no invite sent
Invite SentActivation email sent, awaiting user click
ActiveContact set their password and logged in at least once
InactiveContact's active flag was set to 0 (e.g. they left the company)

Contact rows show a colored badge for the current state. Click the badge to see the timestamp of the last state change.

Activating without an invite

If a contact tells you they don't have access, but they should:

  • Resend Invite generates a fresh activation email
  • Or, in WordPress admin (admin only), use the standard password reset flow

Deactivating a contact

If a contact leaves the client company:

  1. Find their row
  2. Click the menu → Deactivate
  3. The user's active flag flips to 0
  4. They can no longer log in
  5. Their record is preserved for history (don't delete unless you really want to lose the audit trail)

Editing a Contact

For each contact row, the menu includes Edit:

  • Update name, email, phone, job title
  • Change role (from client_basic up to client_admin)
  • The change syncs to the WordPress user record immediately

You cannot change the client assignment from this modal — to move a contact to a different client, edit the user in WordPress admin and update their assign_to_client field.

Removing a Contact

To remove a contact from this client:

  1. Find the contact row
  2. Click the menu → Remove from Client
  3. Confirm

This removes the client link (assign_to_client) but keeps the user account. The contact:

  • Loses access to this client's content
  • Retains access to any other clients they're assigned to
  • Can be re-added later by adding them as a contact again

To delete the user account entirely, do it from WordPress admin — Removing from Client is the safer default.

Most Recent Login

The header of the Contacts tab shows a badge:

Most Recent: Jane Doe — 2 hours ago

This is the most recent login across all client users for this client. Useful for:

  • At-a-glance activity check ("are they still using the portal?")
  • Spotting accounts gone stale
  • Identifying the active contact when reaching out

The login timestamp is stored as last_login user meta and updated on every successful login.

Account Managers

The Account Managers sub-tab works the same way as Client Users but for internal staff:

Adding an account manager

  1. Switch to the Account Managers sub-tab
  2. Click Add Account Manager
  3. Pick a user from the dropdown (filtered to admin / editor / representative roles)
  4. Save

The selected user is now linked to this client. They appear:

  • In the Account Managers list on this client's workspace
  • In dashboard widgets that show "my clients"
  • In ticket assignment dropdowns when this client's ticket is being routed

Removing an account manager

Same pattern — menu → Remove.

Internal users are typically responsible for many clients, so adding and removing happens often as ownership shifts.

Designating the Billing Contact

For clients with invoicing enabled, one client user is designated as the Billing Contact — the recipient for invoice notifications.

Setting the billing contact

  1. Open the Settings tab in the workspace
  2. Scroll to Billing Contact
  3. The dropdown lists every client user (excluding admins and account managers)
  4. Pick one
  5. Click Save Changes

The dropdown shows each user's display name and email so you can confirm you're picking the right person.

Empty contact list

If the dropdown shows "No contacts found", you haven't added any client users yet. Go to the Contacts tab, add at least one user, then come back to Settings.

Changing the billing contact

You can change the billing contact at any time. The change applies to invoices issued from that point forward — already-sent invoices are not retroactively re-routed.

What the billing contact sees

The billing contact gets:

  • All invoice notification emails for the client
  • A flagged "Billing" badge on their user profile
  • Optionally: receipts for online payments (when payment integration is enabled)

Other client users don't see invoices unless they have the client_billing role, which is independent of the billing-contact designation.

Was this page helpful?