> For the complete documentation index, see [llms.txt](https://docs.fulfillmenttools.com/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fulfillmenttools.com/documentation/getting-started/custom-attributes.md).

# Custom attributes

Custom attributes can be added to all editable fulfillmenttools entities.

You can store any relevant data for the entity you want (within reason) if our current properties don't fit your needs.

There's no schema to follow, and there's no validation from our side. You're free to work with the data as you wish, as long as you follow the [limitations section](#custom-attribute-inheritance).

Some entities display the custom attributes in Backoffice, such as the [Network order details view](/documentation/backoffice/network-view/orders/order-details-view.md#custom-attributes), but others are only accessible via API.

Example use cases for custom attributes include storing a consumer rating for a shop, specifying a consumer segment, indicating how to access a facility, or defining a foreign key that relates to data in a connected system.

## Using custom attributes

If you see the `customAttributes` field within the fulfillmenttools entity, you can add any relevant data to it, whether that be from integrations or other services outside of fulfillmenttools.

{% hint style="info" %}
The `customAttributes` field shouldn't be confused with the `attributes` field mentioned in [customization via article attributes](/documentation/by-pillar/global-inventory-hub/articles/article-attributes.md).
{% endhint %}

Within the relevant entity, you can add the `customAttributes` object. For example, in the code extract below, we've added our own `customAttributes` as part of the facility entity:

```json
{
...
  "name": "Nerd Herd Clothing",
  "type": "MANAGED_FACILITY",
  "customAttributes": {
        "accessibility": "Stairs only",
        "storageSize": "Medium",
        "staff": 12
  },
...
}
```

The `customAttributes` are stored and can be retrieved through the various fulfillmenttools APIs.

## Limitations <a href="#custom-attribute-inheritance" id="custom-attribute-inheritance"></a>

Although you can add the data that you wish to a custom attribute, it needs to follow the limitations below:

* Each `customAttributes` object is serialized into a string and is subject to a size limit of 15,360 characters. You'll get an HTTP 400 error if creating or updating an entity exceeds this limit.
* Keys within a `customAttributes` object must not start with a `$` character and must not contain a `.` character.
* Follow our [responsible API usage guidelines](/documentation/about-fulfillmenttools/limits-and-scaling.md#responsible-api-use).
* You're responsible for the data, including regulations that fall under GDPR or similar.

## Inheritance <a href="#custom-attribute-inheritance" id="custom-attribute-inheritance"></a>

Custom attributes are inherited when creating entities in fulfillmenttools.

For example, when `customAttributes` are supplied for order line items, the resulting pick job line items also contain these `customAttributes`.

In general, all subsequent entities inherit these `customAttributes`.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.fulfillmenttools.com/documentation/getting-started/custom-attributes.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
