# Logistics Integrations

A logistics integration connects Order Management System to a third-party logistics (3PL) provider — the company that stores and ships your physical goods. Integrations power the [file-based fulfillment round-trip](https://docs.odus.com/docs/guides/order-management/export-and-bulk-fulfill.md) and, where supported, [fully automatic fulfillment](https://docs.odus.com/docs/guides/order-management/automatic-fulfillment.md).

## Supported providers

| Capability            | ShipBob | NextSmartShip |
| --------------------- | ------- | ------------- |
| Order export format   | ✓       | ✓             |
| Bulk fulfill format   | ✓       | ✓             |
| Automatic fulfillment | ✓       | ✓             |

Both providers support [automatic fulfillment](https://docs.odus.com/docs/guides/order-management/automatic-fulfillment.md) — see that guide for how submitted orders flow to your provider and come back fulfilled.

## Connecting a provider

Create an integration from **Settings > Integrations** in the **Orders** view. Switch on **API connection** to let Order Management System talk to the provider's API — that is what reveals the credential fields, and what every live capability depends on: automatic fulfillment, stock levels on the [Inventory](https://docs.odus.com/docs/guides/order-management/inventory.md) page, and shipment updates coming back by webhook. Each provider asks for its own credentials:

* **ShipBob** — an **API Key**, plus the **Environment** (sandbox or production) the key belongs to.
* **NextSmartShip** — a **Client ID** and **Client Secret**. These are the API credentials from your NextSmartShip account; Order Management System exchanges them for a short-lived access token, then reuses that token across submissions until it expires. NextSmartShip has no sandbox, so integrations always run against production.

Credentials are verified against the provider the moment you save, so an incorrect value is reported immediately rather than surfacing later as failed orders.

## Completing the API connection

Shipment updates flow back to Order Management System through a webhook — it is how the system learns that the provider shipped an order and records the fulfillment with its tracking details. How that webhook is connected depends on the provider.

### NextSmartShip

Nothing to do. The webhook is registered with NextSmartShip automatically when you save the integration, and the signature is verified using the Client Secret you already provided.

### ShipBob

After you create an integration with the **API connection** switched on, its detail page shows a **Webhook URL** with a copy button. To connect it:

1. Copy the **Webhook URL** and register it as a webhook endpoint in your ShipBob account.
2. ShipBob issues a signing secret for that webhook. Copy the secret from its webhook settings.
3. Paste it into the integration's **Webhook Secret** field in Order Management System and save.

Order Management System uses the secret to verify that incoming shipment updates genuinely come from ShipBob.

## Product matching

When you [export orders](https://docs.odus.com/docs/guides/order-management/export-and-bulk-fulfill.md) in a provider's format — or when orders are submitted automatically — each item must reference a product the provider can find in its own catalog. Each provider matches products by a different value:

* **ShipBob** matches by **product name** — your product name must match the product name in your ShipBob catalog.
* **NextSmartShip** matches by **SKU** — your product SKU must match the product SKU in NextSmartShip.

This happens on its own and needs no setup. Every product is matched by that value, and it is all you need when the two catalogs already agree.

Where one product differs — the provider knows it under another name or another SKU — map that product. A mapping links one of your SKUs to the value the provider expects, and exports and automatic submissions send the mapped value **for that SKU only**. Every other product keeps being matched by the provider's usual value, so no order is ever left out for want of a mapping.

Mappings are created, edited and removed from the SKU itself, on its page in [Inventory](https://docs.odus.com/docs/guides/order-management/inventory.md#mapping-a-sku-to-a-provider) — the SKU is context there rather than something to re-type, and the stock the mapping unlocks appears on the same page.

note

Removing a mapping is safe for orders: the item simply goes back to being matched by your product name (ShipBob) or your internal SKU (NextSmartShip). Stock reporting is stricter for ShipBob — an unmapped SKU shows no ShipBob stock figure — see [Inventory](https://docs.odus.com/docs/guides/order-management/inventory.md#opening-a-sku).
