> For the complete documentation index, see [llms.txt](https://docs.pakk.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.pakk.io/products-and-inventory/custom-product-attributes/attribute-types.md).

# Attribute Types

You have four attribute types at your disposition, depending on what type of information you're trying to represent.

* free-form text
* number
* checkbox
* choice

Most of the time it will be fairly obvious which type of attribute you need, but sometimes the choice is not so obvious and indeed you could represent information in multiple ways. Here are some tips to help you decide.

* Try to isolate "yes/no" type attributes and use checkbox types. These are really easy for shoppers to use in filters (more on that later). For example, represent 'gluten free' or 'vegan' attributes as a *checkbox* field to make product discovery as easy as possible.
* If you have a field with multiple options, but one **or more** can be selected at any time, use multiple checkboxes. Let's say you sell dietary supplements for women, men and children and each product can be suitable for one or more of these categories. You could set up three checkboxes: "Suitable for Women", "Suitable for Men", "Suitable for Children".
* If you have a field with **mutually exclusive** options, like "cuisine type" at a restaurant (i.e. a dish is either Indian, Italian or Spanish) then use a *choice attribute*.
* Only use *free-form text* when the attribute really is a block of words - like a custom, human-written description. Free-form text is the least useful attribute for shoppers when searching and filtering, so consider that it is just for informative purposes.
* Sometimes, what can appear *free-form text* can actually be represented in a better way. Let's say you've got a food product with a list of nutritional properties. Perhaps you could set up individual *number attributes* for each element, like Carbohydrates, Protein, Sodium Content etc. This makes display clearer and product discovery easier.
* *Choice attributes*, don't have to be words, they could also be numbers. If you have an attribute which initially appears numeric, but on closer inspection you realise there are only a limited number of options, it would probably be better represented as a *choice* field but with numeric *members*. Think about "laptop screen size". There are only about 4-5 useful sizes - it wouldn't make sense to allow shoppers to filter by arbitrary min and max ranges.
* In general, if you can't decide, think about how shoppers would use filters (more on this below) to discover your products.


---

# 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.pakk.io/products-and-inventory/custom-product-attributes/attribute-types.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.
