> For the complete documentation index, see [llms.txt](https://docs.rishvi.co.uk/linnworks/llms.txt).
> Use it to discover all available pages before exploring further.

# Split Every Macro

Automatically split qualifying Linnworks order items into child orders based on each SKU's Split every extended property, while handling composite items, service lines, split notes, and processed-order tracking.

## Overview

Split Every Macro is an automated order-splitting solution for Linnworks. It divides qualifying order-item quantities into smaller parent and child order groups using the inventory extended property named **Split every**.

The macro processes selected orders supplied through the Linnworks Rule Engine. It checks whether an order has already been processed, excludes service lines from the splitting logic, handles composite items separately, and evaluates normal items against their SKU-level **Split every** values.

When child orders are created, the macro adds internal notes to the parent and child orders to keep the relationship traceable. It also applies the order extended property **OrderSplitMacro = Yes** to prevent the same parent or child order from being processed again.

> Split large order quantities consistently using SKU-level rules while keeping parent and child order relationships traceable in Linnworks.

## Who Should Use Split Every Macro

<Columns cols="2">
  <Card title="Warehouse & Fulfilment Teams" icon="package" horizontal="false" target="_self">
    Teams responsible for picking, packing, and dispatch can use the macro to divide large quantities into smaller and more manageable fulfilment orders.
  </Card>

  <Card title="Operations Managers" icon="sliders" horizontal="false" target="_self">
    Operations managers can define SKU-level split quantities and apply the same order-splitting rules consistently across selected orders.
  </Card>

  <Card title="Integration Administrators" icon="settings" horizontal="false" target="_self">
    Administrators configure the macro, enable it for the Rule Engine, maintain the Split every inventory extended property, and monitor execution logs.
  </Card>

  <Card title="Warehouse Planning Teams" icon="bar-chart-2" horizontal="false" target="_self">
    Planning teams benefit from smaller order groups, clear parent-child references, and reduced manual order splitting.
  </Card>
</Columns>

## Key Features

<Columns cols="2">
  <Card title="SKU-Level Quantity Splitting" icon="layers" horizontal="false" target="_self">
    Splits qualifying item quantities using the Split every inventory extended property configured against each SKU.
  </Card>

  <Card title="Composite Item Handling" icon="boxes" horizontal="false" target="_self">
    Processes composite items before applying the normal Split every logic to non-composite items.
  </Card>

  <Card title="Service Line Exclusion" icon="minus-circle" horizontal="false" target="_self">
    Ignores service lines so shipping, surcharge, and other service items are not included in split calculations.
  </Card>

  <Card title="Parent and Child Notes" icon="edit" horizontal="false" target="_self">
    Adds internal notes showing the child orders created, parent order reference, and item quantities moved.
  </Card>

  <Card title="Processed-Order Tracking" icon="check-circle" horizontal="false" target="_self">
    Marks parent and child orders with OrderSplitMacro = Yes to prevent duplicate processing.
  </Card>

  <Card title="Split Rule Validation" icon="shield-check" horizontal="false" target="_self">
    Skips missing, invalid, non-positive, or unusable Split every values and records the relevant result.
  </Card>
</Columns>

## How Split Every Macro Works

Split Every Macro follows a defined sequence whenever it receives one or more order IDs from the Linnworks Rule Engine.

<Steps>
  <Step title="Step 1: Order retrieval" title-type="p">
    The macro reads each order ID supplied through the `OrderIds` parameter and retrieves the corresponding order details from Linnworks.
  </Step>

  <Step title="Step 2: Processed-order validation" title-type="p">
    The order is checked for the extended property **OrderSplitMacro = Yes**. Orders already marked as processed are skipped.
  </Step>

  <Step title="Step 3: Item classification" title-type="p">
    Service lines are excluded, and the remaining items are separated into composite items and normal items.
  </Step>

  <Step title="Step 4: Composite item processing" title-type="p">
    Composite items are handled first. Depending on the order structure, composite items may remain on the parent order or be moved into child orders.
  </Step>

  <Step title="Step 5: Split every validation" title-type="p">
    Normal items are checked for the inventory extended property named **Split every**. Missing, invalid, or non-positive values are skipped.
  </Step>

  <Step title="Step 6: Split group calculation" title-type="p">
    Eligible item quantities are divided into groups using the configured Split every value. The first group remains on the parent order.
  </Step>

  <Step title="Step 7: Child order creation" title-type="p">
    Additional quantity groups are converted into child order definitions and submitted to Linnworks through the SplitOrder API.
  </Step>

  <Step title="Step 8: Notes and process markers" title-type="p">
    Internal notes are added to the parent and child orders, and all processed orders are marked with **OrderSplitMacro = Yes**.
  </Step>
</Steps>

## Configure the Macro

Once the app is installed, you need to create a macro configuration so the system knows which macro to run and allows it to be selected in the Rule Engine.

This setup can be adjusted anytime based on your operational requirements.

### Steps to Configure

<Tabs>
  <Tab title="Step 1">
    **Go to Apps > Macro Configuration and click + Add new configuration.**

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1779280634617-8ugxallbh2b-pasted-image-1779280624762.png?fm=auto&auto=compress%2Cformat" width="1368" height="568" alt="" priority={true} fetchPriority="high" />
  </Tab>

  <Tab title="Step 2">
    **Select the SplitEveryMacro macro and click Create Configuration.**

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1779280668309-x6sks680ltl-pasted-image-1779280662611.png?fm=auto&auto=compress%2Cformat" width="1430" height="658" alt="" priority={true} fetchPriority="high" />

    This creates a new configuration where the macro can be enabled and used by the Rule Engine.
  </Tab>

  <Tab title="Step 3">
    **In the Macro Configuration screen, add the configuration name.**

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1779280735578-uya29l4nh8-pasted-image-1779280730119.png?fm=auto&auto=compress%2Cformat" width="906" height="754" alt="" />

    This macro uses the selected order IDs provided by the Rule Engine. No additional custom parameter values are required.
  </Tab>

  <Tab title="Step 4">
    **Make sure to enable the macro to continue with the Rule Engine configuration.**

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1779280775494-enc33bppea-pasted-image-1779280770777.png?fm=auto&auto=compress%2Cformat" width="1780" height="38" alt="" />

    <Callout kind="warning" collapsed="false">
      **Note:** If the macro is not enabled, it will not appear in the **Action** value list when setting up the rule.
    </Callout>
  </Tab>

  <Tab title="Step 5">
    **Go to Orders > Rules engine and click + Add new rule.**

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1779280888710-bc937h6otip-pasted-image-1779280884160.png?fm=auto&auto=compress%2Cformat" width="1536" height="680" alt="" />
  </Tab>

  <Tab title="Step 6">
    **Enter the rule name and click Create.**

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1779280905141-ph96ytp2s5e-pasted-image-1779280899702.png?fm=auto&auto=compress%2Cformat" width="400" height="244" alt="" style="width: 400px; height: auto; cursor: pointer; margin: 0 auto;" />
  </Tab>

  <Tab title="Step 7">
    **Click Add new, select Condition, set the condition as required, and save it.**

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1779280946514-e3cd7nbxxoh-pasted-image-1779280941780.png?fm=auto&auto=compress%2Cformat" width="1536" height="358" alt="" />

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1779280979584-wstdsgwwxfc-pasted-image-1779280974808.png?fm=auto&auto=compress%2Cformat" width="900" height="510" alt="" style="width: 900px; height: auto; cursor: pointer; margin: 0 auto;" />

    Use conditions that target orders requiring quantity-based splitting.
  </Tab>

  <Tab title="Step 8">
    **Add the macro action and click Save.**

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1779281025126-t951pjeicuf-pasted-image-1779281019686.png?fm=auto&auto=compress%2Cformat" width="929" height="200" alt="" />

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1779281041416-9zpwpilp487-pasted-image-1779281037156.pngs?fm=auto&auto=compress%2Cformat" width="918" height="368" alt="" />

    In the **Add action** window, enter the **Action name**, for example:

    SplitEveryMacro

    - Set **Action type** to:

      `Execute a macro`
    - In **Action value**, select:

      SplitEveryMacro
    - Click **Save**

    <Callout kind="warning" collapsed="false">
      **Note:** If the macro is not enabled, it will not appear in the **Action** value list when setting up the rule.
    </Callout>
  </Tab>

  <Tab title="Step 9">
    **Review the saved rule setup.**

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1779281107899-dx39dufmi2-pasted-image-1779281094507.png?fm=auto&auto=compress%2Cformat" width="1819" height="752" alt="" />

    - Verify the condition and action are connected correctly
    - Click **Save** in the bottom-right corner to save the rule
  </Tab>
</Tabs>

## Key Benefits

Manually splitting large order quantities can take time and may produce inconsistent results. Split Every Macro applies the configured SKU-level quantity rules automatically to each selected order.

> Reduce manual order splitting, improve fulfilment consistency, and maintain clear parent-child order tracking.

<Columns cols="2">
  <Card title="Automate Order Splitting" icon="zap" horizontal="false" target="_self">
    Automatically divides eligible item quantities into parent and child order groups.
  </Card>

  <Card title="Apply SKU-Level Rules" icon="sliders" horizontal="false" target="_self">
    Uses each item's Split every inventory extended property to determine the maximum quantity per group.
  </Card>

  <Card title="Handle Composite Orders" icon="boxes" horizontal="false" target="_self">
    Applies dedicated behaviour for single-composite, multiple-composite, and mixed composite orders.
  </Card>

  <Card title="Improve Order Traceability" icon="edit" horizontal="false" target="_self">
    Adds internal notes to parent and child orders showing how item quantities were moved.
  </Card>

  <Card title="Prevent Duplicate Processing" icon="check-circle" horizontal="false" target="_self">
    Uses the OrderSplitMacro process marker to prevent parent and child orders from being processed repeatedly.
  </Card>

  <Card title="Reduce Fulfilment Errors" icon="shield-check" horizontal="false" target="_self">
    Applies consistent split calculations and excludes service lines from item quantity processing.
  </Card>
</Columns>

## Usage of App

Split Every Macro is triggered through the **Linnworks Rule Engine** to split qualifying order-item quantities automatically.

### Execution

<Card title="Trigger via Rule Engine" icon="play" horizontal="false" target="_self">
  Call the SplitEveryMacro action through the Rule Engine with the required `OrderIds`. No additional custom parameter values are required once the rule is active.
</Card>

### Outcome

When the macro runs against an order, it:

<Steps>
  <Step title="Checks processed status" title-type="p">
    Confirms that the order has not already been marked with **OrderSplitMacro = Yes**.
  </Step>

  <Step title="Classifies order items" title-type="p">
    Excludes service lines and separates the remaining items into composite and normal item groups.
  </Step>

  <Step title="Handles composite items" title-type="p">
    Applies the required parent and child order behaviour based on the number and combination of composite items.
  </Step>

  <Step title="Reads Split every values" title-type="p">
    Retrieves the Split every inventory extended property for each normal item.
  </Step>

  <Step title="Builds quantity groups" title-type="p">
    Divides eligible item quantities into groups based on the configured Split every value.
  </Step>

  <Step title="Creates child orders" title-type="p">
    Keeps the first group on the parent order and creates child orders for the remaining groups.
  </Step>

  <Step title="Adds notes and markers" title-type="p">
    Writes internal relationship notes and marks the parent and child orders as processed.
  </Step>
</Steps>

## Input Parameters

Split Every Macro requires the following input:

| Parameter    | Required | Description                                                         |
| ------------ | -------- | ------------------------------------------------------------------- |
| **OrderIds** | Yes      | The Linnworks order IDs to process. Passed through the Rule Engine. |

No additional custom values are required in the Macro Configuration screen.

The following rules and values are configured within Linnworks inventory and the macro logic:

| Setting                           | Required    | Description                                                                              |
| --------------------------------- | ----------- | ---------------------------------------------------------------------------------------- |
| **Split every**                   | Conditional | Inventory extended property that defines the maximum quantity per order group for a SKU. |
| **OrderSplitMacro**               | Automatic   | Order extended property used to mark processed parent and child orders.                  |
| **OrderSplitMacro value**         | Automatic   | The processed marker value is **Yes**.                                                   |
| **OrderSplitMacro property type** | Automatic   | The processed marker is stored with type **Order**.                                      |

## Split Rules

The macro applies the following rules when evaluating orders:

| Order or Item Condition                       | Macro Behaviour                                                                   |
| --------------------------------------------- | --------------------------------------------------------------------------------- |
| Order already has **OrderSplitMacro = Yes**   | Skips the order.                                                                  |
| Service line                                  | Excludes the line from splitting.                                                 |
| Single composite item only                    | Does not split and marks the order as processed.                                  |
| Composite and normal items                    | Splits composite items into child orders first.                                   |
| Multiple composite items only                 | Keeps the first composite item on the parent and splits the remaining composites. |
| Missing **Split every** property              | Does not split the item.                                                          |
| Invalid or non-positive **Split every** value | Skips the item and adds an internal note.                                         |
| Quantity lower than **Split every**           | Skips the item and adds an internal note.                                         |
| Valid quantity and **Split every** value      | Splits the quantity into the required parent and child groups.                    |

## Split Group Example

When an item has a quantity of **10** and its **Split every** value is **3**, the macro calculates the groups as follows:

| Group   | Quantity | Result                      |
| ------- | -------: | --------------------------- |
| Group 1 |        3 | Remains on the parent order |
| Group 2 |        3 | Moved to a child order      |
| Group 3 |        3 | Moved to a child order      |
| Group 4 |        1 | Moved to a child order      |

The final split pattern is:

`3, 3, 3, 1`

## Best Practices

> Accurate Split every values and controlled Rule Engine conditions are essential for reliable order splitting.

<Columns cols="2">
  <Card title="Configure relevant SKUs" icon="package" horizontal="false" target="_self">
    Add the Split every inventory extended property only to SKUs that should use quantity-based splitting.
  </Card>

  <Card title="Use positive whole numbers" icon="calculator" horizontal="false" target="_self">
    Ensure every Split every value is a valid positive whole number.
  </Card>

  <Card title="Use targeted rule conditions" icon="sliders" horizontal="false" target="_self">
    Configure the Rule Engine to select only orders that should be evaluated by the macro.
  </Card>

  <Card title="Test composite scenarios" icon="boxes" horizontal="false" target="_self">
    Test single-composite, multiple-composite, and mixed-item orders before enabling the macro at scale.
  </Card>

  <Card title="Review parent and child notes" icon="edit" horizontal="false" target="_self">
    Use the generated internal notes to verify which items and quantities were moved.
  </Card>

  <Card title="Monitor processed markers" icon="bar-chart-2" horizontal="false" target="_self">
    Confirm that processed parent and child orders contain the OrderSplitMacro extended property.
  </Card>
</Columns>

## FAQ

**How is Split Every Macro triggered?**

The macro is triggered through the Linnworks Rule Engine. Matching order IDs are passed automatically through the `OrderIds` parameter.

**Does the macro require custom configuration values?**

No. The macro configuration does not require additional custom parameter values.

**Where is the split quantity configured?**

The quantity is configured against each relevant inventory item using the extended property named **Split every**.

**What value should Split every contain?**

The value must be a positive whole number.

**What happens when Split every is missing?**

The item is not split.

**What happens when Split every is invalid?**

Invalid, non-numeric, or non-positive values are skipped, and an internal note is added where applicable.

**What happens when the item quantity is lower than Split every?**

The item is not split, and the result is recorded in an internal order note.

**Does the macro process service lines?**

No. Service lines are excluded from the split calculations.

**How are composite items handled?**

Composite items are processed before normal items. The exact behaviour depends on whether the order contains one composite, multiple composites, or a mix of composite and normal items.

**What happens to a single composite-only order?**

The order is not split and is marked as processed.

**What happens when an order contains composite and normal items?**

The composite items are split into child orders before normal items are evaluated using the Split every property.

**Which quantity remains on the parent order?**

The first calculated quantity group remains on the parent order.

**How are the remaining groups handled?**

Each additional group is used to create a child order.

**How does the macro prevent duplicate processing?**

It checks for the order extended property **OrderSplitMacro = Yes** before processing.

**Are child orders marked as processed?**

Yes. Created child orders are marked with **OrderSplitMacro = Yes**.

**Are notes added to the orders?**

Yes. The parent order receives a split summary, and child orders receive notes containing the parent order reference and moved item details.

**What happens when no items qualify for splitting?**

The order is marked as processed so it is not evaluated repeatedly.

## Legal Information

- **Privacy Policy:** [https://rishvi.co.uk/privacy-policy/](https://rishvi.co.uk/privacy-policy/)
- **Terms and Conditions:** [https://rishvi.co.uk/terms-conditions/](https://rishvi.co.uk/terms-conditions/)

Please review these pages to understand how data is handled and the terms governing the use of this application.

## Summary

Split Every Macro automates quantity-based Linnworks order splitting using each SKU's **Split every** inventory extended property.

Once connected to the Rule Engine, the macro checks processed status, excludes service lines, handles composite items, validates split values, calculates quantity groups, creates child orders, and records the parent-child relationship through internal notes.

<Columns cols="2">
  <Card title="Automated quantity splitting" icon="layers" horizontal="false" target="_self">
    Eligible item quantities are divided automatically using SKU-level Split every values.
  </Card>

  <Card title="Composite-aware processing" icon="boxes" horizontal="false" target="_self">
    Composite items are handled separately before normal item split rules are applied.
  </Card>

  <Card title="Traceable child orders" icon="edit" horizontal="false" target="_self">
    Parent and child orders receive internal notes showing the split relationship and moved quantities.
  </Card>

  <Card title="Duplicate processing prevention" icon="check-circle" horizontal="false" target="_self">
    Parent and child orders are marked with OrderSplitMacro = Yes after processing.
  </Card>
</Columns>

For orders that do not split as expected, review the Rule Engine and macro logs, confirm that the order is not already marked as processed, and verify that the relevant SKUs contain valid positive Split every values.
