Customer database

One record per customer, so the AI recognises whoever is calling instead of asking for details you already hold.

Before you start

  • Nothing. Records are created automatically as SIMCOAI takes bookings, refunds and orders
  • A decision on any extra fields your business needs beyond name, email, phone and company
Why

What it changes on a call

The single most error-prone moment on any phone call is a customer spelling an email address down the line. If SIMCOAI already recognises the number they are ringing from, it does not have to ask.

  1. A customer callsSIMCOAI matches the number against your customer records.
  2. It uses what you already holdTheir name, email and anything you have added yourself.
  3. It reads back rather than askingThe customer confirms a detail instead of dictating one.
  4. The record stays currentAnything new they give is added; nothing already on file is overwritten by a blank.

Expected result

A returning customer is not asked to spell their email address again, and a booking or refund is attached to their history rather than standing alone.

Matching

Email, phone, or both

Every record needs at least one way to reach the customer. A record with neither cannot be matched to anybody and is refused.

DetailHow it is matched
Email addressExactly, ignoring capitals
Phone numberOn the significant digits, so +447700900123, 07700 900123 and 44 7700 900123 are one customer
BothEmail takes precedence: it is given deliberately and identifies one person, where a number can be a shared line
Matching on the number alone is why a caller is recognised before they have said anything. Recognising somebody is not the same as confirming them - see identity checks below.
Identity

How SIMCOAI confirms who is calling

Recognising a caller and having checked who they are are two different things, and only the second lets the AI discuss what is already on an account. A phone number a caller reads out proves nothing - it is the one detail printed on the outside of a parcel.

How they were identifiedWhat the AI will do
They rang from a number on their recordTreated as confirmed. The phone network supplies the number before the caller speaks, so there is nothing for them to do. The AI answers about their account normally.
They gave the name and the email address on the accountTreated as confirmed, once both match.
They read back a code emailed to the address on the accountTreated as confirmed. This is offered when the other routes do not apply.
They gave their own email address or an order numberNot a full identity check, but they have identified themselves for those records specifically, so the AI helps with the ones that match.
They only said a phone numberNot accepted as proof. The AI may greet them by name and take a new booking, order or refund, but will not read the account back until they confirm.
  1. The AI greets themBy name, if we believe we know who they are.
  2. It asks once, naturallyFor the name and the email address on the account - not as an interrogation, and not twice in a call.
  3. It checks bothAgainst the record, not against what they just said.
  4. The check is recordedAgainst that call only. It does not carry over to the next one.

Expected result

A regular ringing from their own mobile notices nothing. Anyone else is asked one short question before their account is discussed.

A confirmation applies to the call it happened on and no other. Carrying one across calls would mean anybody ringing from a copied number inherits the last caller’s confirmation, which is worse than having no check at all because it looks like one.
Attaching

Choosing a customer on a record

Orders, refunds, bookings and escalations are attached to a customer rather than carrying their own loose copy of the details.

  1. Start typingSearch your customers by name, email or phone on any create or edit form.
  2. Pick the personThe record is attached to them, and their details come with it.
  3. Or add someone newEnter their details on the form and they join your customer list when you save.
This is why a typo used to matter: two spellings of the same email made two customers, and their history then sat split between them.

Expected result

Every customer has their own page, showing their details, your custom fields, whether their identity has been confirmed, and everything they have ordered, booked, been refunded, escalated, called about or sent as proof.

Custom fields

Your own columns

Add the things your business needs that SIMCOAI does not ask for as standard - a flat number, a boiler model, a policy reference. They appear on every customer record and the AI can read them when it recognises a caller.

PlanCustom fields
Starter3
Growth10
Pro30
EnterpriseBy agreement
Removing a custom field hides it rather than deleting what it held. Add it back and the values return.
Finding it

Where the Customers page lives

Your customer list is under Operations › Customers in the dashboard, alongside the orders, refunds, bookings and escalations that point at it.

  1. Open OperationsFrom the left-hand navigation.
  2. Choose CustomersThe section tabs across the top of the page.
  3. Search, open or editSearch matches a name, company, email address or phone number, however the number is written.

Expected result

The list, an add form, your custom fields and the import and export tools are all on that one page.

Adding

By hand, or all at once

Three ways a customer gets onto your list, and you will use all three.

HowWhen it happens
AutomaticallyWhenever SIMCOAI captures a booking, refund, order or escalation carrying an email address or phone number. Nothing to do.
By handThe Add a customer form on the Customers page. Useful for somebody you have just spoken to.
From a fileA CSV import, for a list you already hold somewhere else. See below.
However a customer arrives, they need an email address or a phone number - at least one, or there is nothing for the AI to recognise them by, and the record is refused rather than saved as an orphan.
Import

Bringing a customer list in from a spreadsheet

Most businesses already hold their customers somewhere - another system, a spreadsheet, an export from a shop platform. Typing them in one at a time is why a customer list stays empty, and an empty list is exactly what makes the AI ask a regular to spell their email address.

  1. Download the templateOn the Customers page under Import and export. It carries the columns we read, plus any custom fields you have added, and one example row.
  2. Fill it in, or use your own exportYou do not have to use our template - see the column names below.
  3. Choose the file and importAnyone already on your list is matched and updated rather than added a second time.
  4. Read the reportIt names every row: added, updated, already on file, or skipped and why.
ColumnWhat we read
nameThe customer’s name. first_name and last_name are joined if there is no full name column.
emailTheir email address. A row with an address we cannot read is skipped and named rather than guessed at.
phoneAny format. +447700900123, 07700 900123 and 44 7700 900123 are the same number.
companyTheir business, if you record one.
notesAnything your team should know when they call.
statusactive, archived or blocked. Defaults to active.
tagsSeparated by semicolons or commas.
Your custom fieldsA column named after one of your own fields is read into it.
  • Common variations are understood, so an export from another system usually imports as it is: Email Address, E-mail, Mobile, Telephone, Surname, Business, Organisation and Comments all land in the right place.
  • A column we do not recognise is listed in the report rather than silently dropped, so you can add a custom field with that name and import again.
  • A blank cell never clears something already on the record. An import is usually a partial export, and treating a missing column as a deletion would quietly strip details you already hold.
  • Up to 2,000 rows per file. A longer list imports in parts, and the report says so rather than stopping without a word.

Expected result

Re-importing the same file changes nothing and says so. That makes a regular export from another system safe to run again and again.

If a number already belongs to somebody else on your list - a shared household line, a switchboard - the new person is added under their email address and the number stays with whoever had it. Merging two customers into one would put one person’s history in front of another, so we do not.
Careful. Importing writes to your live customer list. There is no undo on a bulk import, so export first if you want a copy of how things looked.
Export

Taking your list out

The Export my customers button downloads your list as a CSV, in the same shape the import reads. Work on it and put it back.

  • If a search is active, the export is what that search matched.
  • Custom fields come out as their own columns.
  • Your customers are yours. Exporting is always available, on every plan, whatever the state of your account.
Deleting

Removing a customer

Deleting a customer removes the personal record.

Careful. Deleting a customer does not delete their bookings, refunds or orders. That is deliberate: a deletion request should remove the personal record without destroying your own trading history. Ask us if you need the workflow records removed as well.
API

Working with customers over the API

The same records are available to your own systems.

GET/customers

List and search customers. Accepts search, status, limit and offset.

Requires scope read

GET/customers/search

Match one customer by email or phone - the same match the AI makes on a call.

Requires scope read

POST/customers

Create a customer. Requires an email address or a phone number.

Requires scope write

PATCH/customers/:id

Update a customer. Custom field values are merged, so a partial update never clears the ones it did not send.

Requires scope write

GET/customers/:id/history

Everything that customer has done - orders, refunds, bookings and escalations.

Requires scope read

GET/customers/fields

Your custom field definitions, with how many of your plan allowance are in use.

Requires scope read

GET/customers/template.csv

The import template, including your own custom fields as columns.

Requires scope read

GET/customers/export.csv

Your customer list as a CSV. Accepts the same search and status as the list.

Requires scope read

POST/customers/upload-csv

Import a CSV as multipart form data under file. Answers with a per-row report rather than a count, so a skipped row can be named.

Requires scope write

curl -sS "https://api.simcoai.co.uk/customers/search?phone=%2B447700900123" \
  -H "X-SIMCOAI-API-Key: $SIMCOAI_API_KEY"
Related

See also

  • Bookings - appointments attached to a customer
  • Refunds - refund requests attached to a customer
  • Data handling - what is stored and for how long