Integrations often start as simple feature requests.

A customer asks for support for a payment provider. Or an accounting platform. Or a shipping service.

At first the work appears straightforward. Read the documentation, connect the systems, map some data.

But once an integration ships, the real cost begins.

Every integration introduces a permanent operational burden.

Integrations evolve over time

External systems do not remain stable.

APIs change. Fields are deprecated. Authentication methods evolve. Entire endpoints disappear.

When a system depends on external APIs, it must continuously adapt to those changes.

This maintenance work rarely appears on roadmaps, but it accumulates over the life of a product.

Failures propagate across systems

Integrations introduce new failure paths.

An upstream API might respond slowly. A webhook might fail to deliver. A third-party service might send unexpected data.

These failures often leave systems partially synchronized.

Recovering from those states requires careful design: retries, reconciliation processes, and idempotent operations.

Integrations accumulate complexity

The first integration feels manageable.

The fifth introduces coordination problems.

By the time a platform supports dozens of integrations, it needs architecture specifically designed to manage them.

At that point integrations are no longer features.

They are infrastructure.


Integrations are often critical to a product's success.

But every integration increases the surface area of your system.

Designing them carefully from the start helps ensure they remain assets rather than long-term liabilities.