> For the complete documentation index, see [llms.txt](https://docs.caraml.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.caraml.dev/user-guides/01_getting_started-1/15_creating_custom_segmenters.md).

# Creating Custom Segmenters

From the Settings page, click on the 'Segmenters' tab. ![Create Custom Segmenter Navigation](/files/ZhckOP1iimEu6jRTmXqY)

Created segmenters can be used just as global segmenters, but only in the project in which they are created in.

## 0. Create Segmenter

1. Click on 'More Actions', followed by the 'Create Segmenter' button on the landing page. ![Create Custom Segmenter Landing](/files/DPyg2WOj4Na3IUqdtOo1)

## 1. Configure Segmenter's General Settings

1. In the Create Segmenter's general settings page, fill up the given form ![Create\_Custom\_Segmenter General](/files/rTP5a8WUiBIrrSryBydz)
   1. **Name**: Name of segmenter.
   2. **Type**: Type of the segmenter (string, bool, integer or real).
   3. **Description**: Description of segmenter.
   4. **Required**: Indicates whether the segmenter must be selected in experiments.
   5. **Multi-Valued**: Indicates whether the segmenter has multiple values.
   6. **Options**: Name-value pairs for the segmenter values. This field needs to be a valid JSON object.
   7. **Constraints**: Constraints for the segmenter when prerequisite conditions are met.
      1. **Pre-Requisite Segmenter Values**: An array of objects with the fields `segmenter_name` and `segmenter_values`. This field needs to be a valid JSON array.
         1. **Segmenter\_Name**: A string indicating the name of the segmenter. Note that **none** of the objects specified should have a `segmenter_name` with the same name as the segmenter that you are creating.
         2. **Segmenter Values**: An array of segmenter values corresponding to the segmenter.
      2. **Allowed Values**: An array of allowed segmenter values. Note that the values specified here should form a subset of the values specified in 'Options' and cannot be empty. This field needs to be a valid JSON array.
      3. **Values Override**: New name-value mappings to overwrite the names for the values under 'Options'. Note that the values specified here should form a subset of the values specified in 'Options'. This field should specify the name-value mappings for each and every value in the allowed values field, and it needs to be a valid JSON object.
2. Click "Save" to create the Segmenter.


---

# 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.caraml.dev/user-guides/01_getting_started-1/15_creating_custom_segmenters.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.
