Client Accounts

Organize company portfolios, service sites, and contacts without moving their work history.

IntermediateownermanagerUpdated 2026-09-13

Client Accounts

Accounts are parent records that group related contacts together. Use them when you deal with organizations that have multiple people or properties.

Current Clients Workspace

The V2 Clients page now makes the account relationship visible without changing the protected hierarchy. Use its Standalone, Service sites, and Company portfolios filters to find the correct record, then open the client or account profile to review permitted contacts, saved properties, child sites, work history, and payment history.

A company portfolio remains a grouping and rollup record rather than a work target. Its profile guides the user to a visible service site before offering new lead, estimate, or property actions. The directory and profile totals also follow the signed-in member's location scope, so a hidden child cannot leak through a count or rollup.

The Clients page now supports both account creation and grouping. Select Add Account to create an empty account with its name, type, status, industry, contact details, label, and notes. To reuse existing records, select one or more Standalone clients and choose Group sites to turn them into service sites under a new or existing company, or open a standalone client's profile and choose Group sites there. A company profile has Ungroup, which puts every site back the way it was before grouping. A site profile that belongs to a company has Detach from company, which removes just that one site and leaves the rest of the portfolio in place.

Any grouping error, such as picking a client that already belongs to a different company, shows a plain sentence instead of a raw error code.

Company Portfolios and Service Sites

Clean Estimate V2 can organize multiple client records under one company portfolio. The company is the top-level account, and a building or service location can remain its own client record underneath it when that location needs independent contacts, leads, estimates, jobs, history, visibility, or performance totals.

Use a saved Property/Address instead when the customer relationship and work history belong to one client and only the physical service address differs. A property-management company with ten addresses but one shared operational record should therefore stay one client with ten saved properties. Use child service-site clients only when each location must operate as a separate CRM record while still rolling up to the company.

V2 has its own Bulk Schedule for a company portfolio, separate from the V1 saved-property workflow described below. It works from the service-site model: select Bulk Schedule on a company profile to book a job on many child sites at once. See Bulk Schedule (V2 Company Portfolios) below for the current entry point, defaults, and per-row editing. The V1 workflow's saved-property batch picker on a nested contact remains an open V1 parity item; the V2 service-site picker does not close that saved-property workflow.

This structure keeps operational work on the location where it happens:

  • Leads, estimates, jobs, plans, properties, contacts, and history remain on

the original site record. Grouping does not merge or delete those records.

  • The company account rolls up visible site work and retained work attached

directly to a promoted parent. A location-pinned team member sees only the records in that member's assigned location.

  • A location-pinned team member sees the shared company plus only the sites in

their assigned location. Portfolio totals therefore follow the same access scope.

  • New leads, estimates, jobs, and service properties must be attached to a standalone

client or a child service site, never the portfolio company parent. Web and mobile lead and estimate customer pickers list standalone clients and service sites but hide portfolio company parents before a save can be queued. Mobile receives that portfolio classification from the server, so a location-pinned device still hides the parent when all of its service sites belong to another location and are not synced to the device. Both the mobile lead form and standalone estimate form still recognize the portfolio name in exact-name duplicate warnings, but Use existing is offered only for a valid standalone client or service site. The web lead quick-create duplicate list omits portfolio parents entirely; the general Clients-page duplicate warning can still identify them because that workflow is not attaching work. If a stale or direct request names the company account anyway, including while repairing an older customerless estimate draft, CE Pro asks the user to choose the correct location instead. CE Pro also serializes these saves with grouping, so work cannot land on an account while it is being promoted into a company portfolio.

The web New job dialog follows the same boundary. Search for the active child service site, then choose one of that site's active saved properties. The portfolio parent is not a selectable work owner, and creating one standalone job does not roll it across multiple sites.

When a portfolio parent and a valid standalone client or child site share the same exact name, the mobile duplicate warning prefers the valid work target for Use existing. A parent-only match still appears as a duplicate warning without becoming selectable.

Promoting an existing top-level client does not depend on its editable client type label. A household-labeled record can become the portfolio parent while its selected client records become service sites; the parent-child hierarchy, not the label, determines the portfolio structure.

In the Clean Estimate V2 company-portfolio model, contacts on a company or service site are recipients and CRM roles, not separate work targets. A lead, estimate, job, or service property belongs to the standalone client or service site selected for the work; choosing a contact for communication does not move that work onto the contact. This differs from the v1 account address-book model described under Bulk Scheduling Account Portfolios, where each nested contact is itself a customer record and owns its saved properties and the jobs created from them.

An existing business client does not become a portfolio merely because its type is Company. It stays a normal standalone client until at least one site is grouped under it, so ordinary commercial customers can continue to receive leads and estimates normally.

If that existing client is later promoted into a portfolio, its earlier leads, estimates, jobs, invoices, and payments stay attached directly to the company record. They remain available in the main Pipeline, Estimates, and Calendar workspaces, and they also appear in the portfolio profile's Estimates, Leads, Invoices, Payments, and Activity tabs alongside every visible site's own records. The work rollups use the company plus visible child sites, so a hidden site's rows cannot enter a pinned view.

Grouping and ungrouping preserve each site's prior type, visibility links, and work references. Group sites (on a standalone client, or on several selected at once from the Clients directory), Add Contact (to create a nested client/site), and Ungroup (on a company) are self-service actions available directly from the Clients workspace; a site that belongs to a company also has its own Detach from company action. Use Nested Under inside Add Contact when creating or placing a client/site under the account. Use Group sites when grouping existing standalone records.

If the Add Contact save finishes but its response is interrupted, repeating the same save returns the original client and property without creating another member, contact, or property. A later edit is kept; changing the saved details on a retry asks you to refresh instead.

When Add Contact links an existing standalone client, the account role, primary state, and nested membership are saved together. Repeating the same link after a lost response is read-only while that membership is unchanged. If someone detached or edited the member first, the old link asks you to refresh; choose the client again to make a deliberate new link.

The V2 mobile company profile lists the permitted child service sites that have synced to the device. A rep can open the work-owning site from that list before reviewing site history or starting an estimate; sites outside the rep's location scope remain hidden.

The portfolio service safely recognizes an identical retried creation request as the same grouping. A reused ID that belongs to an unrelated or hidden client is refused instead of promoting that record into the new portfolio. The protected grouping boundary also requires an existing company parent to be visible to the signed-in member. An older hidden client with no active location links cannot be adopted by submitting its ID directly; only a company created inside the current grouping transaction may receive its first visibility link.

A location-pinned user can select only clients that exist entirely inside their own scope. If a selected client is also linked to another hidden location, that plain-sentence error asks an all-location owner or manager to perform the grouping instead, so the company remains visible everywhere its sites are visible. The hierarchy also refuses a parent link until that parent is already active at every location where the site is active, including changes submitted outside the supported grouping workflow. Hierarchy changes use a guarded grouping boundary instead of a direct client edit. When a site is detached or moved, CE Pro first releases any location link that grouping added to the old parent unless another site or retained parent work still needs it. This includes company visibility inherited later when an already-grouped site begins serving another location; CE Pro records that inheritance so the final detach can reconcile it. A raw parent-pointer edit is refused so it cannot leave the former company visible in a location it no longer serves. If a direct request names a parent outside the signed-in member's scope, CE Pro uses the same unavailable response as a missing ID and does not confirm that a hidden client record exists. The grouping history itself is read-only to application sessions. CE Pro records hierarchy moves and inherited location-link changes inside the same protected database operations that perform them, so a direct write cannot relabel a pre-existing company link as grouping-created and cause it to be removed later. A new grouping-created link is committed only with the participating service site's hierarchy move, and later visibility repairs must name an active site that is already grouped under that company. Releasing an inherited link, balancing every activation record created by repeated visibility repairs, and detaching the last site are one atomic operation; the link stays active when a sibling site or company-owned work still needs it. The internal portfolio classifier is restricted to CE Pro's application database role as well, so unrelated database roles cannot use it to probe whether a client has child sites. If detaching a site would require releasing a grouping-created company link outside a location-pinned member's scope, CE Pro refuses the whole change before modifying links or hierarchy; an all-location owner or manager must complete that cleanup. The cleanup preflight validates each requested site against the caller's visible scope before reading the complete hierarchy, so a hidden candidate ID is refused exactly like a missing ID.

Application sessions cannot directly insert, update, or delete client-location links. Client creation and later activation or repair use the protected location-link boundary, which first verifies that the client is already visible to the signed-in member or was created inside the same transaction. It restores a site's link together with any required parent-union link and audit record in one operation, so submitting the ID of an older hidden client cannot adopt it into the member's location. Link removal or deactivation must use a future explicit reconciliation workflow; a portfolio's required union link is released only through protected detach reconciliation after the final child leaves that location.

When to Use Accounts

Use an account when:

  • A property management company manages ten buildings, each with a site contact.
  • A commercial client has a decision maker, a billing contact, and an on-site property manager.
  • A household has two homeowners who both communicate with your team.
  • A franchise owner has multiple locations.

Use a standalone contact when:

  • A residential customer is a single person at a single address.
  • There is only one point of contact and no related records to group.

Account Types

When you create an account, you select a type:

TypeWhen to Use
CompanyBusinesses, corporations, LLCs
HouseholdFamilies or couples at a single property
GroupInformal groups like HOA boards or co-ops
OtherAnything that does not fit the above

Creating an Account

  1. Navigate to Admin > Clients.
  2. Click Add Account.
  3. Enter the Account Name (usually the company or household name).
  4. Select the Account Type.
  5. Set the Status (Active, Prospect, or Inactive).
  6. Fill in optional fields: Industry, Label, Email, Phone,

Website, and Notes.

  1. Click Create account.

The empty account appears in the Clients table. Add existing standalone client records as service sites with Group sites; an empty account remains an account until a site is deliberately added.

Screenshot placeholder
Add Account dialog with fields filled in

Adding Account Members

In the V2 company portfolio, the Contacts section lists the existing client or service-site records linked to the account. It does not turn rows from the separate person-contacts table into work owners.

  1. Open the company profile and select Contacts.
  2. Choose Add Contact and search for an existing standalone client, or

create the client in the dialog. The optional Nested Under account, Property / Site Name, and contact details are saved together.

  1. Assign an Account Role:
  • Decision Maker: Approves proposals and signs contracts.
  • Property Contact: Handles on-site logistics and scheduling.
  • Billing Contact: Receives invoices and manages payments.
  • Member: General contact with no specific responsibility.
  1. Select Set as Primary when this member should be the account's primary

member, then review the site's property, status, and permitted contact channels in the row.

The client now appears in the account's Contacts section. Its leads, estimates, jobs, properties, and history remain attached to that client or service site. When the account has many members, loading older Contacts pages does not hide the saved primary member from the account header; an inactive member remains visible there when it is within your permitted scope.

Screenshot placeholder
Add Contact dialog with search, Nested Under account, Property / Site Name, and Role set to Property Contact

Viewing Account Hierarchy

On the Clients page, account rows have an expand arrow on the left. Click it to reveal the visible service sites. Open an account to review the full profile; each Contacts row shows the site name, account role, primary state, property, status, and permitted contact details.

Screenshot placeholder
Expanded account row showing three nested contacts with role badges

Setting a Primary Contact

For a V1 nested account, one contact should be the primary contact. That contact is the default recipient when you send an estimate, invoice, or message to the V1 account.

In V2, the company portfolio is not a work or communication target. Estimates, invoices, and messages follow the child service site that owns the work. The account's Contacts section has one primary account member for navigation and account organization; person-level recipients remain attached to the work-owning site.

To set a primary contact:

  1. Open the account profile and select Contacts.
  2. Find the account member you want to designate.
  3. Select Set as Primary on that row.

A "Primary" badge appears next to the contact's name.

Primary-member changes are saved transactionally. If two admins update the same account at nearly the same time, the account keeps one authoritative primary member instead of leaving duplicate or stale primary flags.

Moving a service site into a different account as a regular member does not clear the destination account's existing primary member. Only an explicit primary-member change on that account replaces or clears the current primary.

Account membership moves and primary-member changes use the same protected account workflow, so a site cannot be left pointing at an unrelated account.

Screenshot placeholder
Three-dot menu with Set as Primary option highlighted

Account-Level Metrics

A company portfolio profile keeps the six V1 tiles in this order:

  • Contacts: Full count of visible account members (child client or

service-site records) attached to the company; the company parent is not counted as a contact. The rows include account roles and primary state.

  • Estimates: Full count across the company and visible child service sites.
  • Jobs: Full count across the company and visible child service sites.
  • Open pipeline: Value of open leads attached to the company itself or any

visible service site. A lead's stored value may be entered manually or follow its primary estimate's latest pricing; CE Pro does not add estimate options together.

  • Lifetime value: The tile uses the immutable accepted estimate option for

the company and visible service sites and shows the subtitle Accepted revenue across sites. Payment history and directory payment totals retain their cash-collected meaning.

  • Last activity: The latest durable client or work activity visible in the

signed-in teammate's location scope.

All six tiles share one scope: the company itself plus its visible service sites. A company that still carries leads, estimates, payments, or invoices attached directly to it from before promotion has that history folded into the same scoped profile view.

The Clients directory's customer payments figure remains cash based and matches the Payments tab's own total. Its open-lead-count and open-pipeline-value columns continue to use their existing directory scope; they are separate from the profile's accepted-revenue subtitle.

Every tile is complete across the organization only for an all-location owner or manager. For a location-pinned team member, every total is limited to records in that member's assigned location and should be read as a location-scoped view, not the company's organization-wide value.

Exact-work prepayments and their refunds affect the payment history and directory payment value. A duplicate provider settlement counts while that cash is held and returns to zero when fully refunded. CE Pro includes it only when the payment and frozen repeat-work order match the same organization, office location, service-site client, and connected Stripe account recorded on both. Money from a hidden or unrelated site, tenant, office, or provider account cannot enter the portfolio total.

V1 accounts created through Add Account retain the address-book rollup model instead. Each nested contact is a customer record and owns its work, so the account's Leads, Lifetime Value, and Open Pipeline values combine the corresponding records and financial totals from its nested contacts. V1 Lifetime Value uses accepted-estimate revenue. The V2 service-site definitions above do not make those V1 account totals empty.

Account Profile Sections

On a V2 company portfolio profile, the available sections are:

The six core profile tabs appear in this order: Contacts, Estimates, Jobs, Leads, Invoices, and Activity. Payments and Details remain available as supporting profile sections.

  • Contacts: Visible child client or service-site records, with account role,

primary state, property, status, and permitted contact details. The company parent is not a contact row. Use the row actions to set the account's primary member or detach a site.

  • Estimates: Estimates attached to the company itself or any visible

service site, with the client and created date, newest first. Use the existing profile paging to load older rows.

  • Jobs: Jobs attached to the company itself or any visible service site.

Rows keep the job number, client/contact, service title, scheduled time, total, status, and updated time, and open the existing job detail action when permitted.

  • Leads: Leads attached to the company itself or any visible service site,

with the client, source, and created date. Use the existing scoped profile paging to load older rows.

  • Invoices: Draft, sent, due, paid, and void invoices owned by the

portfolio parent or permitted child service sites. The history shows the invoice number and created date, contact, amount, balance, and status, with the existing invoice detail action.

  • Payments: Settled payments and refunds attributed through the existing

company and permitted child-site work records.

  • Activity: A chronological, load-older history for estimates, jobs,

invoices, leads, permitted message summaries, and CRM activity across the company and visible child sites. Each row keeps only the details and View action the signed-in teammate can access.

  • Details: Portfolio identity, account type and status, contact details,

office access, created date, and notes.

The portfolio does not show the standalone/service-site Work section; Estimates, Jobs, Leads, and Activity replace it with rollups across the company and every visible site. Open a row to go straight to that lead, estimate, or job when the signed-in teammate has access.

On a retained V1 account, the legacy nested-contact behavior remains available: Contacts lists the account's nested customer records, while Estimates, Leads, and Invoices combine records owned by those records.

For a promoted standalone client, records attached directly to the company from before promotion stay accessible from the main Pipeline, Estimates, and Calendar workspaces, and now also appear everywhere else on the portfolio profile: the Estimates, Leads, Invoices, Activity, and Payments tabs, and the Open leads, Open pipeline, Lifetime value, and Open balance tiles. The Invoices tab includes retained parent invoices alongside invoices from visible child service sites.

Before starting a new estimate from a retained lead, reassign that lead to the child service site that will own the work. The portfolio parent cannot own the new estimate, and starting from an unrelated site profile does not preserve the retained lead's context.

Bulk Schedule (V2 Company Portfolios)

A company portfolio profile now has a Bulk Schedule entry beside Ungroup. Use it to book jobs across many child service sites in one pass instead of creating and sending a separate estimate for each site.

Opening the dialog loads every child site under the company paired with its own primary property (active sites outrank inactive ones, oldest first) and that site's most recent accepted-estimate total as the row's default price. V2 jobs have no line items to price from, so a row's price is always that site's latest accepted estimate rather than a rebuilt quote.

  1. Review the shared batch defaults: location, service type, date/time/

duration, crew, and notes.

  1. Every candidate site appears as its own row in a per-row edit grid (service

type, date, start time, duration, crew, total, note). Select Apply Defaults To All Rows to push the shared panel across every row, then override individual rows that need a different date, crew, or note. Deselect a row to leave that site out of the batch entirely.

  1. Run the batch. V2 creates one job per selected site through the same job

creation used for a single New job. One bad site is recorded and the rest keep going; a batch never fails all-or-nothing.

  1. The result screen uses V1's own labels verbatim: Batch Created and

{n} jobs were created successfully, with any per-site failure listed rather than dropped. A Create Draft Invoices (n) action follows up by running the existing bulk-invoice-draft action against the jobs the batch just created.

A batch is capped at 25 sites, the same default the sibling bulk-invoice action uses.

Named gaps against V1: V2 jobs have no per-row truck assignment or line-item pricing, so a row prices from the site's latest accepted estimate instead of an editable line-item quote. Job type and tax fields from V1's Batch Defaults panel are not modeled on a V2 job either.

Bulk Scheduling Account Portfolios (V1)

V1 workflow, saved-property model: The V1 workflow below books from saved properties on nested contacts under a V1-style account, not from the service-site company-portfolio model above. It remains the reference for that older data shape; it is not the picker the V2 Bulk Schedule button above uses.

In V1, account profiles include a Bulk Schedule action for multi-property work.

The V1 saved-property picker remains unfinished parity in this V2 workspace; the current V2 Bulk Schedule uses child service-site rows and does not replace that saved-property selection flow.

Use it when one account wins a contract that covers many saved locations, such as a franchise group or property-management portfolio.

The account entry point preloads:

  • the selected account
  • every nested contact under that account
  • every saved property attached to those contacts

From there, the V1 office can select many properties at once, apply shared scheduling and pricing defaults, then override individual rows when a few locations need different line items, notes, crews, or dates.

In v1, Bulk Schedule only pulls from saved properties on nested contacts. It does not load child service-site client records or their primary addresses. If a saved-property location is missing, add it to the contact's saved addresses first. For every selected property, that nested contact/customer record owns the created job, not the source account. Independently managed child sites must be scheduled separately under their own site client; do not duplicate them as saved properties unless they actually share the parent customer's contacts, history, and reporting.

Managing Contacts Within an Account

You can move, reassign, or remove contacts from an account at any time.

  • Move a contact to a different account: Edit the contact and change the Nested Under field.
  • Remove a contact from an account: Edit the contact and clear the Nested Under field. The contact becomes standalone.
  • Change a contact's role: Edit the contact and select a new role from the dropdown.

Tips

  • Create accounts before contacts. It is easier to nest contacts into an existing account than to reorganize them later.
  • Use the Decision Maker role carefully. Proposals and contracts should go to the decision maker, not the property contact.
  • Set the primary contact at the work-owning level. For a V1 account, set it on the account. For a V2 portfolio, set it on each child service site that sends estimates, invoices, or messages; do not set the company parent as the communication target.
  • Review account structures periodically. People change roles. Contacts leave companies. Keep your account hierarchy up to date so communications reach the right people.

Was this article helpful?

Still need help? Contact support