KW Knowledge base

CRM

The CRM holds **contacts** and **deals**. It's where you track the people you do business with and your sales pipeline. Contacts can be linked to a **customer** (company) — see [Customers](07-customers-people.md) for the company-side record

Mitch Wigham
Updated 24 June 2026 · 45 views

04 · CRM

The CRM holds contacts and deals. It's where you track the people you do business with and your sales pipeline. Contacts can be linked to a customer (company) — see Customers for the company-side record.

Where to find it

Sidebar → CRM or /crm. Requires the crm feature. CRM pages are admin-only — they're wrapped in the platform's admin guard.

Entities

There is no separate "Company" record inside the CRM — a contact's company is either a free-text string or a link to a Customer (PortalCustomer). Creating a contact and typing a new company name auto-creates the matching customer record.

Contact

A person, usually associated with a customer/company (but standalone contacts are allowed). Fields: first name, last name, email, phone, job title, company (free-text or linked customer), owner, status, notes, and a type discriminator.

Contact type

Each contact has a type that drives filtering on the contacts list:

Type When to pick it
🏢 Customer (default) Someone who buys from you
🔧 Contractor Subcontractor / freelancer doing work for you
📦 Vendor Supplier / hardware vendor
🤝 Partner Channel partner / referral source
Other Anything else

The contacts list (/crm) has a chip strip at the top — click any chip to filter. The chips also drive the colour pill rendered on each row. Contractor and Vendor contacts are typically the same people who hold a VENDOR-role login for the contractor / vendor portal, but the two are not auto-linked — link by hand on the contact's record when both exist.

Deal

A sales opportunity. Fields: title, value, currency, stage, close date, owner, contact, notes. A deal can optionally be tied to a contact but there's no separate company link.

Layout

The contact list is the CRM landing page. The type chips run along the top, with a status dropdown and a search box below them.

+--------------------------------------------------------+
|  CRM.                  [Import CSV][Settings][Pipeline] |
|                                       [+ New contact]   |
+--------------------------------------------------------+
|  [All][🏢 Customers][🔧 Contractors][📦 Vendors]...     |
|  [Status ▾]  [Search name, email, company…]             |
+--------------------------------------------------------+
|  ☐ Name        Type      Company    Email  Status Deals |
|  ☐ Jane Smith  Customer  Acme Ltd   …      LEAD     2   |
|  ☐ ...                                                  |
+--------------------------------------------------------+

📷 Screenshot placeholder: screenshots/crm-list.png

Select rows with the checkboxes for bulk re-assign (to a new owner) or bulk delete.

Creating a contact

  1. Click + New contact (or + Add contact from a customer's detail page).
  2. Enter first name and last name (both required), email, phone, job title.
  3. Pick an existing Customer (company) from the dropdown, or type a new company name in the Company (freetext) field — typing a new name auto-creates a matching customer.
  4. Set the type and status.
  5. Save.

Importing contacts

Bulk import is at CRM → Import CSV (/crm/import), or the equivalent admin route /admin/crm/import.

Importing contacts (bulk)

  1. Open /crm/import.
  2. Upload a CSV. Required columns: firstname, lastname. Optional: email, phone, company, jobtitle, status. Header names are case-insensitive and several aliases are accepted (e.g. first_name, telephone, organisation, title).
  3. The preview shows the first 10 rows.
  4. Click Import contacts. Existing contacts are matched by email and updated; new rows are created. Rows missing first or last name are skipped. The result summary reports created / updated / skipped counts.

The company column is stored as free-text on the imported contact; the bulk importer does not link or auto-create customer records.

Deals (pipeline)

The deal board (/crm/deals) shows one column per stage. Default stages are LEAD → QUALIFIED → PROPOSAL → NEGOTIATION → WON / LOST. Each column header shows the deal count and total value; each card shows title, the linked contact (if any) and value. Click a card to open the deal. Cards are not drag-and-drop — move a deal between stages from its detail page or with the bulk stage tool.

When a deal moves to WON, the platform emails the deal owner.

📷 Screenshot placeholder: screenshots/crm-deals.png

Configure stages under CRM → Settings.

Linkage

The contact detail page has tabs:

  • Timeline — chronological feed of notes and logged activities
  • Deals — deals linked to this contact
  • Projects — projects assigned to this contact
  • Tickets — helpdesk tickets assigned to this contact

A side panel on the same page has Add note and Log activity forms. The 360°-style aggregation across devices, assets and invoices lives on the Customer detail page, not the contact page — see Customers.

Attachments, notes and activities

The contact detail page carries an attachments card for stashing PDFs and files. Notes are free-text entries; activities have a type (Call / Email / Meeting / Task / Note), a subject and an optional due date, and can be marked complete. Both appear in the Timeline tab.

Common workflows

Onboard a new customer

  1. Create the customer (company) from Customers → + New customer.
  2. Add the primary contact — or use + Add contact on the customer page, which creates a CRM contact linked back to that customer.
  3. Open Helpdesk and create a "Welcome" ticket if you have a kickoff macro.
  4. Optionally create a project of type "Onboarding".

Find every interaction with a customer

  • Open the customer's detail page — it aggregates contacts, projects, RMM devices, assets and tickets in one place.

See also

Still need help?

Log a support ticket and the team will pick it up from this page.