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.