Workflows: Tests to Odoo, Linear & More
April 21, 2026
You can now build workflows that react to your test data. A run comes in, TofuPilot checks conditions, and fires actions: emails, Discord messages, Odoo records, Linear tickets, or any HTTP endpoint. All configured from a visual editor with a settings sidebar for each node.
Triggers

You can start a workflow from any of these events:
- Run created, Unit created, Part created, Revision created, Batch created
- Recurring schedule with frequency (daily, weekly, monthly), time, and timezone picker
- Manual trigger
Actions

You can send notifications, push data to external tools, or run utilities. Each action has its own settings panel in the sidebar.
Email: Pick recipients from your team (with avatar search), write a subject and body. All text fields have a variable explorer that lets you browse and insert fields from the trigger and upstream nodes (serial number, outcome, procedure, part number...).
Discord: Paste a webhook URL, compose a message with the same variable explorer.
Odoo: Select a connection, pick a model from a live dropdown (fetched from your Odoo instance), and map fields with a dynamic builder. Three actions available: Create Record, Update Record, Post Message.
Linear: Select a connection, pick team, project, state, priority, labels, and assignee from live dropdowns. Create Issue or Add Comment.
HTTP Request: Choose method (GET, POST, PUT, PATCH, DELETE), enter a URL, and write a body with variables.
Utilities: Delay (configurable duration), Formula (math on variable values), Celebrate (confetti on completion).
Conditions

You can route test data down different paths based on any field. The condition builder lets you pick a variable, choose an operator, and set a value.
- Filter: stops the flow unless conditions are met. Supports multiple rules with AND/OR logic.
- If / Else: splits into two paths based on a condition.
- Switch: fans out into multiple named branches based on a field value. Each branch gets its own downstream actions.
Operators include equals, not equals, contains, starts with, greater than, less than, is empty, and relative date comparisons.
Example: quality alert on failed run
- Trigger: Run created
- Filter: outcome equals FAIL
- Switch on procedure:
FVT-001: email quality team + Linear issueICT-001: Discord alert to electronics channel- Default: email to test engineering lead
Failed tests go to the right people with full context. No glue scripts.
Example: sync serial numbers to Odoo
- Trigger: Run created
- Filter: outcome equals PASS
- Odoo Update Record: write the serial number to the corresponding production lot in Odoo using the part number to find the record
Your serial numbers stay in sync between TofuPilot and Odoo without manual entry.
Execution tracking

You can inspect every workflow run step by step. Each execution shows status, duration, errors, and the data that flowed through each node. The view follows the same layout as the editor.
Running executions refresh live. Failed steps show the error inline. Filter by status and drill into any execution.
The editor
You can build everything from a visual canvas. Add nodes from the palette, wire them up, and configure each one in the sidebar. Drag to pan, scroll to zoom. Auto-saves.
What's next
InvenTree and Slack integrations are in progress. Webhook triggers (so external systems can start workflows) are next. If you need a specific integration, tell us on Discord.