# Automate warehouse work in WMS
URL: https://support.starshipit.com/articles/14700000000039-automate-warehouse-work-in-wms
Canonical: https://support.starshipit.com/articles/14700000000039-automate-warehouse-work-in-wms
Markdown: https://support.starshipit.com/articles/14700000000039-automate-warehouse-work-in-wms.md
Updated: 2026-07-21

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

> Create WMS automations to hold or release new orders, assign ready jobs, and build scheduled pick batches with safe filters, timing, and monitoring.

Use Starshipit WMS automations to apply order holds, release eligible orders, assign ready jobs, or create pick batches without repeating the same warehouse task manually.

:::important
WMS automations are warehouse workflows inside Starshipit WMS. They are separate from shipping automations configured in Starshipit.
:::

## Before you begin

- Make sure orders are importing from Starshipit into WMS.
- Open **System > Roles & Permissions** to confirm your access.
- For tag-driven holds, add or activate a hold reason under **System > Settings > Orders > Order Hold Reasons** before creating the automation.
- For automatic batches, make sure your Starshipit account has a recognised timezone. WMS uses this timezone for the operating window.

| Task | Required WMS permissions |
|---|---|
| View **System > Automations** | **Settings view** |
| Create, edit, enable, or pause a tag-driven hold | **Settings management** |
| Create, edit, or enable automatic release | **Settings management** and **Fulfillment management** |
| Pause automatic release | **Settings management** |
| Create, edit, enable, or pause automatic batches | **Settings view** and **Fulfillment management** |
| Create, edit, enable, or pause automatic job assignment | **Settings management** and permission to assign jobs |

## Understand when automations run

WMS supports four automation recipes. Only active recipes can start new runs.

| Recipe | When WMS evaluates it | Result |
|---|---|---|
| **Hold orders by tag** | Once, when WMS imports a new order | Places a matching pending order on hold |
| **Auto-release new orders** | Once, after a new order notification imports the order into WMS | Fully allocates and releases an eligible pending order to picking |
| **Create automatic batches** | Repeatedly during the daily operating window | Groups eligible pending orders into pick batches |
| **Assign ready jobs** | When the scheduled automation checks for eligible work | Assigns an eligible ready, unassigned job to the least-loaded selected person |

Tag-driven holds run first. If a hold recipe matches, it takes precedence over automatic order routing and automatic release. If no hold recipe matches, automatic order routing takes precedence over automatic release.

The two new-order recipes are not retroactive. Enabling one does not evaluate orders that were already imported, and changing an order's tags later does not run it again. Automatic batches are different: after you enable one, it can include existing pending orders that meet its filters and allocation requirements.

## Create an automation

1. Go to **System > Automations**.
2. Select **New automation**.
3. Select a **Recipe**.
4. Enter a clear **Name** that identifies the workflow.
5. Configure the recipe settings.
6. Leave **Enable after saving** off if you want to review or test the configuration first.
7. Select **Save automation**.

The automation appears as **Active** or **Paused** on the Automations dashboard.

## Configure each recipe

### Hold orders by tag

Use this recipe for orders that should not enter fulfilment immediately, such as pre-orders or orders that require review.

1. Enter the exact **Order tag** used by your ecommerce workflow.
2. Select an active **Hold reason**.
3. Choose whether to enable the automation after saving.

Tag matching is exact and case-insensitive. For example, `Pre-Order` matches `pre-order`, but it does not match `pre-order-july`.

WMS evaluates the recipe once when a new order is imported. Releasing the hold later does not apply it again. If the configured hold reason becomes inactive, the automation needs attention and cannot be enabled again until you select an active reason.

### Auto-release new orders

Use this recipe when eligible new orders should move directly from **Pending** to picking.

1. Enter an **Order tag** to limit the recipe, or leave it blank to match every new order notification.
2. Choose whether to enable the automation after saving.

An order is released only when WMS can allocate the full order. The order stays **Pending** when it:

- Has an active hold.
- Does not have enough pick-face inventory.
- Can only be partially allocated.
- Requires kitting.
- Is no longer pending when the automation runs.

Automatic release is a one-shot recipe. WMS does not check the order again after stock or order conditions change. Resolve the issue, then release the order manually if it is ready.

:::important
You cannot enable automatic release while automatic order routing is enabled for the account. If routing is enabled after an automatic-release recipe is active, the recipe shows **Waiting for routing** and does not run.
:::

### Assign ready jobs

Use this recipe to distribute ready, unassigned work across a selected group without assigning each job manually.

1. Select the **Job types** that the automation can assign.
2. Select the eligible **Roles**.
3. Under **Available for assignment**, select the active users who can receive work.
4. Optionally set **Maximum unfinished jobs per user** to stop the automation assigning more work to someone who has reached their capacity.
5. Choose whether to enable the automation after saving.

When the automation runs, WMS checks the selected user's client access and job permissions, then assigns work to the least-loaded eligible person. If no selected person is available, or everyone has reached the maximum unfinished-job limit, the job stays unassigned.

### Create automatic batches

Use this recipe to build pick batches from fully allocatable pending orders during a defined daily window.

| Setting | How it works |
|---|---|
| **Carrier** | Optional exact match against the carrier code or display name |
| **Service code** | Optional exact match against the carrier service code |
| **Order tag** | Optional exact tag match |
| **Target batch size** | Creates full batches when this many eligible orders are ready; enter 2 to 100 |
| **Maximum wait (minutes)** | Creates a smaller batch after the oldest eligible order has waited this long; enter 1 to 1,440 |
| **Window starts** and **Window ends** | Defines the daily period when WMS can create batches; both times must be on the same day |
| **Timezone** | Uses the timezone from your Starshipit account when you create the recipe |

Filled filters are combined, so an order must match every filter you enter. All filter matching is exact and case-insensitive.

During the operating window, WMS checks the recipe about once a minute. It creates full batches as soon as the target size is available. If fewer orders are ready, it waits until the oldest eligible order reaches the maximum wait, then creates a smaller batch.

Only pending orders without an active hold are considered. Each order must have enough stock for full allocation. Held, unallocatable, and non-matching orders remain pending for a later check.

## Review run history and outcomes

The **Latest run** column shows the most recent recorded run for each automation. Select the linked order, batch, or job to investigate the outcome. You need fulfilment view access to see these links.

| Latest run | What it means |
|---|---|
| **Never run** | No matching new-order recipe has acted yet, an automatic batch has not had a group ready to create, or no ready job has been assigned |
| **Run queued** | WMS has queued the run, including a retry when a temporary error occurred |
| **Running** | The action is in progress |
| **Last run succeeded** | WMS placed the hold, released the order, created the batch, or assigned the job |
| **Last run skipped** | The recipe matched, but the order or job could not be acted on, such as when it was already held, lacked stock, was no longer pending, or no eligible person was available |
| **Last run failed** | WMS could not complete the action |

The outcome below the status explains common results, such as insufficient pick-face stock, partial allocation, an existing hold, or a created batch. A scheduled batch check that is still waiting for enough eligible orders does not create a run, so **Latest run** may remain unchanged.

Use the **Needs attention** filter to find automations with a skipped or failed latest run, an inactive hold reason, or an automatic-release conflict with routing.

## Test and roll out safely

1. Save the automation with **Enable after saving** off.
2. Review the recipe name, filters, permissions, hold reason, and timing.
3. For automatic release or automatic batches, add a unique test tag so the first run affects only test orders. For automatic job assignment, select a small test group and one job type.
4. Create a test order that will not be shipped to a customer. Make sure it has the expected tag and enough pick-face stock for the workflow you are testing.
5. Enable the automation, then import the test order. For an automatic batch, run the test during its operating window and use a small target size. For automatic job assignment, create or release a test job and confirm it is assigned to the expected person.
6. Check **Latest run**, its outcome, and the linked order or batch.
7. Pause the automation before widening its filters or removing the test tag.
8. Re-enable it when the production configuration has been reviewed.

Avoid overlapping recipes that can match the same order. If multiple hold recipes match, the first can place the hold while later recipes are skipped. If multiple automatic-release recipes match, one can release the order while later recipes find that it is no longer pending.

## Pause or change an automation

Use the switch in the **Actions** column to move an automation between **Active** and **Paused**. Select **Edit** to change its name or configuration.

Pausing prevents new matches or scheduled checks from starting. It does not undo holds, releases, allocations, or batches already created. A run that is already queued or in progress may still finish.

When you re-enable a tag-driven hold or automatic-release recipe, it applies only to later new-order notifications. When you re-enable an automatic batch, WMS can consider existing eligible pending orders during the next operating-window check. When you re-enable automatic job assignment, WMS can consider eligible ready, unassigned jobs during its next scheduled check.

## Troubleshooting

| Problem | What to check |
|---|---|
| You cannot open **Automations** | Confirm your role has settings view access. |
| **New automation** or a recipe is unavailable | Check the required permissions. For holds, add an active hold reason. For batches, confirm the Starshipit account timezone is available. |
| A hold was not applied | Confirm the recipe was active before import, the order was pending, and the tag was present at import. Tag matching is exact and case-insensitive. |
| Automatic release did not run | Check for a matching hold recipe, automatic order routing, the optional tag filter, and whether the order came from a new-order notification. |
| Automatic release was skipped | Review the outcome for a hold, insufficient pick-face stock, partial allocation, kitting, or a changed order status. Fix the condition and release the order manually. |
| An automatic batch was not created | Confirm the current time is inside the operating window. Check that enough pending orders match every filter, have no hold, and can be fully allocated. If the target size is not ready, WMS waits for the maximum wait. |
| An automation shows **Needs attention** | Review **Latest run** and its outcome. Also check for an inactive hold reason or an automatic-release conflict with routing. |
| A tag or carrier filter matched no orders | Remove extra spaces and compare the complete value. Matching ignores case but does not match partial text. |
| A ready job was not assigned | Confirm the recipe is active, the job type is selected, the job is unassigned and ready, and at least one selected user has the required role, permissions, client access, and remaining capacity. |

## Related articles

- [Starshipit WMS orders and allocation](/articles/14700000000010-starshipit-wms-orders-and-allocation)
- [Picking orders](/articles/14700000000011-picking-orders)
- [WMS settings reference](/articles/14700000000031-wms-settings-reference)
