Integrations··4 min read

The most expensive part of your stack is the gap between systems

Payments in one tool, customers in another, confirmations typed by hand. Nobody owns the gap, so the gap fills with errors. How we build integrations that hold.

Every business we work with already has software. Payments run through a gateway. Customers live in a CRM, or a spreadsheet that thinks it is one. Bookings sit in a calendar. Accounts sit with the accountant.

The tools are fine. The gap between them is where the money goes.

What the gap looks like

A payment clears, and someone copies the details into the booking sheet. An enquiry arrives by form, and someone forwards it on WhatsApp. An invoice is raised in one system and marked paid in another, a week later, if at all.

None of these steps is hard. All of them are manual, and manual steps fail quietly. The customer who never got a confirmation does not file a bug report. They just book elsewhere next time.

Why integrations break

Most integrations are built once, by someone in a hurry, and never looked at again until they stop working. They fail for predictable reasons:

  • They are not idempotent. The same webhook arrives twice and two bookings are created.
  • They trust the client. A payment is marked complete because the browser said so, not because the gateway confirmed it.
  • They do not log. When something goes wrong, there is no record of what was sent, what came back, or when.
  • Nobody owns them. The tool on each side has a vendor. The connection between them has nobody.

How we build them

We treat the integration as the product. Each one is a small, boring, well-tested piece of software:

  1. Events are received, verified and stored before anything else happens.
  2. Every action is idempotent. Replaying a day of events produces the same state.
  3. Every call in and out is logged with enough detail to replay it.
  4. Failures retry, then alert a person, rather than disappearing.

And because we run what we build, the integration has an owner after launch. When a gateway changes its API, that is our problem to notice, not the client's problem to discover.

The payoff

When the gap closes, the business stops leaking. Confirmations go out the moment payment clears. Enquiries reach the right person while the buyer is still interested. The accountant gets data that is already right.

It is rarely the most visible thing we build. It is often the most valuable.