What Are Contacts?
A single client account can have multiple contacts — individuals who can log into the client portal with their own email address and password but are associated with the same billing account. This is useful for companies where different people manage billing, technical operations, and account administration.
The primary contact is the client record itself (the account owner). Additional contacts are sub-contacts stored in the client_contacts table, linked to the main client record.
Contact Roles
Each contact is assigned one of three roles that control what they can see and do in the client portal:
| Role | Portal Access |
|---|---|
| Admin | Full access — identical to the primary client login |
| Billing | Invoices and payment only — can view and pay invoices, download PDFs; cannot access services or tickets |
| Technical | Services and domains only — can view services and domains, open support tickets; cannot view invoices or make payments |
[!TIP] For a small business with separate IT and accounts teams, create a billing contact for the finance team and a technical contact for the developer. Neither sees the other's data.
Adding a Contact (Admin)
- Go to Admin → Clients → [Client record] → Contacts tab.
- Click Add Contact.
- Fill in the contact form (see fields below).
- Click Save Contact.
Contact Form Fields
| Field | Notes |
|---|---|
| First name | Required |
| Last name | Required |
| Email address | Must be unique across all client contacts and clients; used as login |
| Password | Auto-generated if left blank (emailed to the contact) |
| Role | Admin, Billing, or Technical |
| Phone number | Optional |
| Send invitation email | Checkbox; sends a welcome email to the contact with login instructions |
Adding a Contact (Client Self-Service)
Clients can add contacts themselves from Client → Profile → Contacts tab, if the administrator has enabled self-service contact management at Admin → Settings → Client Portal → Allow clients to manage contacts.
The client follows the same process: click Add Contact, fill in name, email, password, and role, then save. The new contact receives a welcome email.
Contact Email Notifications
Commerce sends different email notifications to contacts based on their role:
| Email type | Primary (Admin) | Billing contact | Technical contact |
|---|---|---|---|
| Invoice generated / due | Yes | Yes | No |
| Payment received | Yes | Yes | No |
| Service provisioned / suspended | Yes | No | Yes |
| Domain expiry reminder | Yes | No | Yes |
| Ticket opened / replied | Yes | No | Yes |
| Account updates | Yes | No | No |
[!IMPORTANT] Billing contacts receive invoice and payment emails but cannot open or view support tickets (unless their role is Admin). Technical contacts receive service and ticket emails but do not see invoice amounts. Design your contact roles to match your clients' internal team structure.
Editing a Contact
To edit an existing contact, go to Admin → Clients → [Client] → Contacts, click the pencil icon next to the contact. You can update their name, email, role, or reset their password.
Clients with self-service enabled can do the same from their own profile.
Removing a Contact
To remove a contact:
- On the Contacts tab, click the Remove button next to the contact.
- A password confirmation modal appears.
- Confirm to delete the contact.
[!IMPORTANT] Removing a contact is permanent. Their login credentials are deleted immediately. This action cannot be undone. If you need to temporarily disable a contact, consider changing their password instead.
The primary client contact cannot be removed — it is the account itself. To close an account, see Suspending & Unsuspending or use the archive/delete flow from the client record.
Login Independence
Each contact's session is completely independent. A billing contact can be logged in at the same time as the primary client and the technical contact — there is no session conflict. Each session uses its own cookie.