Blog
Three systems, three answers to one question: how many clients do we have
The same client record lives in four systems, and the integration is a person re-typing. What that costs, and what sync plus a clean migration changes.
TL;DR — When the same client record lives in four systems, the integration between them is a person re-typing things. What that costs — three systems, three answers — and what a real sync plus a dry-run migration changes.
Wednesday, 09:15
The founder of a 24-person B2B services firm asks the management meeting: how many active clients do we have?
Three answers come back. The CRM says 312. The project tool says 347. Billing says 275.
Nobody is lying. Each system is accurate about the last thing typed into it: the CRM counts 22 clients who left last year, the project tool counts one-off jobs, billing is missing 15 clients onboarded in a rush.
The meeting spends 40 minutes and settles none of it. The number that reaches the board pack ships with a caveat.
This isn’t a data problem: the same client record lives in four systems, and the integration between them is people re-typing.
Where the drift comes from
Count it for this firm, at about 290 active clients:
- Re-entry. A new client means the same 20 fields typed into the CRM, billing, the project tool and the client spreadsheet — 40 minutes, four chances per field for “Acme Ltd” to become “Acme Limited”.
- Partial updates. The client changes its billing address in March. Accounts updates billing; the CRM doesn’t. The Q3 renewal letter goes to the old address. Everyone updated exactly what they could see; nobody was wrong.
- Reconciliation. Quarterly, someone cross-checks client lists between systems: 4–6 hours, finding 25–30 mismatches every time — billing records with no CRM entry, duplicates under slightly different names, closed clients still active elsewhere.
That’s roughly 12 hours a month of re-typing and checking — plus the errors that never make a timesheet: the renewal at the old address, the proposal to a contact who left a year ago.
That is the shape of a job integration should own.
What a sync changes
First comes the step that decides whether it works: a field map, and one system of record per field. The CRM owns contacts. Billing owns invoice terms and payment status. The project tool owns engagement scope. What wins when two systems disagree is decided in writing, in advance.
Then:
- Entered once, everywhere. The address changes in the CRM; billing and the project tool update within a minute.
- Two-way where it makes sense, one-way where it doesn’t. Invoice numbers flow one way, from billing, always.
- Conflicts flag a human, they don’t overwrite. The losing record is listed for review, not silently clobbered.
- n8n or Make where the connection is standard, code where it isn’t. Either way: your workspace, your repo, documented — no dependency on us.
- A broken sync is loud. A failed write alerts the hour it happens. It reaches you before it reaches a client.
The other half: migrations
The one-off version of the same problem: moving accounts, records or a whole tool — the CRM you’ve outgrown, two systems merging after an acquisition, the vendor that just repriced 40%.
The standard way it goes: a Friday CSV export, a weekend of imports, then three weeks of noticing what’s missing. The notes didn’t come across, the history is scrambled, every second client exists twice — and the team stops trusting the data for a quarter.
The way it should go:
- A dry pass on a copy, before anything moves for real.
- A field-by-field mapping with whoever owns each system, including the judgment calls.
- A reconciliation report you can check: row counts both sides, 50 random records verified field by field, the exceptions that still need a human.
- A rollback plan written before the run, not improvised after it goes wrong.
Take a typical one: 8,400 records out of an old CRM. The dry pass catches 214 duplicates and 1,100 records still owned by ex-employees — resolved before the real run. The move itself takes three hours on a Saturday, old system frozen read-only; the rollback is “point everything back”, because nothing was deleted.
The numbers, before and after
- New client setup: ~40 minutes across four systems → ~10, entered once.
- A client detail change: 12 minutes and three chances to forget → typed once, everywhere in a minute.
- “How many active clients”: three answers and a caveat → one number.
- Quarterly reconciliation: 4–6 hours and ~30 surprises → continuous; a mismatch surfaces the day it happens.
- Migration: a weekend of imports plus three weeks of cleanup → dry pass, reconciliation, three-hour run, rollback in the pocket.
The arithmetic
About 12 hours a month of re-typing and reconciling becomes one hour of exception review — roughly $6,000 a year at a conservative blended rate. Real, but not the point.
The point is the errors that never make the timesheet: the renewal letter to the old address, the proposal to the contact who left, the report with a caveat instead of a decision. You hear about those from the client — or not at all.
How it starts
For a sync, we map the two systems and the rules for what wins. A straightforward sync between two common tools ships in one to two weeks. For a migration, the dry pass comes first; you see the reconciliation before anything moves.
If a person is what moves a record between two systems, that’s the first sync worth building. We connect systems so data is entered once and shows up everywhere — and move records with a dry run, a reconciliation and a rollback plan instead of a weekend of copy-paste: Integrations & migrations.