Skip to content
Knowledge ERP Docs
API Reference ↗
CRM

Customer Contacts

Named people associated with a customer — capturing their title, email, phone, and notes — available as checkout recipients and activity targets across every customer-facing module.

A customer contact is a named individual who belongs to a customer record — the actual person you call, email, or hand equipment to, as opposed to the company or account itself. Contacts let you keep multiple people on file for the same customer — a purchasing manager, a site supervisor, a billing clerk — without duplicating the customer record. They show up as checkout recipients in asset checkout, loan agreements, and rental agreements, and they can be the target of activities, tasks, and notes.

A contact always belongs to exactly one customer and inherits the owner scope of that customer. Deleting a contact is a soft delete — its checkout history is retained.

Managing contacts in the UI #

Contacts are managed from the Contacts tab on any customer's view page (CRM → Customers → [customer name]). There is no standalone list for contacts — they live on their parent customer.

From the Contacts tab you can:

  • Add a contact — click New to open the inline form.
  • Edit a contact — click the edit icon on any row.
  • Delete a contact — click the delete icon; the record is soft-deleted.
  • View checkout history — click the Checkouts button on any contact row to open a modal showing every unit checked out to that contact, with the Product, linked sales order, checked-out date, and checked-in date (or an "Active" badge if still out).

Contact fields #

Each contact record holds:

  • Name — required. The person's full name, shown in all checkout and activity pickers.
  • Title — optional job title (e.g. Site Supervisor, Purchasing Manager).
  • Email — optional email address, validated as a proper email format.
  • Phone — optional phone number.
  • Notes — a free-text field for anything else worth knowing about this contact.

None of the fields beyond Name are required, so you can add a contact with just a name and fill in the rest later.

Contacts as checkout recipients #

When you check out a returnable unit via Inventory → Check Out, the Checked Out To picker lets you choose a Staff User, a Customer, or a Customer Contact. Picking a contact ties the checkout to that specific person rather than the customer organization as a whole. The contact's checkout history — every unit ever checked out to them, open or returned — is visible from the Checkouts button on the Contacts tab and in the full checkout log on the unit itself.

In a rental agreement, a contact can be selected as the point of contact for the agreement. In a loan agreement, a contact can be the borrower of the entire loan.

How contacts relate to other modules #

  • Opportunities — an opportunity can be linked to a contact as well as a customer, letting you track which person you are dealing with on a given deal.
  • Activities, tasks, and notescustomer activities, tasks, and notes are logged against the customer record and can be linked directly to a specific contact, so notes and tasks appear scoped to that person as well as the customer.
  • Quotes and ordersquotes and sales orders draw their billing and shipping information from the parent customer, but a contact can be referenced as the point of contact on the document.

The customer record #

Everything about the parent account — billing and shipping addresses, payment terms, price list, and custom fields — lives on the customer record itself, not on the contact. Contacts are purely people; the business relationship details stay on the customer.

Doing it from the API #

# List all contacts for a specific customer
curl "https://your-domain.com/api/v1/customer-contacts?customer_id=<customer-id>" \
  -H "Authorization: Bearer $TOKEN"

# Create 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": "Purchasing Manager",
    "email": "jane@example.com",
    "phone": "555-0100"
  }'

The list endpoint accepts a customer_id query parameter to scope results to a single customer's contacts; omitting it returns all contacts across your account, paginated at 50 per page.