> 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.

# Shopify Customisation to Notes

Automatically extract order note details, line item SKU/title information, and usable customization properties from Shopify order XML into Linnworks order notes. Add Despatch Date as an order extended property when missing.

## Overview

Shopify Customisation to Notes is an automated XML data extraction solution for Linnworks. It reads selected Shopify order XML records and copies useful order notes, line item details, and customisation properties into a readable Linnworks order note.

Shopify XML can contain important fulfilment information such as personalised text, engraving details, product options, and other line item properties. Without automation, warehouse and fulfilment teams may need to inspect the XML manually to find these values.

The macro also checks whether the order already contains a **Despatch Date** extended property. When the property is missing and the order has a Despatch By Date, the macro creates the extended property automatically.

Orders already containing a note created by this macro are skipped to prevent duplicate extracted notes.

> Keep Shopify order notes and customisation details visible in Linnworks while reducing manual XML checks during fulfilment.

## Who Should Use Shopify Customisation to Notes

<Columns cols="2">
  <Card title="Warehouse & Fulfilment Teams" icon="package" horizontal="false" target="_self">
    Teams responsible for picking, production, packing, and dispatch can view Shopify customisation details directly from the Linnworks order notes.
  </Card>

  <Card title="Personalisation Teams" icon="edit" horizontal="false" target="_self">
    Teams processing engraved, printed, personalised, or customised products can access relevant customer selections without manually opening the order XML.
  </Card>

  <Card title="Integration Administrators" icon="settings" horizontal="false" target="_self">
    Administrators configure the macro, enable it for the Rule Engine, define suitable order conditions, and monitor execution logs.
  </Card>

  <Card title="Operations & Customer Service Teams" icon="bar-chart-2" horizontal="false" target="_self">
    Operations and customer service teams benefit from clearer access to order notes, line item information, and Shopify customisation values.
  </Card>
</Columns>

## Key Features

<Columns cols="2">
  <Card title="Shopify XML Note Extraction" icon="file-text" horizontal="false" target="_self">
    Reads the XML order note and includes it when the value matches the expected order number format.
  </Card>

  <Card title="Line Item Identification" icon="package" horizontal="false" target="_self">
    Adds each qualifying line item's SKU and title to the generated Linnworks order note.
  </Card>

  <Card title="Customisation Property Extraction" icon="sliders" horizontal="false" target="_self">
    Extracts usable line item property names and values from Shopify order XML.
  </Card>

  <Card title="Despatch Date Creation" icon="calendar" horizontal="false" target="_self">
    Adds a Despatch Date order extended property when it is missing and a Despatch By Date is available.
  </Card>

  <Card title="Duplicate Processing Prevention" icon="check-circle" horizontal="false" target="_self">
    Skips orders already containing a note created by Add Note From ShopifyXMLDataExtract macro.
  </Card>

  <Card title="Property Filtering" icon="filter" horizontal="false" target="_self">
    Excludes image-upload, Customily, hidden, empty, and system-related property values from the generated note.
  </Card>
</Columns>

## How Shopify Customisation to Notes Works

Shopify Customisation to Notes runs through a defined sequence every time it processes one or more selected orders. The macro is triggered through the Linnworks Rule Engine and receives the relevant order IDs automatically.

<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 Linnworks order details.
  </Step>

  <Step title="Step 2: Despatch Date validation" title-type="p">
    The macro checks whether the order already contains a **Despatch Date** extended property.
  </Step>

  <Step title="Step 3: Despatch Date creation" title-type="p">
    If the property is missing and the order has a Despatch By Date, the macro creates the **Despatch Date** order extended property using the format `yyyy MMM dd`.
  </Step>

  <Step title="Step 4: Duplicate-processing check" title-type="p">
    Existing order notes are checked for a note created by **Add Note From ShopifyXMLDataExtract macro**. Previously processed orders are skipped.
  </Step>

  <Step title="Step 5: XML retrieval and parsing" title-type="p">
    The macro retrieves all available XML records attached to the order and parses each record where possible.
  </Step>

  <Step title="Step 6: Order note extraction" title-type="p">
    The XML order note is checked and included only when it matches the expected order number pattern.
  </Step>

  <Step title="Step 7: Line item processing" title-type="p">
    Each `LineItem` node is read, and the SKU and title are added to the generated note.
  </Step>

  <Step title="Step 8: Property filtering" title-type="p">
    Line item properties are evaluated, and empty, image-upload, Customily, hidden, and system-style values are excluded.
  </Step>

  <Step title="Step 9: Order note creation" title-type="p">
    When at least one line item contains a Properties node, the macro creates a new non-internal Linnworks order note containing the extracted details.
  </Step>

  <Step title="Step 10: Existing note handling" title-type="p">
    Previous order notes are marked as internal, except where an existing note matches the extracted XML order note.
  </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/1779254427126-xnza8d4jt7f-pasted-image-1779254422343.png?fm=auto&auto=compress%2Cformat" width="1368" height="568" alt="" priority={true} fetchPriority="high" />
  </Tab>

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

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1779344498364-mx5hg4z72u-pasted-image-1779344493615.png?fm=auto&auto=compress%2Cformat" width="1195" height="550" 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/1779344527711-opmny2w1cf-pasted-image-1779344523936.png?fm=auto&auto=compress%2Cformat" width="715" height="630" alt="" />

    This macro uses the selected order IDs provided by the Rule Engine.

    The following parameters are available in the macro signature:

    - **xmlnodelist**
    - **dynamicFields**

    In the current macro logic, **xmlnodelist** and **dynamicFields** are not used. The macro processes the selected order IDs passed by the Rule Engine.
  </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/1779344583165-4menx37n0ma-pasted-image-1779344579461.png?fm=auto&auto=compress%2Cformat" width="1492" height="30" 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/1779255464957-si7u81jpj-pasted-image-1779255459336.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/1779344664449-91ccs7q1e3f-pasted-image-1779344659289.png?fm=auto&auto=compress%2Cformat" width="318" height="186" alt="" style="width: 318px; 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/1779255549614-n5fdqtc3fcl-pasted-image-1779255545314.png?fm=auto&auto=compress%2Cformat" width="1536" height="358" alt="" style="width: 1536px; height: auto; cursor: pointer;" />

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

    Choose the condition that identifies the Shopify orders where XML customization details should be extracted into the order notes.
  </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/1779344733921-dzx1t3prtxd-pasted-image-1779344730621.png?fm=auto&auto=compress%2Cformat" width="641" height="139" alt="" />

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

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

    `ShopifyCustomizationToNotes`

    - Set **Action type** to:

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

      `Shopify Customization To Notes`
    - 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/1779345016983-7i7n199wjcl-pasted-image-1779345013033.png?fm=auto&auto=compress%2Cformat" width="1528" height="700" 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 inspecting Shopify order XML can slow down fulfilment and increase the chance of missing important product customisation details. Shopify Customisation to Notes makes this information directly available within the Linnworks order.

> Reduce manual XML checks, improve customisation visibility, and make important Shopify order details easier to access during fulfilment.

<Columns cols="2">
  <Card title="Reduce Manual XML Checks" icon="trending-down" horizontal="false" target="_self">
    Removes the need to manually inspect Shopify XML to find qualifying order notes and line item properties.
  </Card>

  <Card title="Improve Customisation Visibility" icon="edit" horizontal="false" target="_self">
    Adds useful customisation details directly to the Linnworks order notes.
  </Card>

  <Card title="Support Accurate Fulfilment" icon="check-circle" horizontal="false" target="_self">
    Makes personalised text and other qualifying product options easier for fulfilment teams to locate.
  </Card>

  <Card title="Add Despatch Date Automatically" icon="calendar" horizontal="false" target="_self">
    Creates the Despatch Date extended property when it is missing and the order contains a Despatch By Date.
  </Card>

  <Card title="Avoid Duplicate Notes" icon="shield-check" horizontal="false" target="_self">
    Skips orders that already contain a note created by this macro.
  </Card>

  <Card title="Keep Notes Focused" icon="filter" horizontal="false" target="_self">
    Filters image-upload, Customily, hidden, empty, and system-related property values from the final note.
  </Card>
</Columns>

## Usage of App

Shopify Customisation to Notes is triggered through the **Linnworks Rule Engine** to extract Shopify XML details into order notes automatically.

### Execution

<Card title="Trigger via Rule Engine" icon="play" horizontal="false" target="_self">
  Call the Shopify Customization To Notes macro through the Rule Engine with the required `OrderIds`. The `xmlnodelist` and `dynamicFields` parameters are present in the macro signature but are not used by the current logic.
</Card>

### Outcome

When the macro runs against an order, it:

<Steps>
  <Step title="Checks Despatch Date" title-type="p">
    Determines whether the order already contains a Despatch Date extended property and creates it when required.
  </Step>

  <Step title="Checks previous processing" title-type="p">
    Reviews existing order notes to determine whether the macro has already processed the order.
  </Step>

  <Step title="Reads Shopify XML" title-type="p">
    Retrieves and parses the XML records associated with the selected Linnworks order.
  </Step>

  <Step title="Extracts qualifying order details" title-type="p">
    Reads the matching XML order note, line item SKUs, titles, and usable property values.
  </Step>

  <Step title="Filters unwanted properties" title-type="p">
    Removes empty, image-upload, Customily, hidden, and system-style values from the extracted content.
  </Step>

  <Step title="Creates a Linnworks order note" title-type="p">
    Saves the extracted details as a non-internal note created by **Add Note From ShopifyXMLDataExtract macro**.
  </Step>
</Steps>

## Input Parameters

Shopify Customisation to Notes contains the following parameters:

| Parameter         | Required | Used by Current Logic | Description                                                         |
| ----------------- | -------- | --------------------- | ------------------------------------------------------------------- |
| **OrderIds**      | Yes      | Yes                   | The Linnworks order IDs to process. Passed through the Rule Engine. |
| **xmlnodelist**   | Present  | No                    | Exists in the macro signature but is not used in the current logic. |
| **dynamicFields** | Present  | No                    | Exists in the macro signature but is not used in the current logic. |

The following behaviour is built into the macro:

| Setting                           | Description                                                                              |
| --------------------------------- | ---------------------------------------------------------------------------------------- |
| **Processed note creator**        | `Add Note From ShopifyXMLDataExtract macro`                                              |
| **Generated note visibility**     | The newly created extracted note is saved with `Internal = false`.                       |
| **Despatch Date format**          | The extended property is formatted as `yyyy MMM dd`.                                     |
| **Line item search path**         | The macro searches using `//Order/LineItems/LineItem`.                                   |
| **Order note creation condition** | A generated note is created only when at least one line item contains a Properties node. |
| **Existing note handling**        | Previous notes are marked internal unless a note matches the extracted XML order note.   |

## Property Values Skipped by the Macro

The macro excludes a property when its value is empty or its name starts with one of the following values:

| Excluded Property Prefix    |
| --------------------------- |
| `_customily`                |
| `_Image Upload`             |
| `_customily-production-url` |
| `**IMPORTANT`               |
| `_Upload Image`             |
| `_has_gpo`                  |
| `Image`                     |
| `Photo Upload`              |

This filtering helps keep the final Linnworks order note focused on usable fulfilment and customisation information.

## Extracted Note Format

When valid XML data is found, the macro builds the note using the following structure:

| Content                | Format                                                     |
| ---------------------- | ---------------------------------------------------------- |
| XML order note         | Included when it matches the expected order number pattern |
| Line item              | `SKU - Title`                                              |
| Customisation property | `Name: Value`                                              |

For example, when the XML contains:

| XML Value  | Example                   |
| ---------- | ------------------------- |
| Order Note | `206-4618037-1259539`     |
| SKU        | `CUSTOM-MUG-001`          |
| Title      | `Personalised Mug`        |
| Property   | `Name: John`              |
| Property   | `Message: Happy Birthday` |

The created Linnworks order note contains the order note, line item identification, and qualifying property values in a readable format.

## Best Practices

> Use targeted Rule Engine conditions and verify sample Shopify XML structures before enabling the macro across a large order volume.

<Columns cols="2">
  <Card title="Target relevant Shopify orders" icon="sliders" horizontal="false" target="_self">
    Configure Rule Engine conditions so only Shopify orders that may contain useful XML customisation data are processed.
  </Card>

  <Card title="Validate sample XML" icon="file-text" horizontal="false" target="_self">
    Confirm that sample orders contain Order, LineItems, LineItem, and Properties nodes before enabling the macro widely.
  </Card>

  <Card title="Review extracted notes" icon="edit" horizontal="false" target="_self">
    Test several orders and confirm that the generated notes include the expected SKU, title, and customisation values.
  </Card>

  <Card title="Review filtered properties" icon="filter" horizontal="false" target="_self">
    Confirm that the built-in excluded prefixes match your operational requirements.
  </Card>

  <Card title="Check Despatch Date values" icon="calendar" horizontal="false" target="_self">
    Verify that the generated Despatch Date extended property is formatted correctly for downstream workflows.
  </Card>

  <Card title="Monitor Rule Engine execution" icon="bar-chart-2" horizontal="false" target="_self">
    Review logs for already processed orders, XML parsing failures, missing line items, and successful note creation.
  </Card>
</Columns>

## FAQ

**How is Shopify Customisation to Notes triggered?**

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

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

The `xmlnodelist` and `dynamicFields` parameters exist in the macro signature but are not used by the current logic. The macro processes the order IDs supplied through the Rule Engine.

**What information does the macro extract?**

The macro can extract a qualifying XML order note, line item SKUs, line item titles, and usable customisation property names and values.

**Does the macro process all XML records?**

Yes. The documented behaviour reads and parses each available XML record attached to the order.

**When is the XML order note included?**

The XML order note is included only when it matches the expected order number pattern.

**How are line items displayed in the generated note?**

Each line item is added using the format `SKU - Title`.

**How are customisation properties displayed?**

Qualifying properties are added using the format `Name: Value`.

**Are all Shopify properties included?**

No. Empty values and properties beginning with excluded image-upload, Customily, hidden, and system-style prefixes are skipped.

**When is an extracted note created?**

A note is created only when at least one line item contains a Properties node.

**Is the generated order note internal?**

No. The newly generated extracted note is saved with `Internal = false`.

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

It checks whether an existing order note was created by **Add Note From ShopifyXMLDataExtract macro**. If found, the order is skipped.

**What happens to existing order notes?**

Existing notes are marked as internal, except where an existing note matches the extracted XML order note.

**When is Despatch Date added?**

The macro adds the Despatch Date extended property when it is missing and the order has a Despatch By Date.

**What format is used for Despatch Date?**

The value is formatted as `yyyy MMM dd`.

**What happens if the XML cannot be parsed?**

The parsing error is logged, and the macro continues processing where possible.

**What happens when there are no LineItem nodes?**

No line item details can be extracted from that XML structure.

**What happens when no line item has Properties?**

The macro does not create the extracted order note.

## 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

Shopify Customisation to Notes automates the extraction of useful Shopify XML information into Linnworks order notes.

Once connected to the Rule Engine, the macro checks Despatch Date, prevents duplicate processing, reads the order XML, extracts qualifying order notes and line item customisation details, filters unwanted properties, and creates a readable non-internal order note.

<Columns cols="2">
  <Card title="Automated XML extraction" icon="file-text" horizontal="false" target="_self">
    Shopify order notes, line item details, and qualifying customisation values are extracted automatically.
  </Card>

  <Card title="Improved fulfilment visibility" icon="package" horizontal="false" target="_self">
    Important product customisation information is made available directly within the Linnworks order.
  </Card>

  <Card title="Automatic Despatch Date handling" icon="calendar" horizontal="false" target="_self">
    Missing Despatch Date extended properties are created from the order Despatch By Date where available.
  </Card>

  <Card title="Duplicate processing prevention" icon="check-circle" horizontal="false" target="_self">
    Orders already containing a note created by this macro are skipped.
  </Card>
</Columns>

For orders that do not produce the expected note, review the Rule Engine and macro logs, confirm that the order has valid XML, and verify that at least one line item contains a Properties node with qualifying values.
