Browse topics

Customers and vehicles

Building a customer record that carries its own address, language, payment terms and contact preferences — and how vehicles hang off it.

Updated July 25, 2026

Every order points at one customer and one vehicle. Getting those two records right once saves you re-typing them on every visit, and several things you set here quietly change how the rest of the app behaves for that customer.

The customer record

Only the first and last name are required. Everything else is there when you need it and out of the way when you don't.

FieldWhat it does beyond storing text
CompanyPrints on estimates, repair orders and invoices above the name.
AddressPrints on documents. Country-aware — see below.
Preferred languageThe language their emails are written in.
Payment termThe default due date on this customer's invoices.
TagsYour own labels, for filtering the customer list.
Contact preferencesWhich reminder channels this customer will accept.

The address is not US-shaped

Pick the country first. The region field relabels itself to whatever that country calls it — state, province, county, judeţ — and the postcode field follows the same rule. Nothing is capped at two letters, so a Romanian or Spanish address records exactly as written rather than being squeezed into a US template.

Preferred language is per customer

A shop has a primary language; a customer can override it. Set it and every email GarageFlow sends that customer — estimate, invoice, reminder, "vehicle is ready" — is rendered in that language, independently of what language your staff use in the app.

Leave it empty and the customer inherits the shop's primary language, which is what you want for most people.

Payment terms cascade

An invoice takes its term from the customer if they have one, and from the shop's default if they don't. So a fleet account on Net 30 is set once, on the customer, and every invoice you raise for them is dated correctly without anyone remembering.

Note

Set the terms themselves under Settings → Payment terms. The customer form only picks from that list.

Contact preferences, and what actually gates a send

This is the part that surprises people, so it is worth stating plainly.

Warning

Only the opt-in switches stop an email or a message. Preferred contact method never does. It records how the customer says they like to be reached; it is a note for your team, not a rule the system enforces.

  • Email opt-in — on by default. Turning it off stops reminders: appointment reminders and invoice payment reminders.
  • WhatsApp opt-in — off by default, because nobody has consented to WhatsApp by handing you an email address. Reminders will not go out over WhatsApp until it is on.

Note

Documents you send by hand are not reminders and are not gated. If you press Send estimate or Send invoice, it goes — the opt-outs govern the automated follow-ups, not the thing you deliberately clicked. If a customer wants no email at all, remove the address.

Tags

Tags are free-form labels you define once and reuse: Fleet, Trade, Chases payment, Do not tow. They are scoped to your shop, they are searchable from the customer list, and they are the cheapest way to segment a book of customers without inventing extra fields.

Vehicles

A vehicle belongs to exactly one customer at a time. There is no shared-ownership model, deliberately — the vehicle's history has to belong to somebody, and "which of these three people owns this Golf" is a question with a real answer.

When a car is sold, reassign it rather than re-creating it: Change owner in the vehicle's Owner panel moves it, and the whole service history moves with it. A vehicle with no owner yet shows Assign owner in the same place — until it has one you cannot raise an estimate against it.

Identifying the vehicle

Make, model, year, series and engine come from a built-in catalog, so picking down the chain gives you consistent spellings across the whole shop. Everything else — VIN, plate, colour, drivetrain, body style, engine code, power, gearbox, fuel — is a plain field you fill in when you know it.

Note

There is no VIN decoder. The VIN is stored and printed, but the make/model fields are the ones the catalog fills.

Mileage is a log, not a number

Each reading is a dated entry with its own unit, so a shop working in kilometres can still record the one customer who talks in miles without corrupting the series. Readings taken at check-in and check-out are captured on the order itself, from the quick-edit on the vehicle band, and land in the same log.

The two detail pages

Both open from a name or a plate anywhere in the app.

  • Customer — Service history, Estimates, Appointments and Files, under four figures: lifetime value, average order, outstanding, and average days between visits, each with six months of history beside it.
  • Vehicle — Service history, Estimates, Mileage, Appointments and Vehicle info, under total spent, average order, last invoiced and amount due.

The Estimates tab is genuinely separate: it holds orders still sitting at estimate, and Service history holds everything that moved past it. A quote that never went anywhere does not clutter the record of work you actually did.

Troubleshooting

"The customer got a reminder after I switched them off." Check which switch. Email opt-in governs email reminders; WhatsApp opt-in governs WhatsApp. Preferred contact method governs nothing.

"Their invoice is due on the wrong date." The customer has no payment term of their own, so it fell back to the shop default. Set it on the customer.

"The emails are in the wrong language." Preferred language on the customer wins over the shop's primary language. An empty field inherits.

"The vehicle is on the wrong customer." Use Change owner in the vehicle's Owner panel. Creating a second vehicle record splits the history in two, and there is no merge.

"I can't find the region field for this country." It is there — it is named after whatever that country calls it. Set the country first.

Was this helpful?