TotalApp Docs

CRM Accounts

The company-centric view of your unified contact directory — every organisation you deal with, with industry, website, and lifecycle stage, deals and activities linked through the same directory as your Customers.

Overview

CRM Accounts lists every company in TotalApp's contact directory — the same underlying store used by Customers and every other contact-facing screen, filtered to records flagged isCompany. There is no separate "accounts" table: creating a company here creates a normal contact record with roles.isCompany = true, and it shows up immediately under the Companies filter on the Customers screen too. Deleting it there removes it here, and vice versa — one record, two entry points.

Contact-Centric, Not a Separate Store

TotalApp deliberately does not keep a separate "CRM Account" table the way some CRMs do. A company and the people who work there are both rows in the same Contact directory — the company row has parentId = null, and each employee/contact at that company has parentId set to the company's own id. Listing "everyone at this company" is just filtering the directory by parentId, not a join across tables.

Fields

Each row shows the company-profile fields that live directly on its contact record:

  • Name — the company's name.
  • Industry — free-text sector/category (e.g. "Software", "Manufacturing").
  • Website — the company's domain.
  • Phone — primary phone number.
  • Stage — the same four-value lifecycle used across the whole directory: Suspect, Lead, Opportunity, Customer. Change it directly from the dropdown in the table row.

Industry, Website, and Address are optional fields present on every contact record, but only meaningful — and only editable through the UI — on rows with isCompany = true; individual contacts leave them empty.

Adding a Company

Click + Add Account to open the form: Name (required), Industry, Website, Phone, and Address. Saving creates a contact with roles.isCompany = true and roles.isLead = true, lifecycle stage Lead — the same starting state a company gets when it's created from the Add Contact modal's company picker elsewhere in CRM.

Companies Created Elsewhere Show Up Here Too

When you add a new company inline from the Account picker in the Customers screen's Add Contact modal, that company appears in this list immediately — it's the same directory, not an import or a sync step.

Deals and Activities Link to the Same Company Row

A Deal or an Activity can be linked either to a person (contactId) or to a company (accountId) — both fields point into the same contact directory, just at different rows. Dragging a deal linked to a company into a Closed Won stage promotes that company's lifecycle stage to Customer exactly the same way it would for a linked person.

Deleting a Company with Open Deals or Tasks

Deleting a company that has open deals or open tasks/activities shows a cascade-delete warning first. If you proceed, that company's open deals are soft-orphaned (kept, but unlinked) rather than removed, while its linked activities are hard-deleted along with the company record.

Search, Export & Selection

The search box matches against company name and industry. Export CSV downloads the currently filtered list (name, industry, website, phone, stage). Checking rows shows a selected-count bar above the table with bulk delete and a × button to clear the selection — the checkbox shape, table corner rounding, and table-vs-card row layout follow the same List Style setting (Settings → Appearance) used across My Workspace list screens.

AI Assistant

CRM Accounts has a built-in AI Assistant, opened from the tab on the right edge of the screen. It receives the currently filtered account list — name, industry, website, and lifecycle stage — as structured context, and answers in Markdown.

Data Quality

Ask which accounts are missing industry or website information.

Lifecycle Review

Ask which accounts look stuck in an early lifecycle stage (Suspect/Lead).

Industry Mix

Ask for a summary of the industry distribution across your accounts.

Duplicate Detection

Ask it to flag account names that look duplicated or inconsistently formatted.

Checking rows in the table adds an Analyse Selected and Summarize Selected shortcut to the assistant, scoped to just those accounts. Any reply can be saved as a report via Save as Report, and relevant Knowledge Base sources can be attached with Add Knowledge before asking. The assistant's AI backend follows the Writer Engine setting in Settings → Agentic — Ollama and other local/in-browser engines run entirely on your machine, never through TotalApp's servers.

Frequently Asked Questions

Is CRM Accounts a different dataset from Customers?
No. Both read and write the exact same unified contact directory. CRM Accounts shows the subset flagged isCompany with company-specific fields (industry, website); Customers shows the whole directory with role filters (Customers/Vendors/Companies/Leads). A company created or edited in one appears identically in the other.
Why isn't there a separate "Account" record type like in some other CRMs?
TotalApp intentionally avoids the classic CRM/ERP ambiguity where "Account" means different things in Sales, Finance, and Support. Instead, every company and every person is the same Contact record type, distinguished only by the isCompany role flag and connected by parentId — one table, no cross-table sync to keep correct.
How do I see which people work at a given company?
Every contact created under a company (for example, through the Account picker in the Add Contact modal) has its parentId set to that company's id. Filtering the directory by parentId returns that company's people — there's no separate lookup table to maintain.
What happens to a company's deals when I move a linked deal to Closed Won?
The same Closed-Won automation used for individual contacts applies: the company's roles.isCustomer becomes true, roles.isLead clears, and its lifecycle stage advances to Customer. This works whether the deal is linked via contactId (a person) or accountId (a company) — both are promoted through the identical code path.
Can I represent a "Partner" or "Churned" company here?
The four lifecycle stages (Suspect, Lead, Opportunity, Customer) are shared across the whole directory and don't include Partner or Churned as distinct stages. A partner-style relationship is represented by setting both isVendor and isCustomer on the same company; a churned company is marked status: Inactive rather than moved to a different lifecycle stage.