Skip to main content

Customers

A customer in TuffOps is whoever you bill — a homeowner, a property management company, a hotel, the public works department. Almost everything else in the product hangs off a customer: units are owned by them, work orders are scheduled for them, invoices are sent to them.

Three customer types

TuffOps recognizes three customer types: Residential, Commercial, and Government. The type drives a few small but useful behaviors:

TypeWhat it usually meansTypical visual cue
ResidentialIndividual homeowner, one address, one or two units.Green tag
CommercialA business — restaurant, office, retailer, hospitality property.Blue tag
GovernmentPublic sector — agencies, ministries, utilities.Yellow tag

The type is not a hard wall. A commercial customer can have a single unit, and a residential customer can have ten. The type mostly affects how customers are color-coded in the index and how reports group them.

Names: people, companies, or both

A customer record has three name fields: First Name, Last Name, and Company Name. At least one of First Name or Company Name is required. This means:

  • A residential customer can be just First Name + Last Name.
  • A commercial customer can be just a Company Name with no contact person.
  • A commercial customer with a primary contact uses all three (the display name becomes First Last (Company)).

The display name is computed automatically — you don't pick which one to show.

Contact info is multi-valued

The Email and Phone fields are stored as comma-separated lists. A customer can have multiple emails and multiple phone numbers in a single record. This matters for two flows:

  • Notifications (quotation sends, customer-facing reminders) go to every email on the record.
  • Customer request matching uses any of the listed phones or emails to identify a returning caller.

Phone numbers are normalized when stored. Local numbers default to the tenant's configured country and area code, so 5551234 becomes +1-869-555-1234 when you save. International numbers must include a + prefix.

Customer integration (sync)

If customer_integration_enabled is on, customer records are sourced from an external system (typically QuickBooks). When the integration is on:

  • The Add Customer and Edit Customer forms hide the fields that the external system owns. You manage the customer in QuickBooks and sync.
  • The remote_id column on the customer record tracks the external system's identifier. TuffOps uses this to upsert without duplicates.
  • Importing customers from a CSV is disabled — the external system is the source of truth.

If the integration is off, TuffOps owns the customer data and you manage everything in-app.

Discount rate

Each customer has an optional discount_rate (a percent). When set, this discount is applied automatically to quotations and work orders for that customer. It's a useful lever for negotiated rates with large accounts.