System integration
How to integrate disconnected business systems
Integration is not a project to put everything in one application. It is deciding which system owns which data, how change moves between them, and how anyone finds out when a connection stops working.
Almost every business above a certain size runs on systems that were each chosen sensibly and never chosen together. The website came first, then the CRM, then a payment provider, then whatever the operations team could get approved. Integration is the work of making that collection behave like one system without pretending it is one application.
In this series: Automation & business systems
Automation & business systems
- From fragmented stack to integrated platform
- What business processes should you automate first?
- CRM vs workflow automation: what's the difference?
- Human approval gates in automation: where people still need to decide
- How to integrate disconnected business systemsYou are reading
- Error handling in automation: what happens when a workflow fails?
Part of Automation & business systems.
In this article
- Start by mapping the systems you already haveDiagram
- Identify the source of truth for each data type
- Map how data moves today
- APIs, webhooks and scheduled syncs
- One-way versus two-way synchronisation
- Avoid creating duplicate systems of record
- Integration versus replacementDiagram
- When a middleware or automation layer makes sense
- Data normalisation and identifiersDiagram
- Security and permissions
- Visibility: know when the integration fails
- A practical integration architecture
Start by mapping the systems you already have
Before any connector is configured, write down every system that holds business data, including the ones nobody officially approved. The shared spreadsheet counts. The inbox that receives enquiries counts.
For each one, note what it holds, who uses it, what enters it and what leaves it. The map is usually more revealing than expected: most stacks contain at least one system that everyone depends on and nobody owns.
Six tools, no shared record
Identify the source of truth for each data type
This is the decision that determines whether the rest of the work is straightforward or endless. For each data type, exactly one system is permitted to change it.
| Data type | Typical source of truth | Why |
|---|---|---|
| Customer | CRM | Holds the relationship model, history and ownership |
| Order | Commerce or platform | Created there and governs fulfilment state |
| Payment | Payment provider | Legally and technically authoritative on money |
| Content | CMS or platform | Publishing state and versions live there |
| Subscription | Billing system | Governs entitlement, renewal and cancellation |
| Inventory | Operations or ERP | Physical reality is tracked there |
| Support request | Helpdesk | Holds the conversation and resolution state |
Disagreements are inevitable in practice; the point of naming an owner is that disagreements have a resolution rule instead of an argument.
Map how data moves today
Trace one real record end to end. A customer submits an enquiry: where does it land, who touches it, what gets typed again, how does finance eventually learn about it, and when does reporting see it?
Every arrow in that trace that is currently a person is a candidate connection. Every point where a value is retyped is a place where the two systems will eventually disagree.
APIs, webhooks and scheduled syncs
Three mechanisms cover most integration work. They are not competing options — a mature integration usually uses all three.
| Mechanism | How it works | Best for | Trade-off |
|---|---|---|---|
| API call | Your system asks another system for data, or asks it to do something | Fetching detail on demand; creating and updating records | Nothing happens unless something initiates the call |
| Webhook | The other system sends you a message the moment an event occurs | Reacting immediately to payments, submissions and status changes | Messages can arrive twice, out of order, or be missed during an outage |
| Scheduled sync | A job runs on a timer and reconciles records between systems | Bulk data, backfills, and catching anything the live path dropped | Introduces delay; a change is invisible until the next run |
A rate limit is worth defining here too: most systems cap how many requests you may make in a period. Integrations that ignore this work in testing and fail on the first busy day.
One-way versus two-way synchronisation
One-way flow is the default and should be justified before it is abandoned. Data originates in one system, travels to another, and the receiving system never writes back.
Two-way synchronisation is required only when both systems genuinely originate changes to the same field. It brings three hard problems with it: deciding which version wins when both changed, preventing update loops where each system re-triggers the other, and handling messages that arrive out of order.
Avoid creating duplicate systems of record
The most common integration failure is subtle: a field is copied into a second system, someone starts editing it there, and within months two versions exist with no rule about which is correct.
The defence is discipline about direction. A copied field should be visibly read-only in the receiving system, or the receiving system should be the owner and the original should defer.
Integration versus replacement
Replacement is warranted in a narrow set of cases: the system exposes no usable interface, it duplicates the role of another system, its licensing makes integration impractical, or it is being retired anyway.
Otherwise, integrate. Replacement projects consume the budget and attention that would have connected four systems, and they carry migration risk that integration does not.
Systems → integration layer → shared state
When a middleware or automation layer makes sense
Direct point-to-point connections are fine at small numbers. The cost grows quickly: connecting five systems directly can require up to ten separate connections, each with its own credentials, mapping and failure behaviour.
A layer in the middle changes that shape. Each system connects once, the mapping lives in one place, and monitoring covers everything rather than being reimplemented per connection.
It is not free. The layer becomes infrastructure that must be maintained, versioned and understood. The threshold is roughly the point where a third system needs the same data the first two already exchange.
Data normalisation and identifiers
Two systems rarely describe the world identically. One stores a full name, the other first and last. One uses country codes, the other free text. One has five pipeline stages, the other has seven.
Normalisation is deciding the canonical form and translating at the boundary. It is unglamorous and it is where most integration bugs originate — a date parsed in the wrong format or a status mapped to the wrong equivalent will corrupt data quietly for weeks.
Identifiers deserve particular care. Matching records by email address fails the moment someone changes theirs. Carry a stable identifier from the source of truth, store it in the receiving system, and match on it.
Source of truth → event → confirmation
Security and permissions
Every integration is an account with access to business data, and it should be treated as one. Give each connection its own credentials rather than a shared administrator login, grant only the permissions the flow actually needs, and store secrets in a managed store rather than in a configuration field.
Credentials expire, and expiry is a leading cause of integrations that stop working with no visible error. Track expiry dates deliberately; do not discover them.
Visibility: know when the integration fails
An integration without monitoring is a liability that presents as an asset. It works, the team stops thinking about it, and the day it stops the business keeps operating on the assumption that data is still moving.
- Log every run with its identifier, outcome and duration.
- Alert on failure rate and on silence — a connection that has processed nothing all day may be broken.
- Hold failed records in a queue where they can be inspected and reprocessed.
- Route alerts to a named owner, not a shared channel nobody reads.
- Report reconciliation counts: records in one system versus the other.
A practical integration architecture
- Map the systems, the data types and the people currently bridging them.
- Assign one source of truth per data type and write it down.
- Choose the direction of each flow, defaulting to one-way.
- Pick the mechanism per flow — webhook for immediacy, API for detail, scheduled sync as a safety net.
- Establish shared identifiers and the canonical form of each field.
- Build the failure path before the happy path: retries, queue, alerts, owner.
- Instrument it, then reconcile counts weekly until the numbers agree consistently.
That sixth step is the one most projects postpone and most regret postponing. It is covered in detail in error handling in automation, and the question of which coordination logic belongs in the CRM rather than the integration layer is answered in CRM vs workflow automation.
Mapping ownership, flow and failure behaviour before connecting anything is how we approach automation and business systems work — and it is the same architectural thinking behind the platforms we build.
Frequently asked questions
- What is business system integration?
Connecting the applications a business already runs so that information created in one is available and consistent in the others, without a person copying it across. It is an architectural decision about ownership and flow, not a software purchase.
- Do all systems need to be replaced?
No. Most stacks contain tools that do their specific job well. Replacement is warranted when a system cannot expose its data at all, or when two systems duplicate the same role — the broader argument is in from fragmented stack to integrated platform.
- What is a system of record?
The one system authorised to hold the authoritative version of a data type. Others may display or cache it, but when versions disagree, the system of record wins by definition.
- What is the difference between an API and a webhook?
An API is an interface you call when you want something — you ask, it answers. A webhook is a message a system sends you when something happens — it tells you, unprompted. Polling an API on a timer and receiving a webhook can produce the same result; the webhook is usually faster and lighter.
- Should data sync both ways?
Only when both systems genuinely originate changes to the same field. Two-way sync introduces conflict resolution, loop prevention and ordering problems that one-way flows avoid entirely.
- How do you avoid duplicate data?
Carry a shared identifier between systems and match on it rather than on names or email addresses. Where a system cannot store a foreign identifier, keep a mapping table in the integration layer.
- How do you know when an integration breaks?
Only if you built for it: logged runs, failure alerts routed to a named owner, and a queue holding the records that did not make it. Without those, the first signal is a customer noticing something missing — a problem examined in error handling in automation.
