# Set up WMS for a 3PL
URL: https://support.starshipit.com/articles/14700000000032-set-up-wms-for-a-3pl
Canonical: https://support.starshipit.com/articles/14700000000032-set-up-wms-for-a-3pl
Markdown: https://support.starshipit.com/articles/14700000000032-set-up-wms-for-a-3pl.md
Updated: 2026-08-26

> For the complete documentation index, see [llms.txt](https://support.starshipit.com/llms.txt).

> Choose a shared or separate WMS setup, map child Starshipit accounts to WMS clients, and verify that each client's orders, products and stock are scoped correctly.

Set up Starshipit WMS to fulfil orders for multiple client brands from one warehouse. You can manage clients inside one shared WMS instance or give each client a separate WMS instance.

## Choose a WMS structure

Choose your structure before connecting client accounts. Moving a client later may require you to migrate products, stock and open warehouse work.

| | Shared WMS instance | Separate WMS instances |
| --- | --- | --- |
| **Operator experience** | Work across clients in one interface | Switch instances to work for another client |
| **Client boundary** | WMS client records scope products, inventory, orders and user access | Each instance has its own products, inventory, orders, locations and users |
| **Pick runs** | Can include orders from more than one client | Stay within one client instance |
| **Warehouse layout** | Locations and zones are shared | Configure locations and zones in each instance |
| **Client access** | Limit users to selected clients, but some shared configuration may remain visible | Complete workspace isolation |
| **SKU rules** | A SKU identifies one product in the shared catalogue | The same SKU can represent different products in different instances |
| **Best for** | Central warehouse teams that share processes and need one operational view | Clients that require complete isolation or use conflicting product catalogues |

:::important
Zones organise your physical warehouse layout. They do not separate 3PL clients. In a shared instance, use **Clients** and client access assignments to keep client-owned records separate.
:::

## Before you begin

For a shared WMS instance, you need:

- A Starshipit parent account and a [child account for each client brand or source account](/articles/360001575375-set-up-a-child-account).
- Starshipit WMS enabled and initially configured on the account that will host the shared instance. See [Set up Starshipit WMS](/articles/14700000000002-how-to-set-up-starshipit-wms).
- The **Admin** role or the `settings.manage` permission in the shared WMS instance.
- The numeric Starshipit account ID for each child account. Open WMS while signed in to the child account and find the ID in the account selector at the top of the page.
- A unique SKU across the shared WMS catalogue when two client products are different. If two clients use the same SKU for different products, use separate WMS instances or change one client's SKU before importing products.

Connect each client's ecommerce stores and couriers to that client's child Starshipit account before you begin importing orders.

## Set up clients in one shared WMS instance

### Point each child account to the shared instance

Complete these steps while signed in to the child Starshipit account:

1. Open WMS.
2. Go to **System > Settings**.
3. Select **WMS Integration**.
4. Turn on **Enable WMS integration**.
5. Under **WMS instance override**, select the account that hosts the shared WMS instance.
6. Select **Save Integration Settings**.

The override tells Starshipit to send that child account's WMS order events to the shared instance. Repeat these steps for every child account that should use the shared warehouse.

### Add the client mapping

Add the mapping before the first import when you want to control the client name shown in WMS:

1. Open the shared WMS instance.
2. Go to **Setup > Clients**.
3. Enter the **Client name** your warehouse team should see.
4. Enter the child account's numeric **Source account ID**. Do not enter the shared WMS account ID.
5. Enter a **Source name** if you want the source-account badge to show a label as well as its ID. Use the child account's Starshipit name for consistency.
6. Select **Add**.
7. Confirm the new client is **Active** and the correct source account appears beside it.

![The WMS Clients page showing a default client and an active mapped child account](/uploads/articles/starshipit-wms/web/warehouse-configuration/clients.png)

The **Default** record belongs to the account hosting the shared WMS instance. Activity from that account stays with the default client. You cannot delete the default record.

If one warehouse client sends activity from several child Starshipit accounts, add each source account using the exact same **Client name**. WMS maps those source accounts to one client record.

WMS can also create the mapping automatically when the first order arrives with a valid WMS instance override. After the first import, open **Setup > Clients** and check that the generated client name and source account are correct.

### Assign user access

Client mapping controls record ownership. User access is configured separately:

1. Go to **System > Roles & Permissions**.
2. Edit the user's role.
3. Under **Client Access**, select **Selected clients**.
4. Select the clients that user can work with.
5. Save the role, then ask the user to refresh WMS.

See [Set up WMS users, roles and client access](/articles/14700000000036-starshipit-wms-users-roles-permissions-client-access) for role and permission details.

:::important
Client-scoped access is not complete workspace isolation. Shared locations and some account-wide configuration may remain visible when the user's role permits it. Use separate WMS instances when a client must not see any shared warehouse configuration.
:::

### Configure the shared warehouse

Create locations and zones for the physical warehouse, not for each client. Then import or create products and stock for each mapped client.

Use clear location names when areas are physically dedicated to a client. See [Set up warehouse locations and work areas](/articles/14700000000033-starshipit-wms-locations-and-warehouse-setup).

## Set up separate WMS instances

Use a separate instance when clients need complete isolation or when the same SKU represents different products for different clients.

For each child account:

1. Open WMS while signed in to that child account.
2. Go to **System > Settings > WMS Integration**.
3. Turn on **Enable WMS integration**.
4. Set **WMS instance override** to **No override (use current account)**.
5. Select **Save Integration Settings**.
6. Complete the initial WMS setup for that account.
7. Configure its locations, products, users and workflow settings.

Each instance has its own default client record and operates independently. Orders from different instances cannot be combined into one pick run.

## Verify the client setup

Import one order from each child account before going live. In the shared WMS instance, confirm that:

- **Setup > Clients** shows the expected source account under the correct active client.
- The order appears under the correct client in **Starshipit Orders**.
- Imported products belong to the expected client, or are deliberately shared.
- Inventory and reports show the correct client when you apply a client filter.
- A user with **Selected clients** access can see the expected client records and cannot see another client's client-aware records.
- Picking and shipping the test order writes the result back to the correct child Starshipit account.

## Troubleshoot client setup

| Problem | What to check |
| --- | --- |
| **Source account ID is required** | Enter the numeric child Starshipit account ID. Do not enter an account name or the shared WMS account ID. |
| **Source account is not connected** | Open WMS while signed in to the child account, then retry the mapping from the shared instance. |
| An order appears under the default client | Confirm the child account has the shared account selected under **WMS instance override**, then check its source account mapping under **Setup > Clients**. |
| WMS created an unexpected client automatically | Check which child account sent the first order and confirm its account name and instance override. Contact Starshipit support before unmapping a client that already has warehouse history. |
| A child user can see more than expected | Check both the user's role permissions and **Client Access**. Use a separate WMS instance if shared configuration must also be hidden. |
| A product import reports duplicate SKU ownership | In a shared instance, one SKU identifies one catalogue product. Confirm whether the product should be shared, change one client's SKU, or use separate instances. |

## FAQ

<!-- faq:start -->

<!-- faq:question -->Can a client sign in and see only their own WMS records?<!-- /faq:question -->

Yes. In a shared instance, assign the user a suitable role and select only that client under **Client Access**. Some shared warehouse configuration may still be visible. Use a separate WMS instance for complete isolation.

<!-- faq:question -->Can two clients use the same SKU?<!-- /faq:question -->

Yes, when the SKU refers to one deliberately shared product. A shared WMS catalogue cannot hold two different products with the same SKU. Use different SKUs or separate WMS instances when the products are different.

<!-- faq:question -->Do I need to create a client before importing its first order?<!-- /faq:question -->

No. WMS can create a client mapping when the first order arrives with a valid WMS instance override. Create it manually when you want to choose the client name and verify the mapping before importing orders.

<!-- faq:question -->What is the difference between a client and a zone?<!-- /faq:question -->

A client identifies who owns products, stock, orders and client-aware access. A zone groups physical warehouse locations. Use zones to organise warehouse work, not as the client ownership boundary.

<!-- faq:end -->
