Summary
Goals can now include custom fields through the Asana API, bringing the same powerful metadata capabilities that are available for projects and portfolios to your goal management workflows.
Custom fields on goals support most field types including text, number, enum (single-select), multi-enum (multi-select), date, and people fields.
Why we’re making this change
This change benefits developers building integrations that work with goal management and reporting:
- Goal tracking applications - Can now capture and display additional metadata about goals beyond the basic name, description, and progress
- Reporting and analytics tools - Can group, filter, and analyze goals based on custom field values (e.g., by department, priority, or business area)
Usage
Reading Custom Field Values on Goals
All goal endpoints now support returning custom field data using the opt_fields parameter. Unlike other objects like tasks, you’ll need to explicitly request custom field data as optional fields. This is to make the API more performant by default.
New optional fields
| Parameter | Description |
|---|---|
custom_fields |
Object mapping custom field GIDs to values |
custom_field_settings |
Available when using opt_fields to show configured fields |
List custom field values and custom field settings
// GET /goals/1234567890123456?opt_fields=name,custom_fields,custom_field_settings
{
"data": {
"gid": "1234567890123456",
"name": "Increase user engagement",
"custom_fields": [
{
"gid": "987654321098765",
"name": "Priority",
"type": "enum",
"enum_value": {
"gid": "123456789012345",
"name": "High",
"color": "red"
}
}
],
"custom_field_settings": [
{
"gid": "555666777888999",
"custom_field": {
"gid": "987654321098765",
"name": "Priority"
}
}
]
}
}
Updating Goals with Custom Fields
When updating goals, include custom field values in the request. Here is an example of assigning a custom field value to a goal.
// PUT /goals/12345
{
"data": {
"custom_fields": {
"987654321098765": "456789012345678"
}
}
}
Managing Custom Field Settings
New endpoints for managing which custom fields are available on goals:
Add Custom Field Setting
// POST /goals/1234567890123456/addCustomFieldSetting
{
"data": {
"custom_field": "987654321098765"
}
}
Remove Custom Field Setting
// POST /goals/1234567890123456/removeCustomFieldSetting
{
"data": {
"custom_field": "987654321098765"
}
}
List Custom Field Settings
// GET /goals/1234567890123456/custom_field_settings
{
"data": [
{
"gid": "9876543210987654",
"resource_type": "custom_field_setting",
"parent": {
"gid": "1234567890123456",
"name": "Q1 Revenue Growth",
"resource_type": "goal"
},
"is_important": true,
"custom_field": {
"gid": "1111222233334444",
"name": "Progress Percentage",
"resource_type": "custom_field",
"type": "number",
"precision": 0
}
},
{
"gid": "1357924680135792",
"resource_type": "custom_field_setting",
"parent": {
"gid": "1234567890123456",
"name": "Q1 Revenue Growth",
"resource_type": "goal"
},
"is_important": false,
"custom_field": {
"gid": "2468135792468135",
"name": "Department",
"resource_type": "custom_field",
"type": "text"
}
},
{
"gid": "8642097531864209",
"resource_type": "custom_field_setting",
"parent": {
"gid": "1234567890123456",
"name": "Q1 Revenue Growth",
"resource_type": "goal"
},
"is_important": true,
"custom_field": {
"gid": "7531842609753184",
"name": "Target Date",
"resource_type": "custom_field",
"type": "date"
}
}
]
}
Timeline
This is now available!
Note: Custom fields functionality requires appropriate workspace permissions and may have plan-level restrictions.
Resources
Questions and Feedback
We’d love to hear how you plan to use custom fields on goals in your integrations. Share your feedback and use cases in the comments below.