Start here
Self-training course
Work through these lessons in order. Each one builds a small, real result in about 10 to 20 minutes and teaches the skills the next lesson uses. Use a Development environment if you have one, so nothing touches production data.
Lesson 1: Install and run a template
You will learn: the Workflows page, templates, the canvas, running a flow and reading a run.
- Open Workflows. In the sidebar choose Build › Workflows.
- Start from Template. Click Start from Template, filter by the trigger type if you like, and open Showcase: Purchase approval. The card lists what the template contains and what it needs. Click Install.
- Explore the canvas. Open the installed flow. Click each node to read its settings; notice how edges connect the trigger to the steps and how conditions sit on some edges.
- Run it. Click Run. In Test this flow choose Open form and watch: the real Purchase Request form opens in a new tab (it does not need to be published for a test). Submit it and watch the run stream into the canvas, then open Runs and click Inspect on the run to see each step's input and output.
- Work the task. Open Tasks, open the Manager approval task and press Approve. Return to the run and see it continue.
Lesson 2: Your first flow from scratch
You will learn: data tables, the webhook trigger, Map fields, the Data table step, saving, activating and calling a flow.
- Create a table. Open Data Tables, click Create Data Table, name it
ordersand add three columns:order_id(Text, Unique),customer(Text) andamount(Number). Create it. - Create a flow. Open Workflows, click New Workflow and give it a name such as Orders inbound.
- Add a Webhook trigger. Open the node library, search
webhookand drag Webhook onto the canvas. In its settings turn on Enable webhook trigger, keep method POST and choose an Authentication mode (use Header secret with a connection for anything beyond a test). - Add Map fields. Add a Map fields step and connect the Webhook to it. In the studio add three target fields:
order_idfrombody.id,customerfrombody.customerandamountfrombody.amount. - Add the Data table step. Add a Data table step after Map fields, choose the
orderstable and the Insert operation, and map its columns from the incoming record. - Save and test. Click Save, then Run. In Test this flow paste a Sample request body such as
{"id":"A-1001","customer":"Acme","amount":250}and click Send test request. The test is isolated (nothing is activated) and streams onto the canvas; click each node to see what it produced. - Activate and call it. In the Workflows list set the flow's Status to Active. Copy the Webhook URL from the trigger and send a test request from your own tool, for example
curl -X POST "<webhook URL>" -H "content-type: application/json" -H "X-Api-Key: <your secret>" -d '{"id":"A-1001","customer":"Acme","amount":250}'. Open Data Tables › orders to see the new row.
Lesson 3: Branch on a condition and handle errors
You will learn: conditional edges, notification steps, error routing.
- Add an email step. Add an adapter step for your mail system (for example SMTP, operation send) and connect Map fields to it. Choose its connection and fill
to,subjectandtext. - Make it conditional. Click the edge into the email step, turn on Only pass matching records and set Field
amount, Operator greater than, Value1000. Only large orders are emailed; every order is still stored. - Route errors. Open the email step's Advanced settings, set On error to Route the error onward, and add a Data table or notification step on an edge with condition Field
error, Operator exists. A mail outage now records the failure instead of failing the whole run. - Test both paths. Save, send one small and one large order, and compare the two runs in Runs.
Lesson 4: Schedule a report
You will learn: the Schedule trigger, database queries, Group & summarize, Create Excel, attachments.
- Install the digest template. In Start from Template install Example: Daily Postgres digest -> Excel -> email, or build the same shape yourself.
- Set the schedule. Open the Schedule trigger, choose Cron expression, enter
0 7 * * 1-5(07:00 on weekdays) and pick your Timezone. - Point the query at your data. Attach your database connection to the query step and adjust the SQL. Use Test this step to preview the rows it returns.
- Summarize and deliver. Check the Group & summarize settings, the Create Excel file name (a date placeholder can be added, see Placeholders inside text) and the email step's connection. Save, set the flow to Active, and use Run once to check the result.
Lesson 5: Collect input with a form and approve it
You will learn: forms, entry forms, in-flow forms, decisions, tasks.
- Build two forms. In Forms create Expense request (fields: Email, Amount as Number, Reason as Paragraph) and Expense approval (the same fields plus two Button fields with the action Record a decision and values
approveandreject). Publish the first form. - Start a flow from the form. In a new flow add Form (starts flow) and select Expense request.
- Pause for approval. Add Wait for form, choose Expense approval, set a Due in (minutes) SLA and turn on Different person must decide.
- Branch on the decision. Add two steps after the form with edge conditions
_outcomeequalsapproveand_outcomeequalsreject. - Try it. Save, click Run and choose Open form and watch, submit the form, then work the task from Tasks with a different user than the one who submitted. When it works, publish the entry form and set the flow Active.
Lesson 6: Build an app on your data
You will learn: apps, actions, bindings, Load On Open, buttons, preview and publishing.
- Create the app. Open Apps, click New App, name it Orders console.
- Show the table. Place a Table and under Workspace Data Table choose
orders. It pages, searches and sorts on the server with no flow needed. - Add an action. Open Actions, click Add Action, name it
mark_shippedand choose a flow that updates an order. Set its Input Mapping to{"order_id": "{{ row.order_id }}"}and a Success Message such as Order shipped. - Add a row button. In the table's Row Buttons enter
Ship=mark_shipped. - Preview and publish. Click Preview to use the app for real, then Back To Editing, Save and turn on Published.
Lesson 7: Create an AI agent
You will learn: provider connections, instructions, tools, approvals, publishing a chat.
- Connect your AI provider. In Connections add a connection for your AI provider (for example OpenAI or Anthropic) with your own API key.
- Create the agent. In AI Agents click New Agent. Under Model choose the provider, the connection and a model.
- Write instructions. Describe who the agent is and what it should do, or use Draft with AI.
- Give it a tool. Click Add Tool, choose Flow as a Skill and pick a flow that looks up an order. Turn on Require human approval for any tool that changes data.
- Test and publish. Save, try it in Test Your Agent, then turn on Published and copy the chat URL from Share & Appearance.
Lesson 8: Promote to production
You will learn: environments, variables, connections by name, promotions and approvals.
- Prepare the target. Switch to the target environment and make sure it has connections with the same names as the ones your flow uses, plus any Variables it references.
- Promote. Switch back to the source environment, open Promotions, click Promote a Flow, choose the flow and the target environment, and review the changes.
- Approve. A protected environment (such as Production) needs a different authorized person to Approve; then the promotion is applied.
Where to go next
- Learn every node in the Node reference and every way to shape data in Mapping data & expressions.
- Write custom logic with Rhai.
- Let Matt draft steps, map fields and fix failures for you.
- Reach private systems with an On-Prem Worker.