ERP CRM integration is one of those projects that starts with an innocent sentence in a management meeting — "let the sales rep see stock levels" — and ends twelve months later with two half-synced systems, an intermediate spreadsheet nobody wants to touch, and someone in admin manually fixing what the connector duplicates every night. It doesn't happen for lack of technology: almost everything connects today. It happens because the boring part gets skipped, which is deciding who owns each piece of data before a single line of code is written.
This guide is about exactly that: the patterns that work, how to fix the source of truth, in what order to roll it out so the business keeps running, and the specific mistakes we've seen turn an eight-week project into an eight-month one.
What is ERP CRM integration, and what is it not?
Integrating ERP and CRM means making two systems with different logics share a bounded set of data under explicit rules about who writes, when, and what happens when they clash. The ERP governs administrative reality: items, prices, confirmed orders, delivery notes, invoices, payments. The CRM governs the commercial relationship: accounts, contacts, opportunities, activities, sales forecast.
What an integration is not:
- It is not a full copy of one system inside the other. Nobody needs the 40 fields of an accounting entry inside the CRM. You integrate what is used to decide or to do the work.
- It is not a reporting exporter. If all you want is sales by rep, you probably need a dashboard on top of a data store, not a bidirectional connector. We cover the difference in data warehouse for mid-sized companies.
- It is not purely an IT project. Seventy percent of the decisions are business decisions: what counts as an active customer, which price wins when they differ, who is allowed to change a legal entity name.
A good starting point is writing the real requested flows on a single page. In most mid-sized companies, five or six fit: account and tax details, delivery address, catalogue and price list, stock availability, order or quote, and invoice and payment status. If your list has twenty flows, you don't have an integration project — you have an unprioritised wish list.
Who owns each field? Defining the source of truth
This is the decision that determines whether the project lands. For every shared entity you need one master system — the only one allowed to create and modify — and one or more reader systems. Without it, two users edit the same customer in different places and the last one to sync wins, which is almost never the one who was right.
| Data | Usual master | Who reads | Why | |---|---|---|---| | Account and tax details (tax ID, legal name) | ERP | CRM | It's what gets invoiced and what auditors check | | Prospect with no tax ID | CRM | — | It doesn't exist yet for admin; keeps the ERP clean | | Contacts and sales activity | CRM | ERP (read-only) | The ERP doesn't need to know who had lunch with whom | | Catalogue and price lists | ERP | CRM | The official price is the one that gets invoiced | | Exceptional discount | CRM, with approval | ERP | It's born in the negotiation and validated before it flows | | Available stock | ERP | CRM | Live data; you query it, you don't copy it | | Quote / proposal | CRM | ERP once won | The ERP only receives what turns into an order | | Confirmed order | ERP | CRM | Once there's a commitment, admin owns it | | Invoice and payment status | ERP | CRM | The rep needs to see it, not edit it |
Two rules that save endless arguments. First: the master is defined per entity, not per system; it's perfectly normal for the CRM to own some things and the ERP others. Second: a field with no owner doesn't get integrated. If nobody is responsible for keeping a customer's industry classification current, integrating it only spreads junk faster.
An integration doesn't fix a dirty master record: it replicates it to more places, faster. Cleaning before connecting isn't perfectionism, it's avoiding paying twice.
If your customer master has duplicates, misspelled legal names and empty tax IDs, the right order is data governance first, connector second. Deduplicating up front costs weeks; undoing duplication propagated across two live systems costs months.
Which integration pattern fits your case?
There is no best pattern — only one proportionate to your volume, your criticality and the team that will maintain it.
| Pattern | How it works | When it fits | Main risk | |---|---|---|---| | Scheduled files (CSV/SFTP) | Nightly dumps between systems | Low volume, non-critical data, legacy systems with no API | Silent failures: nobody reads the log until half a day of orders is missing | | Point-to-point API | One system calls the other directly | Two systems, few flows, technical team available | It multiplies: with five systems you maintain twenty connections | | Vendor's standard connector | A prebuilt module for that product pair | When it exists and covers your flows untouched | It breaks when you customise the ERP; version upgrades set the pace | | Integration platform (iPaaS) | A middleman with connectors, queues and retries | Three or more systems, need for traceability and reprocessing | Recurring cost and one more vendor dependency | | Events and message queues | Every change publishes an event others consume | High volume, near real-time needs, mature team | Operational complexity: it demands real monitoring | | Shared data layer | Everything lands in a common store and is distributed from there | When analytics and several consumers are also in play | Latency; useless for live stock lookups |
One practical decision that gets forgotten: not everything has to sync the same way. Stock is queried live (the rep asks and the ERP answers there and then); the catalogue is replicated once a day; the order is pushed as an event the moment it's won. Mixing frequencies isn't sloppy, it's design: copying stock overnight produces false delivery promises by mid-morning.
How do you roll it out without stopping the business?
The sequence that causes the fewest headaches has five phases, and you skip none of them.
1. Inventory and cleanup (2-4 weeks). How many accounts exist in each system, how many match by tax ID, how many are duplicates. This is where you choose the matching key: tax ID when it exists, your own identifier when it doesn't. Never the name, which changes and gets spelled five different ways. 2. Field map and rules. Field by field: source, destination, transformation, what to do if the destination holds a different value, what to do if the record doesn't exist. It's a tedious two- or three-page document that prevents 80% of later incidents. 3. Initial sync in a test environment. With real copied data. The goal isn't for it to work: it's to count how many records fail and why. A 5% rejection rate here is normal and manageable; 30% means phase 1 wasn't done properly. 4. Go live flow by flow, not all at once. Read-only first (the CRM sees invoices and stock, writes nothing). Once that's been stable for two weeks, open up writes for the highest-value flow, usually the order. One flow at a time. 5. Operation and monitoring. A panel showing records processed, rejected and pending, plus an alert to a named person when something jams. Without it, the integration degrades in silence until someone discovers it through a customer complaint.
One detail that looks minor and isn't: decide up front what happens with deletions. Deleting a contact in the CRM cannot delete a billable customer in the ERP. The usual, sensible approach is that deletions don't propagate and are handled as "inactive" flags instead.
What are the mistakes that cost months?
The ones we've seen repeat, by name:
- Bidirectional by default. "Let's sync both ways just in case" is the fastest way to create loops and overwrites. Most flows should be one-way; bidirectionality is justified field by field.
- Matching customers by name. "García Transport Ltd" and "GARCIA TRANSPORT LTD" are the same customer to a human and two records to a connector. With no stable key, the project becomes permanent manual work.
- Not defining time zone or date format. It sounds anecdotal until late-afternoon orders show up dated the following day and the month-end close doesn't balance.
- Integrating the free-text notes field. It's the drawer where reps write anything at all. Pushing it into the ERP guarantees someone eventually invoices based on a comment.
- Forgetting reprocessing. Every integration fails some day: the network drops, the ERP is in maintenance, a mandatory field arrives empty. What sets a professional integration apart is that failed messages are stored, corrected and resent without anyone touching the database.
- Not budgeting maintenance. Every ERP or CRM version upgrade can break something. Budgeting only the build is the classic mistake we describe in what an AI project really costs, and it applies identically here.
- Keeping users out until the end. The person who spots a badly designed flow is the admin watching orders arrive with no delivery address. If they see it in week 3 rather than week 20, the fix is cheap.
Where does AI fit into all this?
Afterwards, not before, and in very specific spots. Integration is plumbing: deterministic, traceable, auditable rules. Dropping a probabilistic model into the middle of an invoicing flow is asking for trouble. That said, there are three points where it genuinely helps:
- Deduplication and record matching. Deciding whether two accounts with similar names and addresses are the same one. Similarity models beat fixed rules by a wide margin here, always with human review of the borderline cases.
- Normalising dirty data. Addresses, regions, contact names, job titles. Turning inherited free text into structured fields before the initial load.
- Getting documents into the flow. Orders that arrive as PDFs by email and get typed into the ERP by hand. That's the natural gap for process automation, with human validation for as long as the error rate warrants it.
Order matters: clean data and connected systems first, then automation, then models. It's exactly the sequence we argue for in data strategy, and the reason so many AI projects stall one layer below, in data engineering.
Frequently asked questions
How long does an ERP CRM integration take?
With flows capped at five or six and reasonably clean master data, somewhere between 6 and 12 weeks to the first flow in production. What stretches timelines is almost never the development: it's the upfront customer data cleanup and how long the company takes to decide who owns each field.
Standard connector or custom development?
If a vendor connector covers your flows with no customisation, start there: maintenance is included and the risk is lower. The moment you need three or four exceptions of your own, the connector becomes custom development in disguise, with less room to manoeuvre.
Do we need real-time sync?
Almost never for everything. Stock and availability are queried live, orders are pushed as soon as they're confirmed, and the rest can run in daily batches. Real time multiplies infrastructure and monitoring costs, so reserve it for data where a few hours' delay has commercial consequences.
What if we switch CRM or ERP later on?
It depends on the pattern. With point-to-point integrations, replacing a system means redoing all of its connections. With an intermediate platform or a shared data layer, you swap one end and keep the rest: slightly more expensive up front, far cheaper on the day of the switch.
If you're at the decision point — or already have two systems fighting over the same customer — what helps isn't a connector comparison chart but half an hour looking at your actual data: how many duplicate accounts exist, which flows are genuinely used, and which business decisions are still unmade. That's what we do in the audit, and if you'd rather talk it through first, let's talk and we'll tell you straight whether your case needs a project or just two well-placed rules.
Shall we apply it to your case?
The 360° AI Audit turns these ideas into a concrete plan for your company: three weeks, fixed price and the full picture of your AI before spending a euro.
See the 360° Audit→ Let's talk↗