For the complete documentation index, see llms.txt. This page is also available as Markdown.

Custom Fields

Custom Fields let you extend members, campaigns, and rewards with your own typed, validated data — no development required.

Custom Fields let you extend Open Loyalty objects with your own, typed and validated data — without any development work. You define a field once in the Admin Panel (its name, type, validation rules, and whether it's required), and from that moment it appears on the relevant forms and is available through the API, imports, and exports.

Not the same as Custom Attributes. Custom Attributes (also called "labels") are the older, flat key-value mechanism still used in some expressions and campaign conditions — see Custom Attributes. Custom Fields is the newer, schema-first system described in this section, and is the recommended way to extend member, campaign, and reward data going forward.


🧩 What makes Custom Fields different

  • Typed, not just text — a number stays a number, a date stays a date, and a select field only accepts values from a Collection you control.

  • Validated on every write — from the Admin Panel, the API, or an import.

  • Available across the platform — Members, every campaign type (Direct, Referral, Automation, Leaderboards, Challenges), and every reward type including Fortune Wheels each get their own schema.

  • Repeatable data on members — Subgroups let a member hold several rows of the same shape, e.g. a weekly score history.

  • Segmentable — build member segments on custom field values (contains any/all, ranges, thresholds).

  • Fully wired into your data flow — values can be set from the Admin Panel, the API, member import, or a dedicated JSON import, and they come back in S3 exports, in campaign/reward webhooks, and in the audit log.

  • Access-controlled — a separate permission governs who can change the schema, while entering values on entity forms stays available to regular operators.


Where Custom Fields are available

Module
Schema per
Subgroups (repeatable rows)

Members

one schema shared across all members

✅ Yes

Campaigns — Direct, Referral, Automation, Leaderboards, Challenges

one separate schema per campaign type

❌ No

Rewards (all reward types) and Fortune Wheels

one separate schema per reward type

❌ No


🏗️ Structure: groups, fields, subgroups

  • Group — a named container for fields, e.g. driving_insights, insurance. Every field belongs to a group.

  • Field — a single typed value inside a group.

  • Subgroup — a repeatable set of fields (an array of objects), available for Members only. Use it when a member needs several rows of the same structure, e.g. Owned Vehicles, each row holding its own Plate No, VIN and Make.

Subgroups can't be nested, and they only accept simple field types — a subgroup can't contain another subgroup or a select/multi-select field.

Available field types

Type
Description

String

Free text, with optional validation (max length, regular expression)

Number

Numeric value, with optional min/max

Boolean

True / false

Date

A calendar date

Single select

One value picked from a Collection

Multi select

Several values picked from a Collection

Subgroup

Repeatable rows of simple fields — Members only


In this section

Last updated

Was this helpful?