Productboard
Productboard is a product management platform that helps teams prioritize features, gather customer feedback, and align their product strategy to deliver better products.
Categories: Project Management
Type: productboard/v1
Connections
Version: 1
Bearer Token
Properties
| Name | Label | Type | Description | Required |
|---|---|---|---|---|
| token | Token | STRING | true |
OAuth2 Authorization Code
Properties
| Name | Label | Type | Description | Required |
|---|---|---|---|---|
| clientId | Client Id | STRING | true | |
| clientSecret | Client Secret | STRING | true |
Connection Setup
Connect Productboard to ByteChef using either a Public API Access Token (Bearer Token) or OAuth 2.0 Authorization Code.
Public API Access Token
- Log in to Productboard.
- Open Settings → Integrations.
- Go to the Manage tab.
- Under Public APIs, click Access token.
- Click + Add token and follow the prompts.
- Copy the generated token value.
OAuth 2.0 Authorization Code
- In Productboard, open: https://app.productboard.com/oauth2/applications
- Click New OAuth2 Application.
- Enter a name, description, and any other required fields.
- Add the ByteChef OAuth redirect (callback) URL(s):
- Cloud:
https://app.bytechef.io/callback - Local development:
http://localhost:5173/callback
- Cloud:
- Select the scopes your app needs. For the ByteChef Productboard connector, enable:
notes:createnotes:readnotes:manageproduct_hierarchy_data:read
- Click Create Application.
- Copy the generated
Client IDandClient Secret.
Actions
Create Note
Name: createNote
Creates a new note.
Properties
| Name | Label | Type | Description | Required |
|---|---|---|---|---|
| title | Title | STRING | Title of note. | true |
| content | Content | STRING | HTML-encoded rich text supported by certain tags; unsupported tags will be stripped out. | true |
Example JSON Structure
{
"label" : "Create Note",
"name" : "createNote",
"parameters" : {
"title" : "",
"content" : ""
},
"type" : "productboard/v1/createNote"
}Output
Type: OBJECT
Properties
| Name | Type | Description |
|---|---|---|
| links | OBJECT Properties{STRING(html)} | |
| data | OBJECT Properties{STRING(id)} |
Output Example
{
"links" : {
"html" : ""
},
"data" : {
"id" : ""
}
}Delete Note
Name: deleteNote
Deletes a note.
Properties
| Name | Label | Type | Description | Required |
|---|---|---|---|---|
| noteId | Note ID | STRING | ID of the note | true |
Example JSON Structure
{
"label" : "Delete Note",
"name" : "deleteNote",
"parameters" : {
"noteId" : ""
},
"type" : "productboard/v1/deleteNote"
}Output
This action does not produce any output.
Get Feature
Name: getFeature
Returns detail of a specific feature.
Properties
| Name | Label | Type | Description | Required |
|---|---|---|---|---|
| featureId | Feature Id | STRING | ID of the feature | true |
Example JSON Structure
{
"label" : "Get Feature",
"name" : "getFeature",
"parameters" : {
"featureId" : ""
},
"type" : "productboard/v1/getFeature"
}Output
Type: OBJECT
Properties
| Name | Type | Description |
|---|---|---|
| data | OBJECT Properties{STRING(id), STRING(name), STRING(description), STRING(type), {STRING(id), STRING(name)}(status), {{STRING(id), {STRING(self)}(links)}(component)}(parent), {STRING(self), STRING(html)}(links), BOOLEAN(archived), {STRING(startDate), STRING(endDate), STRING(granularity)}(timeframe), {STRING(email), STRING(name)}(owner), DATE_TIME(createdAt), DATE_TIME(updatedAt), DATE_TIME(lastHealthUpdate)} |
Output Example
{
"data" : {
"id" : "",
"name" : "",
"description" : "",
"type" : "",
"status" : {
"id" : "",
"name" : ""
},
"parent" : {
"component" : {
"id" : "",
"links" : {
"self" : ""
}
}
},
"links" : {
"self" : "",
"html" : ""
},
"archived" : false,
"timeframe" : {
"startDate" : "",
"endDate" : "",
"granularity" : ""
},
"owner" : {
"email" : "",
"name" : ""
},
"createdAt" : "2021-01-01T00:00:00",
"updatedAt" : "2021-01-01T00:00:00",
"lastHealthUpdate" : "2021-01-01T00:00:00"
}
}Get Note
Name: getNote
Returns detail of a specific note.
Properties
| Name | Label | Type | Description | Required |
|---|---|---|---|---|
| noteId | Note ID | STRING | ID of the note | true |
Example JSON Structure
{
"label" : "Get Note",
"name" : "getNote",
"parameters" : {
"noteId" : ""
},
"type" : "productboard/v1/getNote"
}Output
Type: OBJECT
Properties
| Name | Type | Description |
|---|---|---|
| data | OBJECT Properties{STRING(id), STRING(title), STRING(content), STRING(displayUrl), STRING(externalDisplayUrl), {STRING(id)}(company), {STRING(id)}(user), {STRING(email), STRING(name)}(owner), [{STRING(memberId), STRING(memberName), STRING(memberEmail), STRING(teamId), STRING(teamName)}](followers), STRING(state), {STRING(origin), STRING(record_id)}(source), STRING(tags), [{STRING(id), STRING(type), INTEGER(importance)}](features), DATE_TIME(createdAt), DATE_TIME(updatedAt), {STRING(email), STRING(name), STRING(uuid)}(createdBy)} |
Output Example
{
"data" : {
"id" : "",
"title" : "",
"content" : "",
"displayUrl" : "",
"externalDisplayUrl" : "",
"company" : {
"id" : ""
},
"user" : {
"id" : ""
},
"owner" : {
"email" : "",
"name" : ""
},
"followers" : [ {
"memberId" : "",
"memberName" : "",
"memberEmail" : "",
"teamId" : "",
"teamName" : ""
} ],
"state" : "",
"source" : {
"origin" : "",
"record_id" : ""
},
"tags" : "",
"features" : [ {
"id" : "",
"type" : "",
"importance" : 1
} ],
"createdAt" : "2021-01-01T00:00:00",
"updatedAt" : "2021-01-01T00:00:00",
"createdBy" : {
"email" : "",
"name" : "",
"uuid" : ""
}
}
}Update Note
Name: updateNote
Updates a note.
Properties
| Name | Label | Type | Description | Required |
|---|---|---|---|---|
| noteId | Note ID | STRING | ID of the note | true |
| data | Data | OBJECT Properties{STRING(content), {STRING(email), STRING(name)}(owner), [STRING](tags), STRING(title)} | true |
Example JSON Structure
{
"label" : "Update Note",
"name" : "updateNote",
"parameters" : {
"noteId" : "",
"data" : {
"content" : "",
"owner" : {
"email" : "",
"name" : ""
},
"tags" : [ "" ],
"title" : ""
}
},
"type" : "productboard/v1/updateNote"
}Output
Type: OBJECT
Properties
| Name | Type | Description |
|---|---|---|
| links | OBJECT Properties{STRING(html)} | |
| data | OBJECT Properties{STRING(id)} |
Output Example
{
"links" : {
"html" : ""
},
"data" : {
"id" : ""
}
}List All Notes
Name: listNotes
Returns detail of all notes order by created_at desc
Example JSON Structure
{
"label" : "List All Notes",
"name" : "listNotes",
"type" : "productboard/v1/listNotes"
}Output
Type: ARRAY
Items Type: OBJECT
Properties
| Name | Type | Description |
|---|---|---|
| id | STRING | ID of the note. |
| title | STRING | Title of note. |
| content | STRING | HTML-encoded rich text supported by certain tags; unsupported tags will be stripped out. |
| displayUrl | STRING | Note display url leading to Productboard detail page. |
| externalDisplayUrl | STRING | URL in an external system where the note originated. |
| company | OBJECT Properties{STRING(id)} | |
| user | OBJECT Properties{STRING(id)} | |
| owner | OBJECT Properties{STRING(email), STRING(name)} | |
| followers | ARRAY Items[{STRING(memberId), STRING(memberName), STRING(memberEmail), STRING(teamId), STRING(teamName)}] | The followers of the note. |
| state | STRING | State of the note. |
| source | OBJECT Properties{STRING(origin), STRING(record_id)} | |
| tags | STRING | Comma-separated list of tags. |
| features | ARRAY Items[{STRING(id), STRING(type), INTEGER(importance)}] | All features related to a given note. |
| createdAt | DATE_TIME | Date and time when the note was created. |
| updatedAt | DATE_TIME | Date and time when the note was last updated. |
| createdBy | OBJECT Properties{STRING(email), STRING(name), STRING(uuid)} |
Output Example
[ {
"id" : "",
"title" : "",
"content" : "",
"displayUrl" : "",
"externalDisplayUrl" : "",
"company" : {
"id" : ""
},
"user" : {
"id" : ""
},
"owner" : {
"email" : "",
"name" : ""
},
"followers" : [ {
"memberId" : "",
"memberName" : "",
"memberEmail" : "",
"teamId" : "",
"teamName" : ""
} ],
"state" : "",
"source" : {
"origin" : "",
"record_id" : ""
},
"tags" : "",
"features" : [ {
"id" : "",
"type" : "",
"importance" : 1
} ],
"createdAt" : "2021-01-01T00:00:00",
"updatedAt" : "2021-01-01T00:00:00",
"createdBy" : {
"email" : "",
"name" : "",
"uuid" : ""
}
} ]Triggers
New Note
Name: newNote
Triggers when a note is created.
Type: DYNAMIC_WEBHOOK
Output
Type: OBJECT
Properties
| Name | Type | Description |
|---|---|---|
| id | STRING | ID of the note. |
| eventType | STRING | Type of the event that triggered the webhook. |
| links | OBJECT Properties{STRING(target)} | Links to the updated entity. |
JSON Example
{
"label" : "New Note",
"name" : "newNote",
"type" : "productboard/v1/newNote"
}Updated Feature
Name: updatedFeature
Triggers when a feature is updated.
Type: DYNAMIC_WEBHOOK
Output
Type: OBJECT
Properties
| Name | Type | Description |
|---|---|---|
| id | STRING | ID of the updated feature. |
| eventType | STRING | Type of the event that triggered the webhook. |
| links | OBJECT Properties{STRING(target)} | Links to the updated entity. |
| updatedAttributes | ARRAY Items[STRING] | List of updated attributes. |
JSON Example
{
"label" : "Updated Feature",
"name" : "updatedFeature",
"type" : "productboard/v1/updatedFeature"
}What to do if your action is not listed here?
If this component doesn't have the action you need, you can use Custom Action to create your own. Custom Actions empower you to define HTTP requests tailored to your specific requirements, allowing for greater flexibility in integrating with external services or APIs.
To create a Custom Action, simply specify the desired HTTP method, path, and any necessary parameters. This way, you can extend the functionality of your component beyond the predefined actions, ensuring that you can meet all your integration needs effectively.
How is this guide?
Last updated on
PostHog
PostHog is the only all-in-one platform for product analytics, feature flags, session replays, experiments, and surveys that's built for developers.
Pushover
Pushover is a notification service that sends real-time alerts to mobile and desktop devices, integrating with apps, scripts, and services.