# Segment

Segment splits the Journey into branches based on a profile field value.

<figure><img src="/files/0qVOLilDf9L2fmonsT3u" alt="Segment step panel showing a profile field selector, group names, and an other branch"><figcaption><p>The Segment step panel — choose a profile field, define groups and their values, and connect each branch including the implicit other branch.</p></figcaption></figure>

## What Segment does

When a contact reaches a Segment step, DinMo evaluates their profile field and routes them to the matching branch.

Each group of values you define creates one branch. Contacts that do not match any group take the implicit **other** branch.

This makes Segment useful when different types of contacts should follow different downstream paths — different activation destinations, different timing, or different content.

## Common use cases

| Profile field     | Groups                  | Example branches                           |
| ----------------- | ----------------------- | ------------------------------------------ |
| `country`         | US / EU / APAC          | Different regional activation destinations |
| `plan`            | Free / Pro / Enterprise | Different upgrade flows per tier           |
| `lifecycle_stage` | New / Active / At risk  | Different re-engagement paths by status    |
| `language`        | EN / FR / DE            | Different language-specific destinations   |

## How to configure Segment

1. **Choose the profile field** — this is the field that will be evaluated for each contact.
2. **Create at least one group** — give it a name that describes the business category.
3. **Add one or more values** to each group — contacts whose field matches one of these values will enter this branch.
4. **Repeat for each additional branch** you need.

The **other** branch is implicit and does not require configuration. Contacts that match no group will always take it.

{% hint style="info" %}
Giving each group a clear, business-readable name (for example `High-value plan` instead of `enterprise`) makes the canvas easier to review and troubleshoot.
{% endhint %}

## Constraints

| Constraint            | Value                                                             |
| --------------------- | ----------------------------------------------------------------- |
| Maximum groups        | 10                                                                |
| Minimum groups        | 1 (plus the implicit other branch)                                |
| Group name uniqueness | Names must be unique within the same Segment                      |
| Overlapping values    | Avoid — contacts with overlapping values create ambiguous routing |

{% hint style="warning" %}
Overlapping values across groups (the same value assigned to two different groups) creates ambiguity in routing. DinMo will flag this, but the safest approach is to keep each value in exactly one group.
{% endhint %}

## What happens to the other branch

The **other** branch catches every contact that does not match any configured group. You should always decide what happens to these contacts — connect a Activate, a Stop, or further steps to the other branch rather than leaving it open.

Leaving the other branch disconnected is a common configuration gap. It can mean a significant portion of contacts have no defined path.

## When Segment is the right choice

Choose Segment when:

* The routing decision is based on a profile value already known at the time the contact reaches this step
* Different contact types should take meaningfully different downstream paths

If you only need to wait for a condition to be met before continuing, [Pause Until](/journey/concepts/pause-until.md) is simpler.

If the same action applies to all contacts regardless of attribute, you do not need a Segment step.

## Best practices

* Keep group names business-readable.
* Connect every branch including the other branch.
* Avoid creating too many groups — a Segment with 8 branches is usually a sign that the flow can be simplified.
* Use Segment only when the branching decision meaningfully changes the downstream path, not just cosmetically.

## Related pages

* [Pause Until](/journey/concepts/pause-until.md)
* [Entry rules](/journey/concepts/entry-rules.md)


---

# Agent Instructions: 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:

```
GET https://docs.dinmo.io/journey/concepts/segment.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
