Skip to main content
Start a project

System integration

Integration work is rarely about the connection. Two systems can be talking to each other inside a week. The year that follows is about what happens when one of them is down, slow, rate limited, or confidently reporting something the other one disagrees with.

We connect core business systems: ERP, CRM, billing, warehouse and logistics, payment providers, and the WhatsApp Business API. Most of what we are called in to fix is not a broken connection but an integration that was built as if nothing would ever fail.

Where integrations actually break

  • Outages

    The other side goes away, and your promises still hold.

  • Duplicates

    Running twice has to be safe, because eventually it happens.

  • Disagreement

    Two systems, one truth, and a rule for which one wins.

  • Traceability

    Six hours later, somebody has to see what happened.

The other side goes away

Every external system you depend on will be unavailable at some point, usually without warning and usually during your busiest hour. The question is whether that becomes your outage. It does if your checkout calls their API synchronously and waits. It does not if the call is queued, retried with backoff, and the customer sees a confirmed order while the system works through the backlog behind them.

That decision is made on the first day and is expensive to change later, because by then the whole application assumes the call is instant.

The same thing happens twice

Networks time out after the other side has already done the work. A retry then creates a second order, a second charge, or a second shipment. Idempotency is how you stop that: every operation carries a key, the receiving side records what it has already processed, and a repeat is recognised rather than re-executed.

This has to be designed in. Adding it during an incident, while duplicate invoices are going out, is the worst possible time to be reasoning about it for the first time.

Two systems disagree about what is true

Your ERP says there are four in stock, the storefront says six, and both are technically correct because they last spoke forty minutes ago. Someone has to decide which system owns that number, whether the other one is allowed to make decisions from a stale copy, and what happens when they diverge.

We make that ownership explicit for every field that matters. It is usually the single most useful hour of an integration project, and it is almost always the hour nobody scheduled.

Nobody can tell what happened

Six hours after a failure, somebody has to explain why a customer was charged twice. If the integration logged nothing beyond “error”, that explanation does not exist. We log the payload, the decision and the outcome for anything that touches money or stock, with enough detail to reconstruct the sequence and not so much that you are storing card numbers.

WhatsApp Business API

We have built a significant amount of WhatsApp Business API work, including our own product wagate.app, so this is a case where the operational realities are ones we live with rather than ones we read about.

The API itself is straightforward. The parts that catch people are template approval and how long it takes, the twenty four hour customer service window and what you are allowed to send outside it, number and quality rating management, and webhook delivery that is at-least-once rather than exactly-once. A WhatsApp integration that ignores the last point will eventually send a customer the same message twice.

How we approach it

We start by mapping what actually exists rather than what the documentation says exists. That usually means reading the code or watching the traffic, because the gap between the two is where the surprises live.

Then we agree the contract: what data moves, in which direction, who owns each field, what the system does when the other side is unavailable, and what a human needs to be told when automatic recovery has run out of options. That document is the deliverable of discovery, and it is written so you could hand it to another firm.

We build behind a queue by default, with a dead letter path that a person can actually work through, because an integration that silently drops failures is worse than one that visibly breaks.

What it usually costs

A single well documented integration, for example a storefront to an ERP for orders and stock, is typically three to six weeks. A multi system programme, where four or five things have to agree with each other, runs three to nine months and is best done one connection at a time with each in production before the next starts.

The number moves on how good the other side’s API is, not on how many fields you want. An excellent API with fifty fields is faster than a bad one with five.

Related

Integration work usually sits alongside a custom platform, and for retail clients it is most often the connection between e-commerce infrastructure and the systems behind it. Where the integration feeds an assistant or an automation, see AI development.

Tell us what needs connecting

Common questions

Our other system has no API. Is that a dead end?

Usually not. We have integrated through database replicas, scheduled file exchange, and in a few cases screen level automation where nothing else existed. These are less pleasant than a real API and we will tell you so, but they work and they are often much cheaper than replacing the system that lacks one.

Can you work with our existing vendor?

Yes, and it is common. We are frequently the side that writes the integration while another supplier owns the system at the far end. We would rather coordinate with them directly than pass messages through you.

How do we know it is still working?

Monitoring is part of the build, not an extra. You get alerting on queue depth, failure rate and staleness, so you find out that yesterday's sync stopped from us rather than from a customer.

What about data protection?

We design for the minimum data that makes the integration work, and we are specific about what is logged. If personal data crosses the boundary, that is a decision made deliberately and written down, not a side effect of copying every field because it was there.

Can you fix an integration somebody else built?

Often, and it is a good fraction of our work. We start by finding out whether it is repairable or whether you are paying to maintain a design that cannot be made reliable. We will say which, including when the answer costs us the larger project.

More services

Next

Tell us what you are building, or what is breaking.

Start a conversation