Customers
The shared customer directory — company name, addresses, payment terms, and price list — that every customer-facing module (Sales, Inventory, Appointments, Rentals) draws from.
A customer is the anchor record that ties together everything you do for a particular person or organization: invoices, sales orders, quotes, loan agreements, rental agreements, appointments, and unit checkouts all point back to one customer record. Because the customer directory is shared infrastructure, any account with Sales, Inventory, Appointments, or Rentals active can create and manage customers — you don't need the full Sales module just to loan equipment or schedule an appointment.
The customer record holds who — name, contact details, addresses, billing defaults. The activity, tasks, notes, and opportunities that belong to a customer are covered on the Notes, Tasks & Activities and Opportunities & Pipeline pages.
Creating a customer #
New customers are created from Sales → Customers → New Customer (or from the customer picker in any other module's form). The required fields are minimal by design — you can always fill in the rest later.
- First Name — required. For an organisation, put the business name here.
- Last Name — optional. The first and last name together form the display name used everywhere the customer appears (lists, invoices, pickers).
- Email — primary contact email, validated on save.
- Phone — primary phone number.
- Website — URL (validated).
- Notes — free-text internal notes, not customer-visible.
- Payment Terms — default terms applied to new invoices: Due on Receipt, Net 15, Net 30, Net 60, or Net 90. If left blank, invoices don't inherit a due date automatically.
- Price List — an optional price list that overrides the default Product price when this customer is invoiced or quoted. Only active price lists appear in the picker.
- Billing Address — street, city, state, postal code, country. Pre-fills on new invoices and quotes for this customer.
- Shipping Address — separate shipping destination; defaults to the billing address on orders when left blank.
- Segments — assign the customer to one or more manual customer segments (dynamic segments are managed by their own rules).
- Custom fields — any custom fields defined on the Customer entity appear at the bottom of the form. See Custom Fields.
The customer list #
The customer list (Sales → Customers) shows each customer's first name, last name, email, phone, and city/state. Use the search bar to filter by first name, last name, or email — the same filter the API exposes. The Trashed filter reveals soft-deleted customers so you can restore them if needed.
To jump straight to one customer from anywhere in the app, use the global search box at the top of the page instead: it matches name, email, and phone, and also returns that customer's orders, invoices, returns, rentals, and loans. See Finding Records.
Customer page tabs #
Open a customer to see its full profile and the related data attached to it:
- Details — all fields from the form, displayed read-only with an Edit button.
- Contacts — named individuals at the company (see Contacts below).
- Opportunities — open and closed deals from the pipeline.
- Checked Out Units — inventory units currently or previously checked out to this customer, across all unit types.
- Change History — a full audit trail of every edit, who made it, and when.
A dedicated Statement page (the Statement button in the page header from the customer view) summarises total invoiced, total paid, outstanding balance, overdue invoice count, and an invoice list alongside any open sales orders.
Contacts #
Each customer can have any number of contacts — the actual people you deal
with. Contacts are managed on the Contacts tab of the customer page (or via
the API at /api/v1/customer-contacts).
A contact record holds:
- Name — required.
- Title — job title or role.
- Email and Phone.
- Notes — free-text; not customer-visible.
Contacts can be the Checked Out To party for an inventory unit checkout, so you can track exactly which person at a company has a piece of equipment. The Checkouts action on each contact row in the table opens a modal listing every unit that person has or had checked out.
Deleting a contact soft-deletes the record; its checkout history is retained and stays associated with the customer for reporting.
How customers connect to other modules #
The customer record is intentionally lightweight — it stores contact information and billing defaults, then everything else links to it:
- Invoices & Payments — each invoice belongs to a customer and inherits its billing address and payment terms.
- Sales Orders — orders are created for a customer and can be filtered to open orders on the Statement page.
- Quotes — each quote is tied to a customer and optionally a specific contact.
- Opportunities — each opportunity belongs to a customer and a pipeline stage.
- Loan Agreements — free equipment loans record the customer they were issued to.
- Rental Agreements — paid rentals link to a customer for billing.
- Appointments — scheduled appointments are booked against a customer record.
Doing it from the API #
# List customers (paginated at 50, supports ?search= filter)
curl "https://your-domain.com/api/v1/customers" \
-H "Authorization: Bearer $TOKEN"
# Create a customer
curl -X POST "https://your-domain.com/api/v1/customers" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Acme Corp", "email": "billing@acme.example", "payment_terms": "net_30"}'
# List contacts for a specific customer
curl "https://your-domain.com/api/v1/customer-contacts?customer_id={customer_id}" \
-H "Authorization: Bearer $TOKEN"
# Add a contact
curl -X POST "https://your-domain.com/api/v1/customer-contacts" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"customer_id": "{customer_id}", "name": "Jane Smith", "title": "Accounts Payable", "email": "jane@acme.example"}'
The
customer_idfield in contact requests takes the customer'sid. Thepayment_termsfield acceptsdue_on_receipt,net_15,net_30,net_60, ornet_90.DELETEon a customer or contact is a soft delete — all associated transactions are retained.