> For the complete documentation index, see [llms.txt](https://help.openloyalty.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.openloyalty.io/main-features/imports-exports/imports/sample-import-files/member-segments.md).

# Member Segments

Use the segment import to populate a **static segment** with members in bulk. This is useful when you need to manually define a group of members — for example, a list of VIP customers, a target audience for a campaign, or members selected for a specific promotion.

**File format:** CSV

### Prerequisites

{% hint style="danger" %}
**The segment must be of type Static.** You can only import members into segments of type **Static**. If your segment is condition-based (dynamic), the import will silently fail — no error message is shown, the members simply won't appear in the segment.

To verify: open the segment in the Admin Panel under **Members → Segments** and check that it is set to **Static** type before importing.
{% endhint %}

{% hint style="warning" %}
**Uploading a new CSV replaces the current list.** Importing a new file into a static segment overwrites all existing members in that segment. If you want to keep existing members, include them again in the new CSV.
{% endhint %}

### Choosing a member identifier

During import, you select which type of identifier your CSV contains. The supported options are:

* **Email address**
* **Phone number**
* **Loyalty card number**
* **Member UUID** (the internal Open Loyalty identifier)

You must use **one identifier type per file** — do not mix emails and phone numbers in the same CSV. The identifier you choose in the import dropdown must match the data in your file.

{% hint style="info" %}
**The CSV header is always `memberId`** regardless of which identifier type you use. The system determines how to match members based on the identifier type you select during import, not the header name.
{% endhint %}

### Sample files

{% file src="/files/QWtyB3DTkuBjnHnOWYZ3" %}

{% tabs %}
{% tab title="Using email" %}
{% code title="segment-import-by-email.csv" %}

```csv
memberId
john.doe@example.com
jane.smith@example.com
alex.jones@example.com
```

{% endcode %}
{% endtab %}

{% tab title="Using phone" %}
{% code title="segment-import-by-phone.csv" %}

```csv
memberId
+1234567890
+0987654321
```

{% endcode %}
{% endtab %}

{% tab title="Using loyalty card" %}
{% code title="segment-import-by-card.csv" %}

```csv
memberId
CARD-00001
CARD-00002
CARD-00003
```

{% endcode %}
{% endtab %}

{% tab title="Using UUID" %}
{% code title="segment-import-by-uuid.csv" %}

```csv
memberId
e82c96cf-32a3-43bd-9034-4df343e5fd93
a1b2c3d4-e5f6-7890-abcd-ef1234567890
```

{% endcode %}
{% endtab %}
{% endtabs %}

### Format rules

* The file **must** include the header row `memberId` — do not rename or remove it
* Each subsequent row contains one member identifier
* Use only **one type** of identifier throughout the file
* Save as `.csv` with UTF-8 encoding
* The import can handle up to **500,000 members** (processing typically takes around 10 minutes for large files)

### Step by step

{% stepper %}
{% step %}

#### Create or verify a static segment

Go to **Members → Segments** and either create a new segment with type **Static**, or open an existing static segment.
{% endstep %}

{% step %}

#### Prepare your CSV

List the member identifiers in a CSV file with the `memberId` header. Use one identifier type consistently — do not mix emails and UUIDs in the same file. Ensure there are no extra columns or blank rows.
{% endstep %}

{% step %}

#### Import the file

Go to **Imports & Exports → Imports**, select **Member segments** from the dropdown, upload your CSV, and select the target segment. Choose the **identifier type** that matches your file (email, phone, loyalty card, or UUID).
{% endstep %}
{% endstepper %}

### Common mistakes

| Mistake                                           | Fix                                                                                                     |
| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| Importing into a condition-based segment          | Only static segments support CSV import — the import silently fails otherwise                           |
| Mixing identifier types in one file               | Use one type per file — all emails, all phone numbers, or all UUIDs                                     |
| Selecting the wrong identifier type during import | The dropdown must match what's in your CSV (e.g., select "Email" if your file contains email addresses) |
| Missing header row                                | The `memberId` header is required, even when using email or phone                                       |
| Extra columns in the CSV                          | Only `memberId` is supported — remove any additional columns                                            |
| Expecting the import to add to existing members   | A new import **replaces** the entire segment list — include existing members if you want to keep them   |

To find out more, please refer to the article below:

{% content-ref url="/pages/oTpBTp5ao2xpEPFgD3VG" %}
[Creating Segments](/main-features/members/segments/creating-segments.md)
{% endcontent-ref %}


---

# 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://help.openloyalty.io/main-features/imports-exports/imports/sample-import-files/member-segments.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.
