Customer setup guide
Adding customers
Manual or import
You can add customers one at a time or import them in bulk. The customer screen includes both options, so new organisations can either start clean or bring over an existing customer list.
Add one customer manually
Open Customers and use Add customer to create a new record. You can capture the core details straight away, including customer name, business name, email, telephone, mobile, address, postcode, county, country, and website. Either a customer name or business name is required, and BeagleCRM assigns the current user as account manager unless you choose someone else.
Import customers in bulk
Use Download template to get the current spreadsheet, complete it, then open Import customers and upload the file. Imports use Excel .xlsx files up to 5MB, with a maximum of 250 customers per file — split larger lists into batches.
Details, identifiers, and custom fields
The customer form has tabs for Details, Identifiers, and, when configured, Custom Fields. Use Identifiers for VAT number, Companies House number, and DUNS number. Custom field values save with the customer, so required custom fields must be completed before the record can be saved.
Validation and duplicates
BeagleCRM checks email format, phone numbers, website URLs, county, Companies House number, VAT number, and DUNS number. Business names must be unique within the organisation. Email addresses are deliberately not unique — one person's address legitimately belongs to several customer records — so a repeated email raises a non-blocking duplicate warning you can save through. See Duplicate detection.
Upload, preview, then import
After upload, BeagleCRM validates the rows before anything is created. The preview shows row numbers, key customer details, how many rows are valid, and which rows need attention. Only rows marked Ready are included when you confirm the import.
Download failed rows for review
If any rows fail validation in the preview, use Export errors to download a spreadsheet of the problem rows and error messages. The file is delivered as customers-import-errors.xlsx so you can correct the source data and re-upload it.
Import progress and partial success
Once you confirm, the import runs with a live progress indicator. Valid rows can be imported even if other rows fail, so a bad record does not block the whole batch.
Custom field columns
The customer template includes the standard columns plus one column for each active customer custom field, labelled CF: Field Label. Re-download the template after adding or archiving customer custom fields so the spreadsheet stays in sync with your organisation.
Import template columns
The customer import template includes these fifteen headings: Name, Business Name, Email, Telephone, Mobile, Address, Postcode, County, Country, Website, Marketing Email Consent, Marketing SMS Consent, Marketing Post Consent, Marketing Consent Basis, and Marketing Consent Source. Any active customer custom fields are appended as extra CF: columns.
Onboarding automation during import
If your organisation has the Customer onboarding automation enabled, the preview step lets you choose how imported customers should enter onboarding. The default is Skip onboarding for imported customers, which marks each valid imported customer as Onboarded and creates no checklist tasks.
Run onboarding for an import batch
Choose Run onboarding for imported customers only when the imported customers should go through your normal checklist. Those records stay in Draft and the default onboarding template creates checklist tasks for the batch.
Flagging VIP customers
Tag any customer as a VIP to make them easy to spot across the workspace. There are three ways to set it:
- In the customer grid, click the star to the left of the business name. Gold = VIP, grey = not VIP.
- On the customer detail page, click the large star next to the customer name in the hero.
- In the customer edit form, tick the VIP customer checkbox in the Details tab.
VIP is purely a visual flag — it does not change pricing, automations, or permissions. Use it to draw the team's attention to strategic accounts.
Search, filter, and export
The customer list searches name, business name, phone, postcode and county, plus a full-text match across the record. Filter by Active, All, onboarding status, and, for admins, Anonymised. Use Columns to show or hide table columns, sort the list, change page size, and export the current filtered view as CSV.
Active, anonymised, and deleted customers
Admins can mark customers inactive when a relationship pauses. Admins can also anonymise a customer for data-protection requests: you confirm by typing ERASE, and the record shows Erasure requested until the wipe completes. Anonymised records are hidden from normal lists but can be viewed through the admin-only Anonymised filter and restored by an admin if needed. Permanent deletion is admin-only and has its own confirmation screen.
Bulk actions
Select one or more customers from the list (checkbox column on the left, or the header checkbox for "select all on this page"). When at least one row is selected a sticky bar appears above the table with five actions:
- Assign owner — reassign the account owner across every selected customer. Agent or admin.
- Add tags and Remove tags — apply or strip tags across the whole selection in one go.
- Add to campaign — push every selected customer as a campaign member. Idempotent: re-running on the same set won't create duplicates.
- Archive — set every selected customer to inactive. Reversible from the customer's edit screen.
There is no bulk delete for customers. Deleting is done one record at a time from the customer page, is admin-only, and has its own confirmation screen. (Leads do have a bulk delete.)
Batches up to 25 rows run in the foreground and the page refreshes when done. Larger batches queue a background job; a flash banner reports progress and a final summary with the success/failure split. Selection clears whenever you change a filter, sort, or paginate.
Heads up: permission gates apply per row. If a row fails authorization mid-batch the foreground path rolls the whole batch back; the background path skips that row and keeps going.
Marketing consent
Each customer record carries per-channel marketing consent: email, SMS, and post. Editing the customer surfaces a
Marketing Consent panel with the three toggles, a Lawful basis
dropdown (Consent, Soft opt-in, Legitimate interest, or Contract), and a free-text
Consent source / provenance
field. The provenance label is required whenever any channel is opted-in — if you
leave it blank, the system auto-fills
staff: <your name> @ <ISO timestamp>
on save and writes that label into the per-event audit trail.
Every flip (opt-in or opt-out) writes an append-only row to the consent audit log with channel, action, lawful basis, IP, user-agent, actor, and the source label. Audit rows are never updated or deleted — the database role prevents it. This is what you'd show a regulator if asked to prove how consent was captured.
Double opt-in (optional). Turn on Settings → Profile → Marketing consent → Require confirmed (double) opt-in for marketing emails for a stricter, provably-consented list. With it on, anyone newly marked as email opted-in is sent a one-off confirmation email and is held back from campaigns until they click the link; people who haven't confirmed are skipped. Off by default — soft opt-in is lawful under UK PECR for existing-customer relationships.
CSV import: the customer import template has five additional columns — Marketing Email Consent, Marketing SMS Consent, Marketing Post Consent, Marketing Consent Basis, Marketing Consent Source. The Source column is required for any row with a true opt-in or the row is rejected at preview time (no silent fallback). Filename + row number are recorded into the audit evidence.
Tags
Tags are a shared per-organisation pool of labels that flow across customers, contacts, and leads — one chip, one colour, one rename point. Use them for whatever the fixed columns don't capture: industry vertical, office region, campaign cohort, "needs onboarding call". From the bulk action bar pick Add tags or Remove tags to apply to many rows in one go.
Admin: tag CRUD lives at Settings → Tags. Pick from a 10-colour palette, add an optional category to group related tags, archive to hide without losing history, delete (admin-only) cascades through every tagged record.
Duplicate detection
Same customer entered three different ways (web form, CSV import, "couldn't find it in search so I re-created it") is the most common cause of stale activity and triple-sent marketing emails. BeagleCRM flags possible duplicates as you type and surfaces an admin scan list of pairs already sitting in the database.
Four match strategies run on every check: exact email (case-insensitive), name similarity (fuzzy trigram match on business or person name), phone number (compared on the last 10 digits, so +44, 020, and 02079460958 all collide), and postcode + name (a strong UK B2B signal for "same office of the same company"). Each match shows up as a coloured badge with a confidence score.
Admin: Settings → Duplicates lists every customer or contact pair the engine spots in your org. Click Compare & merge to open the side-by-side view: pick the winner's value for each field where the two records differ, hit confirm, and the loser is deleted with every child record (leads, quotations, sales orders, invoices, notes, tasks, consent events, taggings, custom fields) re-parented to the survivor. Merges write a dup_merge audit row with the full pre-delete snapshot. Agents and admins can view the scan; admin-only can confirm a merge (because the loser record is deleted).