Skip to content
heapbyte - A name of excellence

Service · Engineer

ERP & CRM Integration

Integrations are a data contract, not a connector. We define which system owns each field, then make the sync observable so drift is caught instead of discovered by a customer.

  • NetSuite
  • Klaviyo
  • GraphQL Admin API
  • Webhooks
Group
Engineer
Starts with
Technical audit
Delivery
Git + staging theme
Handover
Written documentation

01Overview

Most ERP and CRM integrations fail quietly. Inventory drifts a few units at a time, a webhook gets dropped under load, and nobody notices until a customer orders something that's already sold out or a wholesale account is billed at the wrong tier. Treating the integration as a genuine data contract, not a connector, is what prevents that.

We start by defining field ownership in writing — for every shared piece of data, exactly one system is the source of truth, and conflicts are resolved on paper before any sync code exists. From there the sync itself is built event-driven, with idempotency keys and a replay mechanism so outages don't turn into permanent drift.

The part most integrations skip is observability: scheduled reconciliation jobs and alerting on failure rate and drift, so your team hears about a sync problem from a dashboard rather than from a customer.

02The problem

Most integration failures are silent: inventory drifts between Shopify and the ERP, a webhook is missed under load, and nobody notices until a customer orders something that no longer exists or a wholesale account is billed at the wrong price.

03You will recognise this if

  • Fulfilment data is reconciled by hand
  • Inventory counts disagree between systems
  • Nobody can say when a sync last succeeded
  • A missed webhook has caused an oversell before
  • Customer or pricing data conflicts between CRM and Shopify

04How we work on it

  1. 01

    Field ownership

    For every shared field — price, inventory, customer status — exactly one system is designated the source of truth. Conflicts are resolved on paper in a written matrix before any code is written.

  2. 02

    Event-driven sync

    Webhooks with idempotency keys and ordered processing, so retries and out-of-order delivery don't corrupt state on either side of the integration.

  3. 03

    Replay and backfill

    A replay mechanism for gaps caused by downtime or missed events, so a temporary outage doesn't leave permanent, silent drift between systems.

  4. 04

    Reconciliation

    Scheduled diffs between Shopify and the connected system that surface drift as a report, rather than letting it accumulate invisibly until something breaks visibly.

  5. 05

    Observability

    Dashboards and alerts on queue depth, failure rate and reconciliation deltas, so your team is notified of a sync problem before a customer is.

04What you get

Deliverables, not decks.

  • Field-level ownership matrix
  • Sync service with retry and replay
  • Reconciliation jobs and drift reports
  • Alerting on failures and reconciliation deltas
  • Integration architecture document
  • Load and failure-mode testing
  • Integration runbook
sync/orders.contract.ts
1# Admin API 2025-072mutation productVariantsBulkUpdate(3  $productId: ID!, $variants: [ProductVariantsBulkInput!]!4) {5  productVariants { id sku price }6  userErrors { field message }7}

Delivery pipeline

  1. Audit
  2. Scope
  3. Build
  4. QA
  5. Measure

05What changes

Drift is caught, not discovered
Scheduled reconciliation surfaces mismatches between systems as a report before they reach a customer.
Outages don't become permanent gaps
Replay mechanisms reprocess missed events once systems are back online.
Ownership is unambiguous
A written field-level matrix means conflicts are resolved by design, not by whichever event arrives last.

06How an engagement runs

  1. 01

    Audit

    We review your current sync (or lack of one), API access on both sides, and where reconciliation is currently done by hand.

  2. 02

    Scope

    A field-level ownership matrix and integration architecture agreed and documented before any sync code is written.

  3. 03

    Delivery

    Sync service, reconciliation jobs and alerting deployed with a runbook, tested against realistic failure modes before go-live.

07Stack

  • NetSuite
  • Klaviyo
  • GraphQL Admin API
  • Webhooks
  • Queues
  • TypeScript

09Questions

ERP & CRM Integration

Send us the store and the symptom.

A senior engineer reads it, tells you what is actually going on, and scopes only what the evidence supports.