Documentation Index
Fetch the complete documentation index at: https://docs.omneo.io/llms.txt
Use this file to discover all available pages before exploring further.
The core fields are the default fields present on every Omneo Profile, regardless of brand configuration. Extended data lives in linked attribute tables.
Identity fields
| Field | Type | Description |
|---|
id | UUID, system-generated | Unique Omneo identifier. Example: 8ad465ea-4b2c-4d2a-bace-87b3a45f76a1 |
external_id | String, nullable | Optional external identifier for use by integrating systems |
title | String, nullable | Title (Mr, Mrs, Ms, Dr, etc.) |
first_name | String | Customer’s first name. Defaults to Unknown if not provided on creation. |
last_name | String | Customer’s last name. Defaults to Unknown if not provided on creation. |
full_name | String, computed | Concatenation of first and last name |
| Field | Type | Description |
|---|
email | String, required, unique | Email address. Unique across all profiles. |
mobile_phone | String, nullable, unique | Mobile number in E.164 format (e.g., +61412374263). Unique across all profiles. |
secondary_phone | String, nullable | Secondary phone number in E.164 format |
Mobile uniqueness is enforced globally. If a mobile number already exists on another profile, the incoming value will be rejected. Omneo can be configured to route clashing numbers to secondary_phone instead, but this should be used with caution. The preferred resolution is to flag the conflicting profiles for merge or deletion.
Personal details
| Field | Type | Description |
|---|
gender | Enum, nullable | MALE, FEMALE, WITHHELD, or OTHER |
birth_day | Integer, nullable | Day of month (e.g., 15) |
birth_month | Integer, nullable | Month number (e.g., 9) |
birth_year | Integer, nullable | Birth year (e.g., 1984) |
next_birthday | Date, computed | Next upcoming birthday anniversary |
birth_date | Date, computed | Full date of birth |
company | String, nullable | Business or company name |
occupation | String, nullable | Customer’s occupation |
avatar_url | URL, nullable | Full URL to a profile avatar image |
currency | ISO 4217, nullable | Customer’s preferred currency (e.g., AUD). Defaults to tenant default if not set. |
Location and joining
| Field | Type | Description |
|---|
joined_at | Timestamp, nullable | When the customer joined. Defaults to created_at if not set. Only updates if the incoming value is earlier than the current value. |
join_location_id | Integer, FK | Location where the profile was created. Does not change once set, unless an earlier joined_at date is received alongside a new location. |
preferred_location_id | Integer, FK | Customer’s preferred store location |
System fields
| Field | Type | Description |
|---|
created_at | Timestamp, system | When the profile record was created |
updated_at | Timestamp, system | When the profile record was last modified |
deleted_at | Timestamp, nullable | Soft delete timestamp |
is_completed | Boolean | Whether the profile is considered “complete” by the brand’s definition |
Incentive summary fields
These computed fields are available on profile responses:
| Field | Type | Description |
|---|
reward_balance | Decimal | Sum of all active, unexpired rewards |
point_balance | Integer | Total point balance across all point definitions |
combined_balance_dollars | Decimal | Combined dollar value of rewards and redeemable points |
tier_handle | String | Handle of the profile’s current tier |
Extended profile data lives in linked attribute namespaces: Addresses, Aggregations, Appearance, Comms, Custom, Dates, and Identities. These are returned via separate endpoints or included via query parameters on the profile response.