code, coding, programming, html, typing, work, business, hands, laptop, computer, technology, office, desk, coding, coding, coding, coding, coding, programming. 9 pointers on software integrations that hold up
Photo by StockSnap on Pixabay

Features

9 pointers on software integrations that hold up

This page tests tools or workflows for software integrations against a stated job. It records access, inputs, limits, output, export, failure handling, and test.

This is an editorial pen name used by the publication, not a claim of an independently verified personal identity. Original editorial credit: Reporting Desk.

Software integrations are the part of your software estate that nobody owns. Each one was set up by whoever needed it, in a hurry, to solve a problem that has since been forgotten. They work invisibly until they stop, and when they stop, the first sign is usually a colleague noticing that a number looks wrong.

That is the actual risk in this category, not that integrations are hard to build, but that they are easy to build and nearly impossible to keep track of. This page is about evaluating them honestly and running them without accumulating a debt you cannot see.

What to take away

  1. Name which kind of integration you are buyinga native connection, an integration platform, a direct connection you build, or a scheduled file exchange. Each has different economics and a different failure profile.
  2. Ask the seven questions behind any "integrates with" claimdirection, objects and fields, trigger type, existing-record matching, deletions, who built it, and where the data travels.
  3. Give each connection its own identitya function account, not a person — with only the access it needs.
  4. Record the human owner, where the credentials live, who can rotate them, and how to revoke them.
  5. Put integrations on the offboarding checklist, next to the question of what happens to a leaver's mail.
  6. Learn the five failure modessilent stop, partial sync, duplication, replay, cascade — and alert when expected activity does not happen, not only when something throws an error.
  7. Know the constraints before a bulk loadrate limits, versioning and deprecation windows, and the bulk-versus-incremental path.
  8. Test before you commitconnect the second-most-important integration, push a record end to end, break it on purpose, send a duplicate, delete something, run a volume test, and find the logs.
  9. Keep a registerwith one row per integration, and treat the cost of leaving as part of the buying decision.

Four kinds, with different economics

"Integration" covers four quite different arrangements. Knowing which one you are buying changes what you should ask.

Four Integration Kinds Compared

Native

Setup cost
Cheapest
Flexibility
Least
Maintenance
Vendor-dependent
Pricing
Bundled
Best for
Simple links

Platform

Setup cost
Fast
Flexibility
Configured
Maintenance
Third vendor
Pricing
Metered volume
Best for
Visible flows

Direct

Setup cost
Highest
Flexibility
Maximum
Maintenance
You own forever
Pricing
Build + upkeep
Best for
Full control

File Exchange

Setup cost
Low
Flexibility
Scheduled only
Maintenance
Easy to debug
Pricing
Minimal
Best for
Reporting, finance

Native connections, built by one vendor into another's product. The products most businesses already run — Salesforce, HubSpot, NetSuite, QuickBooks, Google Workspace, Microsoft 365, Slack — publish native connections to at least some of the others, and each of them also exposes an interface for connections you build yourself. Native is the cheapest to set up, the least flexible, and entirely dependent on both vendors continuing to care. They break when either side ships a change, and you have no influence over the repair.

Integration platforms, which sit between systems and are configured rather than coded: Zapier and Make at the small end, Workato, Tray.io, Boomi, MuleSoft and Celigo further up, and n8n if you would rather host it yourself. They are fast to build and visible, and they introduce a third vendor, a third bill, and a third thing that can fail. Pricing is usually metered on volume, which means a busy month costs more than a quiet one: model your peak, not your average.

Direct connections you build, using each system's interface. Maximum control, and you own the maintenance for ever. The real cost is not building it; it is being the organization that must react when a vendor changes something.

File exchange: a scheduled export from one system, imported by another. Unfashionable, reliable, easy to debug, and perfectly adequate for anything that does not need to be immediate. Frequently the right answer for reporting and finance, and frequently dismissed for being unexciting.

Match the mechanism to the requirement. Most work does not need to happen within seconds, and choosing a real-time mechanism for work that could run overnight buys you complexity you will maintain for years.

What "integrates with" actually means

The word on the marketing page carries almost no information. When a vendor says they integrate with something you use, ask:

Questions for 'Integrates With'

  • Which directionread, write, or both?
  • Which objects and fields sync?
  • How does it triggerpush or poll?
  • Existing recordsmatched or duplicated?
  • What happens to deletions?
  • Who built itvendor, other, or third party?
  • Where does data travel en route?

What integrates with means

  • Which direction?Read-only, write-only, or both. One-way is the common case and it is often described as though it were two-way.
  • Which objects and fields?An integration that syncs contacts but not the custom fields you keep contacts for is not the integration you wanted.
  • How does it trigger?Pushed immediately when something changes, or polled on a schedule. Polling has a delay and a cost; pushing needs the receiving side to be reachable and reliable.
  • What happens to a record that already exists?Matched and updated, or duplicated. Duplication rules are the single most common source of integration mess.
  • What happens to deletions?Very often nothing, which means deleted records linger on one side for ever.
  • Is it built by the vendor whose product you are buying, by the other one, or by a third party?This tells you who fixes it and how fast.
  • Where does the data go on the way?If the connection runs through a third party's servers, that is a data-handling question, not just a technical one.

Ask these about the two or three integrations you actually depend on. The catalog size is irrelevant; a vendor with a thousand connectors and a poor one for your accounting system is worse for you than one with fifty good ones.

Whose identity is the connection using?

This is the question that causes the most avoidable breakage, and almost nobody asks it during an evaluation.

Identity Hygiene for Connections

  • Give each connection its own function identity
  • Record the human owner separately
  • Note where credentials live and who rotates
  • Check granted permissions, not needed ones
  • Know how to revoke access

When you connect two systems, the connection authenticates as somebody. Usually that somebody is the person who clicked "authorize", which means the integration inherits their access, and dies when their account does. The pattern is familiar: an automation stops working weeks after someone leaves, and it takes days to work out why, because nobody connected the departure to the failure.

What to do instead:

Whose identity is the connection using

  • Give each connection its own identity, belonging to a function rather than a person, with only the access that connection needs.
  • Record who owns it, the human responsible when it breaks, separately from the account it runs as.
  • Note where its credentials live, and who can rotate them.
  • Check the permissions it was granted, not the ones it needs. Authorization screens routinely request broad access, and broad access granted once persists indefinitely.
  • Know how to revoke it, and remember that revoking access does not retrieve data already copied.

Scoping gets skipped because everything works either way on day one. The questions a default configuration glosses over are authentication and authorization: which identity the connection runs as, what scopes it was granted, and who can change them. A SOC 2 Type II report tells you how a vendor manages access to its own systems, but it will not tell you what your connection was granted.

The useful habit is to grant a connection the narrowest access that lets it work.

Then include integrations in your offboarding checklist. "Which automations run as this person's account?" belongs beside "what happens to their mail".

Five ways integrations fail

They rarely fail loudly. Learn the shapes:

Five Failure Modes

Failure

Silent stop
Nothing arrives
Partial sync
Systems diverge
Duplication
Repeated records
Replay
Doubled effects
Cascade
Looping triggers

Presents

Silent stop
Expected-activity monitoring
Partial sync
Per-record outcomes
Duplication
Matching key
Replay
Repeat handling
Cascade
Loop guards, ceilings

Check

Silent stop
Partial sync
Duplication
Replay
Cascade
FailureHow it presentsWhat to check for
Silent stopNothing arrives; nobody notices for weeks because absence is invisibleIs there monitoring on expected activity, not just on errors?
Partial syncSome records move, some do not, and the two systems slowly divergeDoes the tool report per-record outcomes, or only overall success?
DuplicationThe same record created repeatedly because matching failedWhat is the matching key, and what happens when it is missing or changed?
ReplayA retry re-delivers messages already processed, doubling the effectDoes the receiving side ignore repeats, or act on them again?
CascadeOne system's change triggers another, which triggers the first, in a loopAre there loop guards, and is there a ceiling on how much can run?

The common thread is that four of these five are invisible without deliberate monitoring. The most valuable thing you can build around any integration is an alert that fires when the expected thing does not happen: a daily transfer that did not run, a queue that did not drain. Error alerting only catches the failures that announce themselves. That is what a dead-man's-switch service does — Healthchecks.io and Cronitor watch a scheduled job and alert you when the expected ping never arrives — and PagerDuty, or whatever already carries your on-call pages, can deliver the alert to a person.

Limits, versions, and the slow deprecation

Three constraints that shape what is possible:

Limits, Versions, Bulk Paths

  • Find rate limits before bulk operations
  • Know what happens when limits are exceeded
  • Ask how version changes are communicated
  • Ensure deprecation notices reach a read mailbox
  • Use the bulk path for volume, incremental for changes

Rate limits. Every interface caps how much you may do in a period. This is fine day-to-day and becomes the binding constraint during bulk operations, an initial load, a mass update, a migration. Find the published limits before you plan anything bulk, and find out what happens when you exceed them: a clear refusal you can retry, or a temporary block on the whole account. A refusal is a normal, documented response rather than a fault: HTTP 429 (Too Many Requests) is the standard reply, and the Retry-After header it carries tells you how long to wait. Being able to describe that too many requests reply and the retry hint it carries is enough to hold the conversation with whoever built the thing.

Versioning. Interfaces change. Well-run vendors version them, announce deprecations, and give you a window. Others change behavior without notice. Ask how changes are communicated, where they are published, and how long old versions are supported, and then make sure the announcement reaches a mailbox someone reads, not the address of whoever set the connection up.

Bulk versus incremental. Most systems offer a fast path for large volumes and a normal path for ongoing changes. Using the wrong one is why an integration that worked in testing hits limits in production.

What to test before committing

  • Connect the second-most-important integration, not the first. The most important one will get attention regardless; the second reveals how much effort a routine connection takes.
  • Push a record through end to endand check every field on the far side, including empty ones. Fields that silently fail to map are the standard defect.
  • Break it on purpose.Revoke the credential, or send a malformed record, and watch what happens. Does it stop, skip, retry, or corrupt?
  • Send a duplicateand see whether it is recognized.
  • Delete something on one sideand see what happens on the other.
  • Run a volume testlarge enough to meet the rate limit.
  • Find the logs.Whether you can see what happened, per record, and how far back, determines whether you can ever debug this in production.

Keep a register

The cheapest useful thing in this category is a single list, kept somewhere permanent, with one row per integration:

Integration Register Columns

  • What it connects and direction
  • What it is for
  • Who owns it
  • Which identity it authenticates as
  • Where credentials live
  • How it is monitored
  • What happens if it stops for a week

what it connects, which direction, what it is for, who owns it, which identity it authenticates as, where the credentials live, how it is monitored, and what happens if it stops for a week.

That last column is the one that pays. It tells you which integrations deserve monitoring and which can simply be fixed when someone notices. Without it, everything is treated as equally critical, which in practice means nothing is monitored at all.

Review the register when you change either system, when someone leaves, and on a schedule. It is also the document that makes a future migration tractable, because the alternative is discovering your integrations one outage at a time.

What makes this expensive to leave

Integrations are the reason platform migrations overrun. Every connection is a small separate project with its own owner, its own credentials, and its own testing. Ten integrations is not one task, it is ten, and they cannot be done by one person in parallel because each needs the cooperation of whoever owns the system at the other end.

The mitigating actions are cheap and must all happen early. Keep the register. Prefer file exchange when immediacy is not required.

Use function accounts, not personal ones. Avoid deep dependencies on a connector only one vendor maintains.

Where to read next

Connections exist because work spreads across products, so product decisions shape how much connecting you need. Choosing a project management tool often removes the need for two or three connections on its own.

The team collaboration decision sets how many notification feeds you build. The file sharing and storage decision sets whether documents need copying between systems. The account administration decision sets where identities and credentials for connections are managed.

Common questions

Should we build connections ourselves or buy a platform?

Count how many you need and how often they change. Few and stable favors native connectors or a scheduled file. Many and changing favors a platform. Building from scratch is right when one connection matters enormously and nothing off the shelf fits.

How do we find the connections we already have?

From several directions at once: each product's connected applications list, non-human accounts, the finance record for small recurring charges, and a short message to every team.

Ask every team what would break if this product stopped for a day. The last one finds the most.

What is a reasonable review interval for the register?

Twice a year, plus whenever somebody leaves. The review has two jobs: confirm every connection still has an owner, and switch off the ones nobody can justify. The second job is where the value is.

Is real time worth the extra complexity?

Only where a person is waiting for the result. Immediate delivery multiplies the failure modes and the cost, and a great deal of what gets specified as instant is read at the next weekly meeting.

In this guide

  1. Software integrations tools: seven tests for one workflowSoftware integrations tools judged by a test you run: seven checks on one real workflow, plus questions on rate limits, pricing units and change notices.
  2. Software integrations features worth understandingSoftware integrations features that matter in year two: retrievable failed items, single item replay, explicit mapping, and a credential nobody owns alone.
  3. Software integrations alternatives: manual re-entry and nightly filesSoftware integrations alternatives that skip the build: stop duplicating data, re-enter by hand, or run a scheduled file transfer. How to choose between them.

More in Features

Latest from Sofia C. Hayes