KPI Tree

For agents

Automate any business process. With business context.

Canopy Agent Workflows chain triggers, agents, approvals and actions on top of Canopy, so every automated step knows the metric, the driver, the owner and the plan. The metrics start them, humans gate them, agents run them end to end.

CanopyCanopy Agents
Canopy Agent Workflows

Automation with context. Not another cron job.

The metrics start the process. Business-aware triggers

Missed targets, thresholds, outliers and silent metrics fire workflows, alongside schedules and inbound webhooks when you want them.

Humans gate what matters. Approvals first-class

Named reviewers, explicit rejection paths, and escalation up the real org chart when nobody responds.

Fully agentic where you choose. Your agents as steps

Drop platform or custom agents into any flow and fan out across your systems with the HTTP action.

Triggers that watch the business, not the clock

Generic automation fires on schedules and webhooks; these workflows also fire on the business itself. A target missed at period end, a threshold crossed, an outlier detected, a metric gone silent, a RACI assignment made, a task created or overdue. Schedules and inbound webhooks are there when you want them, but the point is that the metrics themselves can start the process.

Trigger
On target missedMetrics
On target missed
Metric threshold
Metric outlier
On metric staleness
RACI assigned

Build it visually. Publish it live.

The full palette, exactly as it appears on the canvas. Nine triggers watch metrics, tasks, ownership, schedules and webhooks; steps run agents, query metrics, branch, delay and wait for approval; actions post to Slack, send email, create tasks, assign RACI, escalate ownership and call any external system. Chain them on the canvas and publish: live enrolments re-flow, and every run records the exact path taken.

Target missed, run the action planPublished
Search nodes

Triggers

Metric threshold
Metric outlier
On metric staleness
On target missed
Task event
RACI assigned
On a schedule
Inbound webhook
Manually run

Steps

Run agent
Query metric
Condition
Wait for approval
Delay

Actions

Send Slack
Send email
Create task
Assign RACI
Escalate
HTTP request
Trigger
On target missedMetrics
Stress test the planAgents
Wait for approvalUtilities
Approved
Coordinate the agent teamAgents

Re-score stalled opportunities

Reforecast deferred revenue

Brief account owners

Rejected
Send SlackMessaging

Start from a template

The gallery ships production-shaped starting points: the Monday action plan to Slack, the monthly RACI audit email, stale-data and missed-target escalation up the org chart, threshold-triggered RACI reassignment, webhook-to-partner-API fan-out, and an approval policy that walks up the reporting line on its own. Pick one, adjust the nodes, publish.

Weekly action plan to Slack

Runs the action-plan agent every Monday and posts a summary to a Slack channel.

ScheduleAgentSlack

Monthly RACI audit email

First of each month, audits RACI assignments and emails a digest of the gaps.

ScheduleAgentEmail

Stale data: owner, then manager

Pings the metric owner when their data goes stale; if nothing changes, escalates to their manager via the org chart.

StalenessEscalateSlack

Target missed: escalate up the chain

Fires at period close when a metric misses its target. Notifies the Responsible owner, then their manager.

TargetEscalateEmail

Threshold breach: reassign Accountable

When a metric crosses a threshold, moves the Accountable RACI to the manager of whoever currently owns it.

ThresholdRACIOrg chart

Approval with escalation

An approval that walks up the org chart on its own: notify the manager, reassign, then auto-decline if nobody acts.

ApprovalOrg chartEscalate

Inbound webhook to partner API

Forwards an inbound webhook to a partner system over authenticated HTTP, with the body templated from the payload.

WebhookHTTPAuth profile

One-off investigation

Manually triggered agent run with a Slack summary. Useful for ad-hoc deep dives.

ManualAgentSlack

Rich business context at every step

Steps read Canopy as they run: the driver behind the move, the Accountable owner, the verified outcome history, the plan. Workflows understand your org chart natively, so you can escalate to a user's manager, assign RACI by job title, or find the common manager of a team without hardcoding a single name.

Send SlackMessaging

Channel

#revenue

Body

{{ trigger.metric.name }} missed target: {{ trigger.metric.value }} vs {{ trigger.metric.target }}

Plan: {{ steps['action-plan'].output_markdown }}

Owner: {{ metric.accountable.name }}

Live values from the trigger, upstream steps and Canopy context.

Humans stay in the loop, by design

Approvals are first-class: the next action only runs if the named reviewer approves, rejections branch to their own explicit path, and approvals can escalate up the org chart automatically when nobody responds, with the policy visible on the run itself. You decide which steps need a person and which do not.

Approval requestedRun #482

Roll out the revenue action plan?

Stress-tested by the action-plan agent. Conversion rate is the driver; three tasks proposed.

Waiting on Sarah Chen
ApproveReject

If nobody responds, this notifies Sarah's manager, then reassigns, then auto-declines.

Then let agents run it end to end

The same plan a person would approve can fan out across your systems: re-score stalled opportunities in your CRM, reforecast deferred revenue, brief the account owners in Slack. Deploy your own agents and drop them in as steps alongside the platform ones, so the whole process can be fully agentic where you choose. And the HTTP action calls any external system with saved auth profiles and tunable retries, so the workflow's reach is your stack, not our integration list.

Running
Coordinate the agent teamAgents
CRM

Re-score stalled opportunities

Finance

Reforecast deferred revenue

Slack

Brief account owners

Every action traced back to the run.

Every run tells you exactly what happened

Workflows keep their own run history: every fire shows the path taken through the graph, the inputs at each step and the outputs produced. When a run is waiting on someone, the run page says who and what happens next. No piecing it together from logs.

Run #482 · Revenue target missedtoday, 09:00
Trigger
Completed
On target missedMetrics
Completed
Run action-plan agentAgents
Pending
Wait for Sarah's approvalUtilities
Waiting on Sarah. If nobody responds, this escalates to her manager automatically.

Common questions

Do Canopy Agent Workflows work without the context layer?
The builder works standalone, but the point is the context: driver edges, RACI, verified outcomes and plans are what make an automated step safe and specific. Without context you have generic automation; with Canopy the workflow knows the business it is acting on.
Can a workflow call systems outside KPI Tree?
Yes. The HTTP request action calls your own services, dashboards or webhooks using saved auth profiles, with retry behaviour you can tune per step. Inbound webhooks can also trigger workflows from outside.
What happens when an approval is rejected?
Rejections branch to their own explicit path, so you handle both outcomes deliberately rather than the workflow silently stopping.
What can start a workflow?
A schedule, a metric crossing a threshold, an outlier, a silent metric, a missed target at period end, a RACI assignment, a task being created or becoming overdue, or an inbound webhook.
Can we see why a run did what it did?
Every run records the exact path taken, the inputs at each step and the outputs produced, including which branch an approval took and any escalations along the way.

See it on your own metrics.