> ## Documentation Index
> Fetch the complete documentation index at: https://docs.onelox.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Products

> Working with Products in ONELOX

## Introduction

Products in ONELOX contain all data necessary for fulfillment.\
The primary and most important information for all Products is their SKU (stock keeping unit).

## Basics

### SKUs and SKU sharing

Every Product is primarily identified by its SKU.\
Within a ONELOX Client, every SKU is unique and will be shared across all Data Source integrations
in the same Client.

### Changing an SKU

While ONELOX supports changing an SKU, it is strongly recommended to always create a new Product whenever an SKU
changes that has previously been active.\
If changing an SKU cannot be avoided, make sure that all pending Delivery Notes have been shipped to avoid any issues due to
inconsistent SKUs.

### Product types

ONELOX differentiates between multiple types of Products that are relevant during the fulfillment process.\
Most importantly, a Product may be `Storable`, i.e. a physical Product, or not storable.\
Non-storable Products will never be transmitted to a Fulfiller integration when contained in a Delivery Note.

Additionally, Products may be marked with several attributes that influence how they are stored or shipped:

* `Perishable`: The Product has a limited shelf life\
  This is most often the case for food Products or cosmetics. Perishable Products *should* be treated appropriately during
  fulfillment, e.g. by considering FIFO (first in, first out) and tracking shipped batches and sell by dates
* `Batchable`: The Product can be tracked by its production batch
* `Has Serial Numbers`: The Product can be tracked by its serial number
* `Refrigerated`: The Product must be kept refrigerated in storage and when shipped
* `Dangerous Goods`: The Product may be considered dangerous or hazardous (e.g. due to flammable contents) and *should*
  be treated accordingly in storage and when shipped
* `Battery`: The Product is or contains a battery and *should* be treated accordingly in storage and when shipped
  (e.g. by adding a warning label to packages)
* `Fragile`: The Product is fragile and *should* be handled with special care at all times

<Note>
  Not all Fulfillers support all types of Products. You should always consider the types of Products
  you want to ship before deciding for a Fulfiller.
</Note>

## Product references

Since Products are shared within a Client, Product references are used to determine:

1. which Data Source integrations a Product is available in
2. which Fulfiller integrations will receive Product data

<Tip>
  <a href="/integrations/introduction">ONELOX integrations</a> will always add and update their references
  automatically.
</Tip>

### Data Source references

When a Product should be available in a Data Source integration (e.g. your shop system), a reference must be added.\
After the reference has been added, ONELOX will know the Data Source expects Inventory updates for the Product.\
In addition, ONELOX will now synchronize the Product data to all Fulfiller integrations that are connected to the Data Source
through a shared Warehouse.

<Tip>
  Data Source references are optional. If a Data Source integration does not require Inventory and is not used to
  transmit Delivery Notes to ONELOX, a reference can be omitted. \
  This is useful in case you need a dedicated Data Source integration that only provides detailed product data that
  your other integrations, like a shop system, are unable to.
</Tip>

### Fulfiller references

When a Product is available at a Fulfiller, a reference should be added.\
While many Fulfillers
use SKUs as the primary identifier, some require their own internal identifier when receiving
Delivery Notes and/or reporting Inventory.\
If a Fulfiller expects their own identifier and no reference is found by ONELOX when attempting to transmit a Delivery Note,
an error will be reported and the transfer will fail.

<Warning>
  An integration may only have a single reference for each Product at all times. \
  It is not possible to attach multiple references, e.g. to support duplicate SKUs in a third party system.
</Warning>

## Dynamic creation

In some cases, ONELOX may receive a Delivery Note with Products that have not yet been provided by a Data Source integration.\
By default, ONELOX will dynamically create the Product with basic information received in the Delivery Note (SKU, title).\
Product data may then be provided by a Data Source integration to complete the Product's representation in ONELOX and trigger
necessary synchronization with all connected Fulfillers.

<Note>
  If no Product data has been provided and the Fulfiller receiving the Delivery Note requires their own reference to
  identify it, transmitting the Delivery Note will fail. \
  ONELOX retries all Delivery Note transfers for up to 5 hours before considering the transmission fatally failed.
  When Product data is received and the Product synchronized with the Fulfiller within this time frame, the Delivery
  Note transfer will still complete.
</Note>

<Warning>
  Dynamic creation is available for better failover and recovery, especially in cases of issues within the Data Source
  system that prevent Product data from being transferred to ONELOX.
  If your system generates orders or Delivery Notes without a Product having stock -- which will be the case since
  ONELOX
  could not provide Inventory for the unknown Product --, you should always investigate and optimize your
  processes to prevent this in the future.
</Warning>
