Integrations feel like features when you build them.

A customer asks for Stripe support. Or Shopify. Or NetSuite. Or a shipping provider.

The work seems straightforward: read the documentation, connect the systems, move some data around.

But once an integration ships, it stops being a feature.

It becomes a dependency.

And dependencies never stay still.

Integrations evolve whether you want them to or not

Every external system will change over time.

APIs evolve. Authentication methods change. Fields are deprecated. New versions are released.

Sometimes the changes are documented well. Sometimes they appear quietly in release notes. Occasionally they arrive as a production incident.

The more integrations a platform supports, the more external change it has to absorb.

This creates a long-term maintenance burden that is easy to underestimate when the integration is first built.

Failures propagate across systems

The most difficult problems with integrations are not implementation problems. They are operational problems.

What happens when an external API times out?

What happens when a webhook fails halfway through processing?

What happens when an upstream system sends malformed data?

A single failure can ripple through multiple systems, leaving data partially synchronized.

Good integrations assume these failures will happen and design recovery mechanisms from the start.

Monitoring integrations is just as important as building them

Most integrations fail silently.

An API response changes shape. A webhook stops firing. A background job begins retrying indefinitely.

Without monitoring and reconciliation tools, these failures can persist for days before anyone notices.

Reliable integrations include:

  • idempotent processing
  • retry strategies
  • reconciliation jobs
  • monitoring for drift between systems

Without these safeguards, integrations become operational risks.

Integrations accumulate over time

The first integration feels manageable.

The fifth starts introducing complexity.

By the time a platform supports ten or twenty integrations, the architecture has to actively manage them.

At that point integrations are no longer features. They are infrastructure.


Every integration increases the surface area of your system.

The goal isn’t to avoid integrations. They are often critical to a product’s success.

But it’s important to design them with the assumption that they will live in your system for years.

Because once an integration ships, it rarely goes away.