Users and groups
User-type fields in Catalyst can contain references to both users and user groups. These fields support two different approaches for accessing data: ID-based access for compatibility with existing systems, and object-based access for enhanced functionality.
ID-Based Access (Legacy Compatibility)
The traditional approach returns lists of IDs, maintaining compatibility with existing configurations:
{{ record.field_user }}Returns an object containing both user IDs and user group IDs.
Example output
{ "users": [123, 456, 789], "user_groups": [10, 20] }{{ record.field_user.user_groups }}Returns an array of user group IDs only.
Object-Based Access (Enhanced Functionality)
For accessing full user and group objects with all their properties, use the .meta syntax:
{{ record.field_user.meta.users }}Returns an array of user objects only.
{{ record.field_user.meta.meta.user_groups }}Returns an array of user group objects only.
User Object Properties
When using .meta.users, each user object contains:
| Property | Type | Description |
|---|---|---|
KEEP 0018 | integer | User ID |
KEEP 0019 | string | User's first name |
KEEP 0020 | string | User's last name |
KEEP 0021 | string | Email address |
KEEP 0022 | string | Company name |
KEEP 0023 | string | Phone number |
KEEP 0024 | string | Mobile phone number |
KEEP 0025 | boolean | Deletion flag - KEEP 0026 |
KEEP 0027 | enum | Account type enum - KEEP 0028 |
Complete user object example
[
{
"id": 525,
"first_name": "Bridget",
"last_name": "Marquardt",
"username": "bridget.marquardt826@example.com",
"company_name": "",
"phone": "16253372",
"mobile": "27363737"
},
{
"id": 591,
"first_name": "Abelardo",
"last_name": "Gutkowski",
"username": "abelardo.gutkowski752@example.com",
"company_name": "",
"phone": "76235342",
"mobile": "93833722"
},
{
"id": 795,
"first_name": "Aaron",
"last_name": "Dalton",
"username": "aaron@example.domain",
"company_name": "",
"phone": "999383833",
"mobile": "0002923832"
}
]Example usage
{% for user in record.field_assignees.meta.users %}
- {{ user.first_name }} {{ user.last_name }} ({{ user.username }})
{% endfor %}Indexing users
You can access specific users by index:
{{ record.field_assignees.users[0] }}
{{ record.field_assignees.users[0].username }}
{{ record.field_assignees.users[1].first_name }}Hidden properties
Some properties are not returned by default but can be accessed explicitly:
{{ record.field_assignees.users[0].is_deleted }}
{{ record.field_assignees.users[0].account_type }}Deleted Users Handling
When a user is deleted from the system:
- Only the
idproperty is returned - All other properties are anonymized for privacy
- The user object will look like:
{"id": 525}
Iteration Examples
Basic user loop
{% for users in record.field_usertype.users %}
User ID: {{ users.id }}
Account type: {{ users.account_type }}
{% endfor %}Safe property access
{% for user in record.field_assignees.users %}
{% if user.first_name %}
Active User: {{ user.first_name }} {{ user.last_name }}
{% else %}
Deleted User (ID: {{ user.id }})
{% endif %}
{% endfor %}User Group Object Properties
When using .meta.user_groups, each group object contains:
id- User IDname- Group namenum_of_members- Number of group members
Complete user group object example
[
{
"id": 525,
"name": "Team ABC",
"num_of_members": 20
},
{
"id": 999,
"name": "Lawyers united",
"num_of_members": 400
},
{
"id": 1249,
"name": "Research team",
"num_of_members": 6
}
]Example
{% for group in record.field_teams.meta.user_groups %}
- {{ group.name }} ({{ group.num_of_members }} members)
{% endfor %}Indexing user groups
You can access a specific user group by index:
{{ record.field_usertype.user_groups[0] }}
{{ record.field_usertype.user_groups[0].name }}
{{ record.field_usertype.user_groups[0].num_of_members }}Mixed Access Example
You can combine both users and groups in a single iteration:
{% for item in record.field_assignees.meta %}
{% if item.username %}
User: {{ item.first_name }} {{ item.last_name }}
{% else %}
Group: {{ item.name }} ({{ item.num_of_members }} members)
{% endif %}
{% endfor %}Supported Contexts
User-type merge fields work in:
- Document templates
- Sequencer actors (API Call, Send Message, Local Variable)
- Related records merge fields
- All other contexts where merge fields are supported
Useful info
Empty field: If no users are assigned, the array will be empty [].
idfirst_namelast_nameusernamecompany_namephonemobileis_deletedhiddenaccount_typehidden