One phone call, five systems
A customer rings to ask about an order and mentions they are unhappy about last month's invoice. To answer, your account manager opens the CRM for contact details, Shopify or the order system for what they bought, Xero for the invoice, the helpdesk for previous complaints and maybe a spreadsheet for special pricing.
The customer waits while this happens. Half the time something is missed, like an open complaint that another colleague is already handling, and the customer notices.
Why the records never line up
Each system was bought to solve its own problem, and each one has its own idea of who a customer is. The CRM stores a company with several contacts. The accounts package stores a billing entity with a slightly different name. The shop stores a person by email address. The helpdesk stores whoever wrote in.
| System | How it identifies the customer |
|---|---|
| CRM | Company record, several contacts |
| Accounts | Billing name and account code |
| Online shop | Email address of the buyer |
| Helpdesk | Email of whoever raised the ticket |
| Spreadsheets | Whatever the author typed |
With no shared ID, nothing links them automatically. Integrations built with Zapier often copy data one way at the moment a record is created, and drift apart afterwards.
Then there is the human layer. Acme Ltd, ACME Limited and Acme (Leeds) may all be the same customer, or they may be a parent and two branches that are billed separately. A system cannot know which without rules, and those rules usually exist only in the heads of the people who deal with that customer.
What the gaps cost
Calls take longer and customers repeat themselves. Sales chase a renewal while the customer has an unresolved complaint. Marketing emails go to people who cancelled. Credit control phones someone who is mid-dispute with support. And nobody can answer basic questions such as which customers are most profitable or which ones have gone quiet, because the data needed is spread across tools that do not talk.
How we build a single customer view
- We list every system that holds customer data and pull it through APIs into one database.
- We build matching rules to link records: exact matches on account codes and email domains first, then fuzzy matching on company names and addresses, with confidence scores.
- Uncertain matches go to a short review queue where a person confirms or rejects them, and the decision is remembered.
- Each customer gets one internal ID, stored alongside the IDs from every source system.
- We present the combined record: a timeline of orders, invoices, tickets and contacts, either in a simple web screen or pushed back into HubSpot, Salesforce or your helpdesk as a panel or custom fields.
- The sync runs on a schedule so new records are matched as they appear.
We do not ask you to rip out your existing systems. Each keeps doing its job. The customer view sits on top and joins them.
What your team sees afterwards
When a customer rings, one screen shows who they are, what they bought, what they owe and what they have complained about. Whoever answers can see that someone else is handling a complaint before they make promises.
Management can finally ask questions that cross systems, such as revenue per customer against support tickets per customer, because the link exists.
The matching also cleans things up as a side effect. Duplicate records in the CRM surface during review, and your team can merge them at the source so the original systems gradually get tidier too.
Signs you need a joined-up customer record
- Answering a routine customer call means opening three or more systems
- The same company appears with different names in different tools
- Customers have been chased for payment during an open complaint
- Nobody can easily list your most valuable customers across all products