Pipeline
Rules
On the web
A rule is a trigger, a list of conditions that must all match, and a list of actions that run in order. Rules, under the pipeline's settings, is off for the whole workspace until the switch at the top is flipped, drafting one never risks moving a real card.
Not captured yet
This picture is taken from the running app, not drawn by hand. Run npm run docs:shots to take it.
pipeline-rules.png
Triggers
| Trigger | Fires when |
|---|---|
| Status changed | A card moves to a status you name, or any status. |
| Stage entered | A card's status changes group, Not started, Active, Completed, Closed. |
| Version uploaded | A new cut lands on a card. |
| Publish date set | A card's publish date is set or changed. |
| Field set | A custom field's value is set or changed. |
Conditions
Every condition must match: the campaign a card is in (or in none), its priority, whether someone is assigned, or a custom field's value.
Actions, in order
| Action | What it does |
|---|---|
| Move to a status | The card moves there, the same as dragging it. |
| Assign a member | Adds them to the card's assignees. |
| Assign by role | Picks whoever on that role has the fewest open cards right now, the same count Workload draws. |
| Set the due date | In hours from now, or before the publish date. |
| Set the estimate | In minutes, for Workload to spread. |
| Apply a pricing template | Sets price and estimate from a saved template. |
| Notify a member | Leaves them a mention in the card's activity. |
| Wait, then continue | Pauses the rule; the rest of its actions run once the wait is up, even if nobody has the workspace open. |
Rates and pricing templates
Set a rate per role and save pricing templates (a name, a price, an estimate) here too, the rate is what Money costs tracked time at, and a template is what an Apply a pricing template action sets.
Run history
Every firing of a rule is a row: done, waiting on its pause, failed with why, or skipped because the card no longer matched. Run now on a card fires one rule by hand, checking its conditions the same way a real trigger would.