Skip to content
GESEL.IO
Guides
Start a project↗PL←Home
Home/Guides/Integrations and automation

Pillar article

System Integration for Business: What to Do When It Breaks

Updated: 2026-08-13·9 min read·GESEL.IO editorial team

In short

System integration for business starts with a table, not a tool: for every entity, decide the direction, the frequency, the source of truth, and what happens on conflict. The system receiving events has to acknowledge, queue, and retry them. Every integration needs logs, an alert that reaches a named person, and an owner inside your company, because one day a vendor will change its API.

On this page

  1. Where system integration for business actually starts
  2. The decision matrix to fill in before you choose a tool
  3. Webhook or polling — the difference seen from the receiving end
  4. What to do when a system has no API
  5. Point-to-point, a data bus, or iPaaS in a mid-sized company
  6. When no-code stops being enough
  7. What every integration needs before you can live with it
1 source

One entity, one direction, one source of truth. Overselling in e-commerce usually comes from two systems both believing they own the stock level, or defining "available" differently.

System integration is a permanent connection between two or more programs, in which data moves between them automatically, by rules you set, without anyone retyping it. System integration for business rarely breaks on launch day — it breaks three months later, when a vendor changes its API, when the shop takes several hundred orders in an hour, or when the server on the other side stops answering. Proposals describe five implementation phases and a list of benefits. This piece is about what they leave out: what to settle before the work starts, and what happens when the other side goes quiet.

Where system integration for business actually starts

It starts with deciding which system is right when two of them show different data — not with choosing a tool. A source of truth is one named system whose value wins whenever there is a discrepancy; every other copy is only a reflection. Before anyone asks “Make or n8n”, someone has to answer “who owns the stock level”.

If you run a company in Poland, much of the stack you are connecting is already in place. On the back-office side sits an ERP — the software that holds accounting, inventory, and orders in one place — usually Comarch ERP Optima or XL, enova365, Symfonia, Subiekt GT and nexo, Streamsoft Prestiż, Sente, Microsoft Dynamics 365 Business Central, or SAP. On the selling side there is a platform such as Shoper, IdoSell, PrestaShop, WooCommerce, Magento, Shopify, Sky-Shop, Selly, or AtomStore, plus marketplaces: Allegro, Amazon, eBay, Kaufland, Empik. In the warehouse a WMS joins in — warehouse management software, which normally exchanges just two messages with the ERP: a picking instruction one way and a fulfilment confirmation back, over an API or a data bus.

✗"We will sync everything both ways so the data is the same everywhere."
✓"Stock goes from the WMS to the shop every five minutes and the shop never writes it. Prices come from the ERP. Orders go from the shop to the ERP and never the other way."

Two-way synchronisation of the same entity is the most expensive and most failure-prone option you can pick, because it forces you to resolve conflicts in real time. Choose it only where the process genuinely requires it. Stock is where this bites first, because a company usually holds four different figures under that one word — picking the one that wins is covered in inventory synchronisation between the shop and the ERP.

The decision matrix to fill in before you choose a tool

For every entity, settle four things: direction, frequency, source of truth, and behaviour on conflict. Without that table the integration is guesswork, and mismatched records and overselling become a matter of time. Fill it in a spreadsheet before anyone writes a line of code — it is also the best attachment to a request for proposal and a natural part of a good software project brief.

Entity Direction Frequency Source of truth On conflict
Customer record ERP → shop on change ERP ERP wins, the shop overwrites its own copy
Product record shop or PIM → ERP on publication shop or PIM ERP never overwrites descriptions or photos
Stock level ERP or WMS → shop every few minutes or event-driven one of them, never both the shop only reads, it never writes
Price ERP → shop on price list change ERP a shop promotion is a separate field, not an overwrite of the base price
Order shop and marketplace → ERP event-driven, immediately the sales channel duplicates recognised by order identifier, not by date
Fulfilment status ERP or WMS → shop event-driven ERP or WMS the status with the later timestamp wins, not the one that arrived last
Sales document ERP → shop and customer once issued ERP a document is never updated, only corrected

The last row carries legal consequences of its own. Structured invoices and plugging your own software into KSeF, the Polish National e-Invoicing System, are a separate conversation, covered in KSeF integration for a custom system — Polish rules that apply to companies operating in Poland, not a general standard. This article is informational and is not legal advice.

Webhook or polling — the difference seen from the receiving end

A webhook is a notification that the sending system pushes by itself, at the moment of the event, to an address you have given it; polling is the reverse, where you periodically ask “is there anything new”. From the sales side a webhook looks better, because it works instantly. From the receiving side it is harder, and this is exactly where integrations in companies break most often.

The receiver of a webhook has to do four things that never show up in a proposal:

  • Acknowledge before it processes anything. The sender has a time limit for a reply. If your system first writes the order into the ERP and only then answers, every ERP slowdown looks to the sender like an outage. The correct order is: store the raw message, reply, process separately.
  • Keep a queue. A queue is a list of messages waiting to be handled, worked through one by one regardless of how fast they arrive. Without one, a sudden spike knocks the integration over and the events from the outage window are lost.
  • Survive duplicates. The sender retries whenever it does not get an acknowledgement, so the same message can arrive twice. Idempotency saves you here: the property by which a message handled twice produces the same result as one handled once. In practice that means storing the event identifier and discarding repeats.
  • Assume nothing about order. Events can arrive in a different order than they were created. A status of “shipped” must not fall back to “being picked” just because an older message turned up later. The timestamp or a record version number decides, not the moment of arrival.

Polling has one advantage almost nobody mentions: a missed event does not vanish, because the next run will see the changed record anyway. A lost webhook is gone for good. Mature integrations run both paths — a webhook for speed, and a scheduled re-sync once a day as a safety net.

What to do when a system has no API

Ask the vendor in writing before you conclude there is no API — sometimes there is one, but it is paid, unadvertised, or only available in a newer version. Some older accounting and warehouse systems on the Polish market genuinely have no public, supported interface, and then only worse options remain, worth knowing in order, best first. The full ladder — down to reading data off the screen — is walked through route by route in the guide on connecting a system without an API.

  1. An official, supported API (REST, SOAP, or GraphQL, authenticated with OAuth 2.0, a token, or an API key). The only option the vendor is obliged to maintain.
  2. Scheduled file export and import over SFTP. JSON, XML, or CSV dropped into a directory on a schedule. An old approach, but predictable and easy to audit. It needs a folder for rejected files and an alert when a file does not appear on time.
  3. Integration through the system’s database. This works until the vendor changes the table structure in an update — and it will, because nothing was ever promised otherwise. It is technical debt with a deferred payment date: not covered by support, and capable of quietly writing data in a way the application does not expect.
  4. Manual CSV import and export. Not an integration, a procedure. Acceptable as a solution for a few weeks, not for a few years.
Question to send your system vendor

"Does [system name] provide a supported API for reading and writing customer records, products, stock levels, and orders? Please send a link to the documentation, the authentication method (OAuth 2.0, token, API key), any limits on the number of requests, whether a test environment is available, and whether API changes are announced in advance and how long older versions are maintained."

The last sentence of that question is the important one. The answer decides whether the integration is a one-off cost or a standing one.

Point-to-point, a data bus, or iPaaS in a mid-sized company

Three arrangements are worth knowing, and each has its moment. A point-to-point connection, meaning a direct link between two systems, is the cheapest and quickest to launch — sensible when you have two or three systems and no plans for more. A data bus (ESB) is a central intermediary that all communication passes through; it starts to pay off once you have several systems and each new one would otherwise mean wiring connections to all the rest. iPaaS (Integration Platform as a Service) is an integration platform hosted by a cloud vendor who handles updates and availability while you build the flows inside it — convenient when you do not want to maintain your own infrastructure and accept the dependency on that vendor.

In Polish e-commerce, that middle layer is often filled by off-the-shelf integrators already on the market: BaseLinker, Apilo, Sellasist. EDI is a world of its own — standardised exchange of commercial documents, where the EDIFACT standard originated at the United Nations and was adopted by ISO as the ISO 9735 norm. The largest EDI users in Poland are retail chains, so if you sell into a chain, the buyer picks the standard and the format, not you.

When no-code stops being enough

Tools such as Make, n8n, Zapier, Microsoft Power Automate, Node-RED, and Pipedream make a good first version of an integration and a bad final one for a critical process. Six thresholds draw the line, not an opinion about any particular tool:

  • Scale. Per-operation pricing stops being cheap exactly when the process becomes a daily one. Count the operations per month before you decide the cost is negligible.
  • Data sensitivity. Personal and commercial data passes through the vendor’s infrastructure. Make runs in the cloud only; n8n is open source and can be self-hosted or run in n8n’s own cloud on servers in Germany. Check the location and the processing terms in the contract with the vendor, not in the feature list.
  • Predictable latency. If a process has to finish within a set time, you need guarantees a shared plan usually does not offer.
  • Auditability. “Why did this order not reach the ERP on 14 March” has to have an answer based on records, not on someone’s memory.
  • Vendor lock-in. A scenario built by clicking does not move to another platform. The more logic it holds, the more expensive the exit.
  • Scenario size. A flow with dozens of steps and conditional branches is already software — only without tests, versioning, or code review, and often with a single person who understands it.

Which thresholds you have already crossed is easier to judge against the side-by-side comparison of Make, n8n and a custom integration, including what self-hosting actually costs. Rewriting such a flow as your own service follows the same logic as mobile app development cost: you pay for edge cases and integrations, not for the number of screens. The same measure answers how long it takes to build an app. Assume from the outset that the first version covers one process — the same principle used when agreeing the scope of an MVP.

What every integration needs before you can live with it

An integration without monitoring is not finished, even when it works. The list below is the minimum worth requiring in the contract, whether an internal or an outside team does the work.

  • Logs that include the message body. Not “write error”, but what came in, what was sent, and what the other system replied.
  • Monitoring for silence. Alert on the absence of events, not only on errors — a shop that has sent no orders for four hours in the middle of a working day is a signal in itself.
  • An alert that reaches a person. A specific person, a specific channel, a specific time threshold. A notification to an inbox nobody reads is the same as no alert.
  • A queue for failed messages. A separate place where events rejected by the other side land, together with the reason for the rejection.
  • A retry procedure. Someone non-technical has to be able to select the messages from the last two hours and send them again, without digging around in a database.
  • An owner inside the company. One person who knows what synchronises with what and holds contacts at both vendors. Without that, the first outage turns into an argument about who should be calling whom.
  • A plan for API changes. Write down where the vendor announces changes, who follows them, and how much time the team has to react. That is the question from the template above, moved into the contract.

This layer separates an integration from a one-off script, and it is the part most often missing from estimates — much like the ongoing performance work skipped on websites, where the result is measured with Core Web Vitals. If you are planning a wider project in which the integration sits alongside an app, take it down the same path as building a mobile app: scope and decisions first, tools second. If you want a second opinion on which connection is urgent and which can wait, describe your setup to us.

In this cluster

  • Connecting a system without an API: five routes, best to worst

    How to connect a system without an API: five routes from a supported interface down to screen scraping, with an honest verdict on which ones are technical debt.

  • Inventory synchronisation: four stock figures, one source of truth

    Inventory synchronisation without overselling: the four definitions of stock, which system owns the number, webhooks versus polling, and what to do on conflict.

  • KSeF integration for your own sales system in Poland: what to plan

    KSeF integration for your own sales system, step by step: Poland's e-invoicing deadlines, the offline24 mode, choosing a route and what to scope in the project.

  • Make vs n8n vs a custom integration: five switching thresholds

    Make vs n8n, or a custom integration? The five thresholds after which a no-code scenario stops paying off, and what self-hosting really costs.

Knowledge base

Not sure which systems to connect first?

Tell us what you run and what keeps going out of sync — we will come back with a proposed integration scope and order of work.

Contact us↗

Checklist

  • ✓

    List the entities to synchronise: customer, product, stock level, price, order, fulfilment status, document.

  • ✓

    Name one system as the source of truth for each entity and put it in writing before the work starts.

  • ✓

    Set the sync direction separately for every entity — two-way only where the process truly requires it.

  • ✓

    Ask each vendor about the supported API, authentication, rate limits, and whether a test environment exists.

  • ✓

    Require a queue for failed messages and a way to retry them without anyone editing the database by hand.

  • ✓

    Set an alert to a named person, not just a log entry, when an integration goes quiet for longer than your threshold.

  • ✓

    Name an owner for the integration inside your company and a contact person at each system vendor.

  • ✓

    Schedule a periodic re-sync of the data as a safety net for events that were lost along the way.

Frequently asked questions

What is the difference between a webhook and an API, and when do you use each
An API is an interface through which one program asks another for data or writes data to it — the initiative sits with the program doing the asking. A webhook is a notification that the sending system pushes by itself the moment something happens, to an address you have given it. Use a webhook where reaction time matters, such as a new order. An API polled on a schedule works well as a backup: if a notification is lost, the next run picks up the missing data anyway.
How do you connect a shop to warehouse software that has no API
First check with the vendor whether a supported interface exists — sometimes it does, but it is paid or simply not described publicly. If there is none, the next option is a scheduled export and import of CSV or XML files over an SFTP server, with a schedule and a folder for rejected files. Integrating by writing straight into the software's database tends to break with every vendor update and is not covered by support, so treat it as a temporary measure.
Why do stock levels in the shop and in the ERP drift apart
Usually because both systems consider themselves the owner of availability, or because each counts a different figure: physical stock, stock minus reservations, or a sales figure with a buffer. Sync delay makes the gap worse — a sale in a channel that has not received the update yet ends in overselling. The cure is one system as the source of truth for stock, one-way writes to the others, and a shared definition of what "available" means.
When should you order a custom integration instead of an off-the-shelf connector
An off-the-shelf connector wins when you are joining a popular pair of systems in a standard way and you accept its data model. A custom integration makes sense when your processes differ from the vendor's template, when you need control over ordering and retries, when the data is sensitive, or when the connector does not cover the entity you care about most. A common middle ground is a ready connector for the simple flows and your own code for one or two critical ones.
What happens to orders if the integration stops working for a few hours
That depends entirely on what was designed beforehand. In a properly built integration, events go into a queue and wait, failed messages land in a separate place, and once the connection is back they are retried in order. In an integration built without a queue, the events from the outage window are simply gone and someone has to recreate them by hand from the shop admin panel. That is why a queue and a retry procedure matter more than the number of supported fields.
Will a no-code automation handle tens of thousands of operations a month
Technically it usually will, but that is the wrong question. At that scale what decides is per-operation pricing, predictable latency, the ability to reconstruct the history of events, and whether anyone besides the author understands the scenario. Once a scenario has dozens of steps and branches it is already software — only without tests, versioning, or code review. That is normally the moment to move the logic into your own service.

Sources and methodology

These links lead to primary sources and the rules we use to prepare and update our material.

  • OWASP — API Security Top 10↗accessed: 2026-08-14
  • GESEL.IO editorial policy↗

Read next

  • KSeF integration for your own sales system in Poland: what to plan

    KSeF integration for your own sales system, step by step: Poland's e-invoicing deadlines, the offline24 mode, choosing a route and what to scope in the project.

  • Core Web Vitals Thresholds: LCP, INP and CLS Explained

    Core Web Vitals thresholds are LCP 2.5 s, INP 200 ms and CLS 0.1 at the 75th percentile. See why field and lab scores disagree and how to fix each metric.

  • How to Build a Mobile App: A Step-by-Step Process for the Client

    How to build a mobile app step by step: what you supply at each stage, who signs off on your side, what you get back, and what happens after launch.

GESEL.IO
Guides
Editorial policyPrivacy policyTerms of useSupport

GESEL.IO sp. z o.o., ul. Jagiellońska 5/22, 58-100 Świdnica, Poland

District Court for Wrocław-Fabryczna in Wrocław, 9th Commercial Division of the National Court Register, KRS 0001258062, NIP 8842841661, REGON 545371616, share capital: PLN 5,000.00.

© 2026 GESEL.IO sp. z o.o.