Workflows and custom nodes
Workflows are automations you draw as a graph of steps. Custom nodes let you add your own steps to that graph — a prompt shaped your way, or a call to any web address — without writing code.
Workflows are covered in depth in Workspace (what they are and when to use one) and The canvas (how to build one). This page covers how to find them and the part those pages do not: custom nodes.
Finding Workflows
- In chat, open the + menu and choose Workflows — "Chain steps into an automation that runs on its own".
- Or go straight to
/user/workspace.
The Workflows page has three tabs:
| Tab | What is there |
|---|---|
| Workflows | Your graphs. Switch between Mine and Shared with me, and use Search workflows. |
| Templates | Ready-made graphs to start from |
| Custom Nodes | Steps you have built yourself (below) |
Custom nodes
The canvas comes with built-in nodes for text, data, images, audio, video and your connected apps. When you find yourself wiring the same few nodes together again and again — the same prompt, the same API call — turn it into a custom node and drop it in with one click.
There are two kinds:
| Kind | What it does | Good for |
|---|---|---|
| Ask a model | Sends a prompt you wrote, filled with the node's inputs, to an AI model | Scoring a lead, classifying an email, extracting fields in your format |
| Call a URL | Calls a web address with GET, POST, PUT, PATCH or DELETE | Posting to your CRM, fetching from an internal API, pinging a webhook |
No code runs in a custom node. It is a prompt or a web request, saved under a name.
Creating a custom node
- Open
/user/workspaceand click the Custom Nodes tab. - Click + New node.
- Fill in the common fields:
| Field | What to enter |
|---|---|
| Name | What it will be called in the palette |
| Kind | Ask a model or Call a URL |
| What it does | A one-line description |
| Input ports (comma separated) | The inputs other nodes wire into it, for example email_text, company. Up to 8. Names are tidied to lowercase with underscores, so Customer Name becomes customer_name. |
- Fill in the fields for its kind.
Ask a model
| Field | What to enter |
|---|---|
| System | Optional standing instructions for the model |
| Prompt | The prompt itself. Write {{port}} to pull in an input, for example Score this lead from 1 to 10: {{email_text}} |
| Return fields (comma separated, optional) | Fields you want back, for example score, company. The model then answers with exactly those fields, and each becomes its own output on the node. |
Call a URL
| Field | What to enter |
|---|---|
| Method | GET, POST, PUT, PATCH or DELETE |
| URL | An http:// or https:// address. Placeholders work here too: https://api.example.com/items/{{id}} |
| Body | Optional request body, with {{port}} placeholders |
- Click Publish. The node shows Published v1.
Your node now appears at the top of the Apps tab in every canvas's node library.
Using it on a canvas
Drag it onto the canvas and wire its inputs like any other node. Each placeholder is filled from the wired input first, then from the node's own settings; a placeholder with no value becomes empty.
Outputs:
| Output | Ask a model | Call a URL |
|---|---|---|
| Result | The answer (parsed, if you set return fields) | The response (parsed, if it is JSON) |
| Text | The answer as plain text | The response as plain text |
| Status | — | The HTTP status code |
| One per return field | Each field you listed | — |
Model nodes retry automatically if a call fails. URL calls are not retried, so a POST is never sent twice by accident, and they time out after 45 seconds.
Editing and versions
Click Edit on a node, change it, and Publish again. Every publish creates a new version — the card shows it as, for example, v3 · 3 versions.
Workflows that already use the node keep the version they were built with, so an edit never silently changes a graph that works. To move a workflow to the new version, change the Version setting on the node in that canvas.
Deleting
Click Delete on the node's card. You are warned: "Graphs using it will stop running." Remove it from those workflows first, or replace it.
You can keep up to 40 custom nodes.
Tips
- Use return fields whenever a later step needs a specific value.
scoreas its own output is far easier to branch on than a paragraph. - Name ports for what they carry —
invoice_text, notinput1. You will see those names every time you wire the node. - Keep secrets out of URLs and bodies. A custom node has no field for API keys or auth headers. For apps that need a login, use a connector node instead.
- Test in a small graph first, then drop the node into the real workflow.
FAQ
Is this the same as Automations?
No. Automations are described in chat and run through the assistant. Workflows are drawn step by step on a canvas. Workspace explains when to use which.
Can I share a custom node with my team?
Custom nodes follow your Team sharing defaults, like your workflows.
Can a custom node run my own code?
No. It can ask a model or call a URL. To run code, call an endpoint you host with Call a URL, or ask the assistant to run it on your cloud computer.
Next steps
- Read Workspace and The canvas if you have not built a workflow yet.
- Turn one prompt you keep re-typing into an Ask a model node.
- Add a trigger so the workflow runs on its own — see The canvas.
Open App