> 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/members-and-activity/members/custom-fields.md).

# Custom Fields

This article explains how custom fields can be created and used in your loyalty program.

The **Custom Fields** feature allows you to extend member profiles (and other modules) with additional information specific to your program needs. These fields make it possible to capture structured data beyond the default attributes, helping you personalize campaigns, segment members more precisely, or store business-specific identifiers.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2Fgit-blob-1e3efbccb514c9e46e9376b1a5ce6bbbd5033d1e%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

***

### Key Functionalities

* 🧩 **Custom fields per module** — **Custom fields** opens a module picker: **Members**, **Campaigns › Direct**, **Campaigns › Automation**, **Campaigns › Referral**, **Leaderboards**, **Challenges**, **Rewards** and **Fortune wheels**. Each module has its own schema editor.
* 🗂️ **Groups** — fields are organised into groups. A group can also include a **subgroup**: a repeatable record that stores its own set of fields and can be filled in several times per member. Subgroups can't be nested.
* 🛠️ **Define field properties**:
  * **Type** – **String**, **Single select**, **Multi select**, **Number**, **Boolean** or **Date**.
  * **Set as Required** – make the field mandatory when creating or editing a member.
  * **Predefined values** – use a **Single select** or **Multi select** field, whose options come from a collection.
* 👤 **Visibility** — a member's values are shown on the member profile, under a menu item named after the group.

{% hint style="warning" %}
A module's schema can hold up to **25 fields**. The counter at the bottom of the editor shows how many are used (for example, **1 / 25 fields used**).
{% endhint %}

***

### Creating a Custom Field

{% stepper %}
{% step %}
Navigate to **Configuration → Custom Fields**.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2Fgit-blob-06e9502af0c389999442115207f5f7502d305e64%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Select the module (for member fields, **Members**). The schema editor shows the module's groups and their fields. Click **Add group** to create a group, or use **Add field** inside an existing group.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2Fgit-blob-7ce25ea9d62d7660e7644928762d9136ffe4cd02%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Click **Add field** and pick the field type: **Subgroup**, **String**, **Single select**, **Multi select**, **Number**, **Boolean** or **Date**.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2Fgit-blob-f7783fea11004da59206b94b68414d1d1d7cbee9%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Enter the field **Name**. The **System code** is generated from the name. Optionally add a **Description**.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2Fgit-blob-451525a26e95cf1fa0eda8dd3f2b85fac1035325%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
(Optional) Switch on **Set as Required**.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2Fgit-blob-0242f95eb8278fee9387662513aeb9f490c7d104%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
For a **Single select** or **Multi select** field, select the **Collection** its options come from.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2Fgit-blob-f633584ad572d1dd5b9c15ede15997d35737c392%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Click **Next step**, then confirm on the summary.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2Fgit-blob-451525a26e95cf1fa0eda8dd3f2b85fac1035325%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

***

### Managing Custom Fields

* **Edit a field** — open the module's schema editor and expand the field's card in its group.
* **Fields have no status** — there is no Active/Inactive switch for a field.

***

### Editing Members with Custom Fields

When creating or editing a member profile, custom fields are listed under the name of their group, for example **Retail Profile › Preferred Channel**. Required fields are displayed as mandatory inputs.

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2Fgit-blob-8074eac37940fe219bdab77a23625f725d32679f%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

Administrators must complete all required fields before saving changes to the profile.

***

### Displaying Custom Fields in Single Member View

A member's custom field values are shown on a profile menu item named after each group (here **Retail Profile**). Here you can see:

* The **field name** (e.g., Preferred Channel).
* The **value** selected or entered for that member (e.g., “online”).

<figure><img src="https://2658975168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcNVX03KZzmrGwJihLiEx%2Fuploads%2Fgit-blob-7f23b968e4bf737824c7d05c44a3ab06faaf047a%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

***

### Example Use Cases

* 📦 **Supplier or partner code** — track which supplier a member is linked to.
* 🏪 **Favorite store** — capture the member’s preferred location for redemptions or pickups.
* 🏷️ **Customer category** — e.g., B2B vs. B2C, VIP status, or special program flags.


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://help.openloyalty.io/members-and-activity/members/custom-fields.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
