Service

Custom API Integration

Integration work is judged on the day it fails, not the day it ships. We build the connections between your storefront and your back office so that when a system is slow or down, orders queue rather than disappear.

Diagnosis first

Where integrations actually go wrong

Almost never in the happy path. These are the four failure modes that cost real money, and all four are design decisions rather than accidents.

  1. An order reached the store but never the ERP

    A write with no retry and no dead-letter queue. The webhook fired once, the receiving system was restarting, and nothing recorded the loss.

  2. Stock says two, the warehouse says zero

    Two systems both believing they own inventory. Fixable only by naming one source of truth per field and making the other read it.

  3. The same order shipped twice

    A non-idempotent endpoint plus a retry. The second call looked like a new order because nothing carried a stable key.

  4. Nobody noticed for three days

    No alerting on the integration itself. Monitoring the store tells you the store is up; it tells you nothing about the queue behind it.

Why this is the risky part of a build

In our experience the storefront is almost never what delays a project. Integration is, for a simple reason: it is the only part of the work where you do not control both ends.

A theme change is yours to make. An ERP connector depends on another team’s release schedule, another vendor’s rate limits, and a sandbox that may or may not exist. That is why we map systems first and why integration scope, not design scope, drives the timeline on most of our builds.

One source of truth per field

The single most useful decision in any integration project is also the least technical: write down which system owns each piece of data.

Not each system — each field. Your ERP may own price and stock while your PIM owns product copy and the storefront owns nothing but presentation. Once that is agreed, most arguments about sync direction answer themselves, and the ones that remain are genuine business decisions rather than engineering preferences.

Get it wrong and you get the failure everyone recognises: two systems confidently disagreeing about stock, a nightly job that overwrites yesterday’s fix, and no way to tell which number was right.

Where this sits

This is the plumbing. If you are building or rebuilding the storefront it sits on, that is eCommerce development. If you are moving platforms, integrations get re-pointed as part of platform migration rather than rebuilt from memory.

Platforms

Where we build.

Integrations

What we connect

The pattern matters more than the vendor. These are the categories that come up on nearly every build.

  • ERP and finance

    NetSuite, Business Central, SAP and the bespoke systems in between. Orders out, stock and pricing in, with reconciliation that can be audited.

  • OMS, WMS and fulfilment

    Order routing, pick and pack, carrier labels, tracking and returns — including the multi-warehouse rules nobody mentions at kickoff.

  • PIM and product data

    One place where product copy, media and attributes are authored, syndicated to the storefront rather than maintained twice.

  • Tax, payments and CRM

    Avalara and equivalents, payment and fraud providers, and the marketing stack — so customer records stay one record.

See how this fits a build

Design the failure path first

Any competent team can make two systems talk on a good day. The work worth paying for is what happens when the ERP is mid-upgrade, the carrier API is rate limiting you, or a payload arrives twice. We specify that behaviour before writing the integration, because retrofitting it means replaying a week of lost orders by hand.

Talk through your systems
A warehouse with an operations dashboard overlaid

Scope

What a build includes.

  • Typed, documented contracts

    Every payload defined and versioned, so a change on either side is a deliberate act rather than a surprise discovered in production.

  • Idempotent writes

    Stable keys on every operation that creates or changes something, so a retry cannot duplicate an order, a refund or a stock movement.

  • Retries and a dead-letter queue

    Transient failures retry with backoff. Anything that still fails lands somewhere a human can see it and replay it, rather than vanishing.

  • A named source of truth per field

    Price, stock, product copy, customer record — each owned by exactly one system, with the direction of travel written down.

  • Alerting your team will act on

    Alarms on queue depth, failure rate and sync lag, routed to whoever is actually on call. An alert nobody owns is decoration.

  • A sandbox you can test against

    Wherever the vendor offers one. Where they do not, a stubbed environment, so releases are not first exercised against live orders.

How it runs

From first call to live.

  1. Systems map 1–2 weeks

    What exists, what it owns, how it authenticates, what its rate limits are, and which undocumented spreadsheet is load-bearing.

  2. Contract design 1–2 weeks

    Payloads, directions, triggers and failure behaviour agreed in writing with the people who own each system — before any code.

  3. Build 4–10 weeks

    Built against sandboxes with the failure paths exercised deliberately: timeouts, malformed payloads, duplicate deliveries, auth expiry.

  4. Parallel run 2–3 weeks

    New and old paths running together, outputs compared. Discrepancies get resolved here rather than argued about after switchover.

  5. Handover Ongoing

    Runbooks, dashboards and replay procedures, so your team can diagnose a stuck queue without calling us. Support retainer if you would rather we held it.

Frequently asked questions

Can you work with our existing ERP?

Almost certainly. The question is not whether it can be integrated but how — whether it has a supported API, a middleware connector, or only a file drop on an SFTP server. All three are workable; they differ in cost and in how quickly errors surface. We establish which during the systems map.

Do we need middleware, or can we connect directly?

Direct connections are simpler and cheaper for two or three systems. Middleware earns its cost once you have several systems, need to transform payloads between them, or want retries and replay in one place rather than implemented separately in each connection.

How do you handle inventory across multiple channels?

By naming one system the owner of stock and making everything else read from it, with a buffer for the lag that will exist no matter how good the sync is. Two systems that both believe they own inventory will drift — that is arithmetic, not a bug to be fixed later.

What happens when an integration fails at 2am?

The operation retries with backoff. If it still fails it lands in a dead-letter queue, an alert fires to whoever is on call, and nothing is lost — the work can be replayed once the cause is cleared. That behaviour is designed up front, not added after the first incident.

Can you take over integrations someone else built?

Yes, and it is common. We start by documenting what actually exists, which is usually the first time anyone has. Expect the audit to find at least one connection nobody knew was running and one that has been failing silently.

Want to talk through Custom API Integration for your store?

Tell us where it hurts. We will tell you honestly whether we are the right people for it.

Talk to an expert Book 30 minutes