Connecting systems so people stop being the integration

API integration connects your website or application to other systems so data moves without someone retyping it. The engineering that matters is not the connection itself but what happens when the other system is slow, down, rate-limited or returns something unexpected.

Integration work looks simple in a demo. Send a request, receive a response, store the result. The difficulty is entirely in the unhappy paths, and those are what separate an integration that runs unattended for years from one that needs someone watching it.

Fragile integrations share a profile. They assume the other system is always available, so a brief outage loses data permanently. They have no retry logic, so one timeout drops an order. They log nothing, so when a record is missing nobody can establish whether it was sent. They handle the documented response shape and break on the undocumented one. And credentials sit in the codebase, where they remain after the developer who added them has left.

Who this is for

When this work makes sense

  • Businesses where staff copy data between two systems by hand
  • Companies whose website and CRM hold different versions of the same customer
  • Organisations needing stock or pricing synchronised between systems
  • Businesses connecting to a supplier, marketplace or partner platform
  • Companies whose existing integration breaks regularly and nobody knows why
How to choose

Questions worth asking any supplier

What happens when the other system is unavailable? Without an answer, data is lost rather than delayed.

Is there a retry strategy, and does it avoid duplicating actions on retry?

Is anything logged? Diagnosing a missing record without logs is guesswork.

Where do credentials live? Keys in a repository outlive the people who added them.

Which system is authoritative when they disagree? Undecided, they will drift apart.

What you get

Deliverables

Integration design naming the authoritative system for each piece of data

The integration itself, with error handling as a first-class concern

Retry logic with backoff, and idempotency so a retry cannot duplicate an action

Queuing where the other system is slow or rate-limited

Logging of every exchange, sufficient to answer what happened to a given record

Alerting when failures exceed a threshold rather than on every transient error

Credentials in environment configuration, not in source control

Documentation of what connects to what and what to do when it fails

Built with

  • REST and GraphQL APIs
  • Webhooks
  • Node.js
  • Message queues
  • Zoho
  • HubSpot
  • Salesforce
  • Stripe
  • Razorpay
How we work

Process

Integration work starts by establishing which system holds the truth for each field. Two systems holding customer records will disagree eventually, different addresses, different phone numbers, and without a stated authority the integration will overwrite good data with stale data in whichever direction it happens to run. That decision is made before any code, because it determines the direction of every sync.

The standard nine stages, discovery, strategy, UX/UI, development, content and SEO, testing, launch, measurement and continuous improvement, apply to every project. The paragraph above is what differs for this one.

Pricing

What moves the number

Pricing depends on scope, functionality, integrations and content requirements. These are the factors that change it most:

  • Number of systems and whether each has a documented API
  • Data volume and whether synchronisation must be near real time
  • Whether the sync is one-way or bidirectional, which is substantially harder
  • Quality of the third-party documentation, which varies enormously
  • Rate limits and how much queuing infrastructure they require
  • Ongoing monitoring and support
Comparison

Custom integration, an automation platform, or manual process

Automation platform (Zapier, Pabbly)

Fits: Simple, low-volume connections between systems with existing connectors

Limits: Per-task pricing that grows with volume; limited error handling and hard to debug

Custom integration

Fits: High volume, complex mapping, or systems without off-the-shelf connectors

Limits: Build cost and ongoing ownership of the code

Manual process

Fits: Genuinely low volume where automation would cost more than it saves

Limits: Error-prone, does not scale, and the cost is hidden in someone's week

Proof

Case studies

No published integration case study. Integration work is inherently client-system-specific and we do not have permission to describe any.

MBGDesk operates from 4 offices in India, United States, United Kingdom, United Arab Emirates. We hold no industry certifications and do not imply otherwise.

Questions

Frequently asked questions

Can we use Zapier instead?

For simple, low-volume connections, often yes, and we will say so. It becomes expensive at volume, its error handling is limited, and debugging a failed run is harder than reading your own logs. The crossover point is usually volume plus the cost of a silent failure.

What happens if the other system goes down?

Whatever you designed for. A well-built integration queues the work and retries with backoff, so an outage delays data rather than losing it. Most fragile integrations simply fail the request and move on, which is how records vanish.

Our integration keeps breaking. Why?

Common causes are the third party changing their API without notice, expired credentials, rate limits being hit as volume grew, or error handling that was never written. Logs answer the question quickly, the absence of logs is usually why nobody has answered it.

Can you integrate with a system that has no API?

Sometimes, through scheduled file exchange, email parsing or a database connection. These are more fragile than a proper API and we would say so rather than presenting them as equivalent.

How do we keep two systems in sync both ways?

Carefully, and it is considerably harder than one-way. You need a rule for conflicts, a way to avoid sync loops where each update triggers the other, and a decision about which system wins. Many projects that ask for bidirectional sync are better served by one-way plus a clear authority.

Where should API keys be stored?

In environment configuration, never in the repository. Keys committed to source control persist in history even after removal, and they are one of the most common sources of credential exposure.

How do we test an integration without affecting live data?

Against the provider's sandbox where one exists, which most payment and CRM platforms offer. Where none exists, we build a stub that mimics the responses, including the failure responses, since those are the ones worth testing. Testing only against production is how a developer discovers the retry logic duplicates orders, on real orders.

Talk to us about this

Tell us what you are trying to build and we will come back with scope, approach and an estimate.