The places in Pipefy where your app can appear.
A feature is a place in Pipefy where your app appears. You declare which ones your app uses in the features array of its manifest, then register a handler for each one in PipefyApp.initCall():
PipefyApp.initCall({
'card-badges': function (p, context) { /* ... */ },
'card-buttons': function (p, pipe) { /* ... */ },
'card-tab': function (p, pipe) { /* ... */ },
'pipe-buttons': function (p, pipe) { /* ... */ },
});
An app can use as many as it needs. Each handler returns a description of what to render — the shapes differ, so see the individual pages below.
Handlers can be async
Pipefy awaits whatever your handler returns, so you can return a
Promise— or use anasync function— if you need to fetch configuration before deciding what to render. Returning a plain array or object works exactly as well; both are shown throughout these docs.
card-badgesis the exception: Pipefy stores your handler and calls it per card as cards render, rather than once at startup.
The features
| Feature | What it is | Use it when you want to |
|---|---|---|
| card-badges | Icons or symbols that represent actions on your cards | Show a small status indicator on cards in the board |
| card-buttons | A clickable button on a card that activates a feature | Add an action to a single card |
| card-tab | A tab inside an open card, holding related information | Show a panel of related data inside a card |
| pipe-buttons | Buttons on pipes that reveal dropdown options, modals, or sidebars | Add an action that applies to the whole pipe |
| pipe-view | A full-width view of your own that replaces the Kanban board | Replace the board with your own full-page view |
Buttons and badges only trigger UI — the sidebars, modals and dropdowns they open are covered in User Interface functions.

