Building on Productboard's Custom Fields API

In Productboard, you can organize your ideas into distinct Products, Components, and Features. On the API, these are referred to as “hierarchy entities”. There is a hierarchical relationship between each of these items, meaning that Components are part of Products, Features exist within components or products.

Here is how this is visualized on the Productboard Features board:

Feature Custom Fields

You can associate text or number-based custom fields with hierarchical entities (Products, Components, and Features). The custom field names and values are fully customizable.

In the image below, custom fields have been associated with a set of components.

The below example has:

  1. Domain - Dropdown custom field.
  2. Eng owner - Dropdown custom field.
  3. Engineering weeks - Number custom field
  4. Eng expertise - String custom field.

Features and custom fields can then be represented on the Features board in a spreadsheet format. In this view, the custom fields (Domain, Eng Owner, engineering weeks) look like columns.

On our API, the columns are called custom field definitions. The cells are custom field values, meaning that the value is in the cell at the intersection of the custom field (column) and hierarchy entity (row).

How can I use this?

From your feedback, we have identified several use cases. These include:

  1. Syncing custom fields to a delivery tool, such as Jira, Gitlab, or Azure DevOps.
  2. Importing analytics data to Productboard as a custom field, such as “Weekly active users over past 90 days” for a specific feature.
  3. Exporting your features data to an analytics tool, such as Google Docs or Power BI.

Next, we’ll run you through how you can use our API to achieve some of these use cases.

Note: The integration service mentioned below are an application (or process) fully developed, deployed, and taken care of by you. Productboard only provides the API you can call or webhooks you can subscribe to.

Sync custom fields to your delivery tool

  1. We assume you have some Integration Service implemented.
    1. The Integration Service stores mapping from Productboard feature to a ticket in your delivery tool (PB feature A maps to delivery tool ticket B).
    2. The Integration Services stores mapping from Productboard custom field to the delivery tool field. (PB custom field X maps to delivery tool field Y).
    3. We assume that the Integration service is able to handle webhooks.
  2. The integration service registers for hierarchy-entity.custom-field-value.updatedwebhook event.
  3. Every time a custom field value is updated the integration service is notified. This includes an update of a value to null i.e. deletion. The notification is processed in a way that the integration service fetches a new value using the Custom Field Values API and updates the data in the delivery tool.

Sync custom fields from your delivery tool

  1. We assume you have some Integration Service as described in the article, How to implement an integration service.
    1. The Integration Service stores mapping from Productboard feature to a ticket in your delivery tool (PB feature A maps to delivery tool ticket B).
    2. The Integration Services stores mapping from Productboard custom field to the delivery tool field. (PB custom field X maps to delivery tool field Y).
    3. Knows when the data in the delivery tool change based on the delivery tool webhooks or some other delivery tool-specific mechanism.
  2. Every time a value changes in the delivery tool, the integration service updates the corresponding value in Productboard using the Custom Field Values API.

Associate analytics data with a feature

  1. For this, we assume that there is an Integration Service that
    1. Knows which analytics data belong to which hierarchy entity (hierarchy entity X should have value Y from analytics tool).
    2. Knows the target Custom Field where the analytics data should be imported to (e.g. custom field “Weekly active users over past 90 days”).
    3. Knows when the data in Productboard need updating. This can differ based on your use case, e.g. you trigger the update “manually” in your Integration Service or you need to keep it in sync at all times - in this case, you need to know when the data changed in the analytics tool.
  2. Every time when the analytics data need to be updated in Productboard the Integration Service calls the Custom Field Values API to update the data.

Export features data to Google Sheets

  1. List all features
  2. List all custom field definitions
  3. List all custom field values
  4. Now you have all the data and you can export them to a tabular format. Let’s assume that we want to export features as rows and the custom field definitions as columns.
    1. Generate column names (header)
      1. We have some static feature attributes like name, description, parent, status, or timeframe
      2. The rest of the column names are based on the data returned by Custom Field API, specifically names of custom fields.
    2. Iterate through all the features and place each of them on a row
      1. For each feature, you can export the name, description, status, and timeframe based on the data from Features API
      2. To export custom field values, you have to find the value in the custom field values list based on the hierarchy entity ID and custom field ID. Please note that some of the values may be empty.