Skip to main content

Connect another order management system

SKU.io is an order management system (OMS) in its own right. If your business also runs a second one, such as a legacy OMS, a wholesale portal, or an ERP that takes its own orders, there's no ready-made connector to install between the two. Instead you connect it the way any custom system connects:

  • Orders into SKU.io arrive through an API Sales Channel. It gives the other system its own token and its own channel, with an event log and SKU mappings, so its orders sit beside your other channels.
  • News back out of SKU.io, such as an order shipping or being cancelled, reaches the other system through webhooks.

Someone on your side, or on the other system's side, still writes the code that sends the orders and receives the webhooks. The developer reference lives at developer.sku.io.

Before you begin​

  • Decide which system owns what. See Decide who owns what below. Two systems that both think they're the master for the same order overwrite each other.
  • You need access to Apps & Integrations, and to Settings → Developer for the webhook half.
  • If the other system only relays orders from storefronts SKU.io already connects to, such as Shopify or Amazon, connect those storefronts to SKU.io directly instead. A channel connection imports orders and writes tracking back with no custom code.

Decide who owns what​

PatternOrders are taken inSKU.io's jobThe other system's job
SKU.io runs fulfillmentThe other systemHold the stock, allocate, fulfill, and record cost of goodsSend each new order to SKU.io, and listen for it shipping
SKU.io is the masterSKU.io, or the channels connected to itEverything: orders, stock, fulfillmentReceive copies of orders and stock changes for its own use
Split by channelEach system keeps its own channelsRun the channels connected to itRun its own, and read SKU.io's stock so neither system oversells

Whichever you pick, stock should have one owner. When both systems keep their own stock figures, they drift apart. If the other system needs stock levels, have it read SKU.io's rather than keep its own.

Steps​

1. Add the other system as an API Sales Channel​

  1. Go to Apps & Integrations.

  2. Under Sales Channels, choose API Sales Channel, then click Connect API Sales Channel. The API Sales Channels page lists every system that sends you orders this way.

  3. Click Add Channel Partner.

  4. Enter a Channel Partner Name your team will recognise, such as Legacy OMS, and optionally pick the Store its orders belong to.

    The Add Channel Partner dialog with the name Legacy OMS

  5. Click Create. The partner's own page opens on its Dashboard, which counts its orders, today's orders, failed events, and items that still need mapping.

    A new channel partner's dashboard with its Orders, Inbound Events, Mappings, and Settings tabs

2. Give the other system its token​

  1. Open the partner's Settings tab.

  2. Under General Settings, choose what happens When an order arrives from a customer that isn't mapped:

    • Create or match automatically (default) — SKU.io finds the customer or creates one.
    • Hold order for review until mapped — the order fails in a way you can recover from. Map the customer on the Mappings tab, then reprocess it.
  3. Under API Access, type a Token name and click Generate New Token. Copy the token straight into the other system's secret store. The same card shows the address the other system sends its orders to.

    The channel partner Settings tab with General Settings, API Access, and the Danger Zone

To stop a token working, revoke it from the same card. Delete Channel Partner, in the Danger Zone, removes the partner and revokes all of its tokens.

3. Map the other system's SKUs and customers​

When the other system's SKUs match yours, its orders land with no further work. Where they don't, open the Mappings tab and map each of its SKUs to one of your products, one at a time, through Import / Export, or with Auto-Match. A mapping is never required, but when one exists it always wins, even over a SKU that matches directly. Orders that can't be matched are counted under Needs Mapping on the dashboard.

4. Tell the other system when orders change​

Go to Settings → Developer → Webhooks and create one subscription per event the other system needs:

EventFires whenTypical use
sales_order.shippedA sales order is fully shippedMark the order complete there, and pass on tracking
sales_order.cancelledA sales order is cancelledCancel the copy
sales_order.createdA sales order is created, from any channel or by handCopy orders from your other channels into the other system
inventory.adjustedStock is adjusted, transferred, or recountedRefresh the stock figure the other system shows

sales_order.shipped fires once per order, when the whole order has shipped. It doesn't fire for a partial shipment. Each subscription points one event at one HTTPS address; for the signing secret and a test delivery, follow Subscribe to webhooks.

If the other system also needs to read from SKU.io, for example stock levels, give it a separate personal access token with only the read scopes it needs, such as inventory:read.

5. Watch the connection​

  • The partner's Inbound Events tab logs every order the other system sent, grouped as Pending, Processing, Processed, and Failed, with the error and the order it created. A failed event is the first place to look when an order is missing.
  • The partner's Orders tab lists the sales orders it created. They also appear in Orders → Sales Orders with your other channels.
  • Settings → Developer → Webhooks keeps a delivery log for each subscription. A run of failures means the other system isn't accepting events; see Monitor webhook deliveries.

Next steps​

Last verified: