Skip to content

Workflows

A workflow is an automation you build yourself: a trigger (something that happens in the workspace) and steps that run after it, drawn left to right. Open Workflows in the sidebar.

Members see workflows and their runs. Building, publishing and running them needs the Automations permission (Admins have it). Guests do not see workflows.

  1. Press New workflow and choose Start from scratch, or a template (see Start from a template below). It opens as a draft in the editor.

  2. Click the empty trigger (the dashed box with a +) and pick what starts it under Triggers in the node list (the place for the first step shows once a trigger is chosen): an item is created or changed, an item is due soon (the day before its due date), an item is overdue (the day after its due date), a new comment, an item is unblocked (the last item it waits on is done), someone is mentioned in a comment (once per person mentioned, with mentioned.name and mentioned.email), a message in a project chat (message.body; only chats of projects that the person who publishes the workflow is a member of, never as a guest), a file is added to an item or project (file.name, file.size), a project is created or changed, a deal is won in a connected CRM (see App triggers below), Webhook (see below), On a schedule, or Run manually. On a schedule runs every 5, 10, 15, 20 or 30 minutes (on the clock, such as :00, :15, :30, :45), every hour or every few hours (at a minute past the hour), every day at a time, or every month on a day (the last day in shorter months), on the weekdays you pick, in the workspace’s time zone; the settings show the next three times. It runs at most every 5 minutes; each run uses credits, so a short interval adds up fast. The run gets date, time, weekday (1 = Monday) and scheduledAt (UTC) to use in its steps. A schedule never runs the moment you publish, only at its next time; if a time is missed (for example while the workflow was paused) by more than six hours, it is skipped. Add conditions under Only when to narrow it, for example item.priority is urgent. A workflow can start from several triggers: right-click the canvas or a trigger and choose Add trigger, or drag one from the Triggers tab of the node list. A new trigger is not connected yet: press its + or drag its link to a step (see Connect steps below). The workflow runs once per event, from the first trigger that fits. Up to 10 triggers, one of them Run manually at most.

  3. Press + after a trigger or step to add the next step there, connected. Add step at the bottom of the canvas, or right-click the canvas and choose Add step, puts a step on the canvas on its own (where you clicked), to connect as you like. Either opens the node list beside the canvas; you can also drag a step or trigger from it onto the canvas. It lands where you let go; when the list was opened from a +, the step is also connected there. The list is split into sections that open and close (the number shows how many it holds); the sections you open are remembered, and a search (by name, what a step does, or its sub-section such as Ask or Wait) opens every section with a match. Larger sections are split into small sub-sections, for example Items and Projects, Send and Ask, or one per app; click one to close or open it. Point at a step (or move to it with the keyboard) to read what it does. Steps are grouped by color:

    • Items and projects (blue): create an item, add a comment, find an item, find items, update an item, archive an item, create a project, find a project, update a project, project members, link items, move card, create from template, assign in turn, create project from template, archive project, create file on item. Create file on item saves a text (.txt), Markdown (.md) or CSV (.csv) file on an item, as if it was uploaded: a weekly report, meeting notes or a list. For CSV, give a List from an earlier step (such as {{steps.find.items}}) and the Columns to take from each entry (ref, title, status), or write the CSV yourself in Content. A file is at most 1 MB and counts toward the plan’s storage, and workflows can make at most 200 files an hour in a workspace. A cell a spreadsheet would run as a formula (starting with =, +, - or @) is written as text, and text that looks like a web page is refused. Archived items take no files. Create project from template makes a new project as a copy of a template project: its description, tags, boards and columns, its members and its items with their sub-items, tags and dependencies (at most 200 items; archived ones stay behind). Every item starts in the first status. Give a Start date and the due dates move with it (a task due on day 10 of the template is due on day 10 of the copy; the template needs a start date for this); without one the due dates are left empty. Guests of the template are never added to the copy, and are never kept as assignees. Leave Key empty to make one from the name. Archive project archives a project, as in the app; nothing is deleted, and it can be restored. Assign in turn makes one of the people you pick the item’s assignee: In turn gives it to the next person after the one this step chose last, and Fewest open items to the one with the least open work. Only members, never guests. Move card moves the item’s card to a column of a board in the item’s project, by the names of the board and the column (upper or lower case does not matter). A column that stands for a status, person, priority, type or tag sets that value on the item, as dragging the card does; leave Column empty to take the card out of a free column. A step never makes or changes boards or columns. Project members adds a person to a project or takes them out (for example everyone who should see a new client project). Only members of the workspace, never guests: guests are invited to projects by a person, in the app. An archived project is not changed. Create from template makes a new item as a copy of a template item: its description, type, priority and tags, and its sub-items (at most 50). Keep your template items in a project of their own, such as “Templates”, and choose the project the copy goes to; title, assignee and due date can be set for the copy. Link items adds or removes a dependency between two items (blocks, is blocked by, relates to), the same as on the item page; a link that would make items wait on each other in a circle fails the step. Find project looks a project up by its key so later steps can use its name, lead, dates and number of open items, such as {{steps.find.leadEmail}}; if there is no such project it gives found: false. Update project changes a project’s name, description, lead, start date or due date; empty fields stay as they are, and an archived project is never changed. Archive item archives an item and its sub-items, as in the app; nothing is deleted, and it can be restored from Archived items in the project. Find items lists up to 100 items that fit its filters (project, open or done, status, assignee, due before a date, words in the title), never archived ones, as items and count; use it with For each. Find item looks an item up by its reference (ABC-12, or the item from the trigger) so later steps can use its fields, such as {{steps.find.status}}; if there is no such item it gives found: false and the run goes on. Create item can set every field an item has: title, description, assignee, status, type, priority, due date, tags and parent item. Update item changes an item’s status, priority, assignee, due date, title, description, type, parent item and tags (Add tags and Remove tags). Tags are picked from the workspace’s existing tags; a step never makes new tags, and a tag that does not exist fails the step. A parent item must be in the same project. Leave a field on Leave as it is to keep it, or choose Clear it to empty it. The change is made as the workflow and follows the workspace’s rule for closing items that still wait on others.
    • Messages (green): Send notification (a short alert among the person’s notifications that something happened, which cannot be replied to), Ask a person (a yes/no question in a member’s Inbox; the run waits for the answer, see Ask a person below), Send direct message to a person (not a guest) in chat (a message that stays in the conversation, better for longer text), Post in project chat, or Send email to a person in the workspace (not a guest; never to other addresses), with a subject and text. The email says which workflow and workspace sent it; at most 10 an hour to one person and 500 a day per workspace. Chat messages come from the workflow itself, shown as “Workflow · ”; you cannot reply to it. A workflow posts only in chats that the person who published it is in, never in an archived project, and sends at most 20 direct messages an hour to one person and 30 messages an hour in one chat.
    • Logic and flow (gray): Only once per item lets each item through once for the workflow: the first time the run goes on at First time, every later time at Already done. Once per is {{itemId}} unless you choose another value, such as a deal or an email address. Give Again after days to let the same item through again once that many days have gone by. Test runs never count. Is it working hours? goes on at Yes between two times of day (such as 08:00 and 17:00) on the days you choose (Monday to Friday, Monday to Saturday or every day), in the workspace’s time zone, and otherwise at No. It checks now, or a date and time from the data. A span past midnight (22:00 to 06:00) belongs to the day it starts. On No it also gives nextStart, when working hours begin next, which Wait until a date can use. Public holidays are not known. Count and sum works with a list from an earlier step, such as the items of Find items ({{steps.find.items}}): Count how many there are (with a Field, only those where it has a value), Sum, Average, Smallest or Largest of a number field, Group and count how many there are of each value (for example items per status or per person, also as text with one line per value and top for the most common), or Join into text the values of a field. Field is the name inside each entry, such as status or assigneeEmail. The answer is {{steps.<step>.result}}. It costs no credits. Date and text works out a date or tidies up text for the steps after it: add days, workdays (Monday to Friday), weeks or months to a date (a minus number goes back), count the days between two dates, format a date (such as 31 December 2026, the weekday or the week number, in English or Swedish), today’s date in the workspace’s time zone, upper or lower case, shorten a text, replace text, or split a text into a list (for For each). The answer is {{steps.<step>.result}}; dates also give weekday (1 = Monday) and week. A missing date, such as an item without a due date, gives an empty result and valid: false instead of stopping the run. Wait for a change holds the run until an item changes the way you want (see below). For each goes through a list, usually the items from Find items: the steps on its Each output run once per entry, one entry at a time, and then the run goes on at Done. Those steps use the entry as {{loop.item.title}}, {{loop.item.id}} and so on, plus {{loop.index}} (1, 2 …) and {{loop.count}}. Fill in Collect from each to gather a value from every entry, for example {{loop.item.reference}} – {{loop.item.title}}: it is read after each entry’s steps, and the steps after Done get the values as {{steps.<step>.collected}} (a list) and {{steps.<step>.text}} (one per line), for example for one summary message instead of one per item. It goes through at most 100 entries (set a lower At most if you like), each step costs its credits every time, and a For each cannot be inside another. A test run goes through the steps once, for the first entry. A condition that splits the flow into Yes and No, a Switch that sends the flow down one of several paths (up to 10 cases, each with its own conditions and optional name, plus Else for anything that matches none; cases are checked from the top and the first match wins, or turn on Send to every case that matches; the step’s output says which cases matched as matched, case and name), a Random split that sends each run down one path by chance (2 to 10 paths, each with a share in whole percent and an optional name; what the shares leave below 100% goes to Otherwise, so 10% to a test path lets the other 90% go on as before; the shares can add up to at most 100%; the output gives case, name and roll, a number from 0 to 99; useful for A/B tests), a filter that stops the run unless the conditions hold, a wait (seconds, minutes, hours or days, at most 365 days), and Set fields, which names values for the steps after it (written by you or taken from the data, plain text, up to 20 fields); a later step uses them as {{steps.<step>.<name>}}. Press Add time in a wait to combine units, for example 1 hours + 30 minutes; the parts are added up and the total is shown below. Press fx next to a number to take it from the data instead (for example {{item.days}}); it is read when the step runs, and a value that is not a positive number waits nothing. Or choose Wait until to wait for a date: a date from the data (such as the item’s due date) or a fixed date, at a Time of day in the workspace’s time zone (fx takes it from the data), with an Offset before or after the date (for example 1 day before the due date). If the date is missing or has passed, the run goes straight on; it waits at most one year.
    • AI (round, violet): AI prompt asks the AI with your own instruction and answers as text ({{steps.<step>.text}}), or as named fields if you list them under Answer as fields (for example who, when gives {{steps.<step>.who}}). Summarize sums up text in a few sentences, Classify puts text in one of your categories (up to 20) and gives category and matched (use a Switch or Condition after it), and Write text writes a reply, description or message from your instruction. Put item data and earlier steps in the step’s data field (Data for the AI, or the text to summarize or classify) with {{…}}; the instruction is written as is and cannot contain run data. See AI steps below.
    • Apps: the steps of apps the workspace has connected (Slack, CRM). They are described below. HTTP request is under Logic and flow, next to Run a workflow and Respond to webhook.

    Within a section, steps that look things up come first, then those that make and change things. Triggers are grouped as Items, Comments, Projects, Run, schedule, webhook and Connected apps.

  4. Double-click a step to open it (press Esc to go back to the canvas). The step shows three columns: Input, Settings and Output. Under Settings, How to use this step gives an example and what the step gives the steps after it (such as {{steps.<step>.ref}}), and each field has a line saying what it takes, such as a reference like ABC-12 or an email address from the data. Triggers have the same help. Close the help box once you know the steps; the editor remembers that.

The draft saves as you go. Rename the workflow by clicking its name at the top.

New workflow opens a gallery: Start from scratch for an empty canvas, or one of the ready-made templates, grouped as Items, Team, Reports and AI, and Forms and apps:

  • Remind before the due date: the day before an item is due, its assignee gets a notification.
  • Overdue item to project lead: when an item is overdue, the project’s lead is told.
  • Weekly status in the project chat: Monday at 08:00, open items are counted per status and posted in a project chat.
  • Assign new items in turn: new items without an assignee go to the next person in a group.
  • Ask for approval: run it on an item; a person picks Approve or Reject and the answer is written as a comment (no answer in 7 days tells the assignee).
  • Welcome post in new projects: every new project gets a welcome message in its chat.
  • Tell the project chat when items are done: when an item moves to a done status, its project chat hears about it.
  • Form to item: a form on your website posts to the workflow’s webhook; each request becomes an item and the form gets the item’s reference back.
  • AI summary as a comment: run it on an item; AI summarizes it in three points and writes it as a comment.
  • Won deal to new project: when a deal is won in a connected CRM, a project is copied from your template project and the team is greeted in its chat.

The texts in a template’s steps are in the language you use the app in. A template is an ordinary draft: nothing runs until you publish it. Cards marked with a pencil have something to fill in first, such as the project to post in or the people who take turns; publishing tells you if something is missing. Test it, change what you like, and publish.

Press New folder on the Workflows page to sort workflows into folders. Drag a workflow onto a folder to move it there, or right-click it and choose Move to folder. Open a folder to see its workflows; drag one onto Workflows at the top to take it out again. Press New folder inside a folder to make a folder in it, and New workflow (at the top or on the last row of the list) to make a workflow in it. The tabs stay in the open folder. Right-click a folder to rename it, change its Color or remove it: removing a folder moves its workflows and folders up a level.

The list shows 10 workflows a page, with the folders on top of every page; use the arrows under the list to go to the next or previous page.

Right-click a workflow to Rename it, give it an Icon and a Color, move it, pause or turn it on, or archive or restore it. In the editor, the folder shows in the path at the top, and the icon next to the name changes the icon, color and folder.

  • Hover a trigger or step for buttons above it: test (from this trigger, or up to this step), Turn off / Turn on, edit and delete. A node that is turned off is faded and crossed through and is passed over when the workflow runs: a trigger that is off starts nothing, a step that is off is skipped at no cost (a condition goes on as Yes, a Switch takes its first case, a filter lets everything through). When a test or run plays on the canvas, the links through a step that is off still turn green. The same choices are on its right-click menu.
  • Select: click a trigger or step to select it (double-click it, or press its edit button, to open it). Shift- or Ctrl-click adds a node or note to the selection, and dragging on the empty canvas selects everything the box touches. Drag one of them to move them all together; press Delete or Backspace to delete them (one trigger always stays) and Esc to clear the selection. Press Ctrl+C and Ctrl+V (Cmd on a Mac) to copy and paste the selected steps and notes: the copies land a little down and to the right, selected, with only the links between them, and their {{steps.…}} values point at the copies. You can also paste into another workflow in the same tab. Triggers are not copied. To move the canvas, drag with the middle mouse button (scroll-wheel click), or hold Space and drag.
  • Drag a step to move it; the lines follow, and the other steps and triggers stay where they are. Tidy up (bottom left) places every step automatically again; a step that several links lead to goes after all of them, level with their middle.
  • Connect steps: drag from a trigger’s or step’s output (the dot on its right, or Yes / No on a condition) to another step’s input (the dot on its left). An output can lead to several steps: drag another link from the same dot (up to 10), and the branches run one after the other, top to bottom, each to its end; a Wait in one branch holds the whole run, and a Filter that stops ends only its own branch. Several outputs can also lead to the same step, so two triggers or both branches of a condition can meet again; a step that two branches meet in runs once for each. Connecting or removing a link never moves the steps. Hover a link and press the bin in its middle to take it off, drag its end away and let go on the canvas, or right-click it and choose Remove connection. Let go of a new link on the empty canvas to pick a step to put there. Links that would go round in a loop are refused. A step no trigger leads to is placed below the flow and must be connected or removed before you publish.
  • Rename a step by clicking its name at the top of the step, for example “Is it urgent?” instead of “Condition”.
  • Right-click a step to edit, rename, add a step after it, duplicate or delete it. Deleting a step connects what led to it with the step after it. Deleting a condition removes the steps on its Yes and No branches too, unless another link still leads to them. Right-click the empty canvas to add a step or trigger where you clicked, add a note, test run, tidy up or zoom.
  • Change trigger: press Change in the trigger’s settings, or right-click it and choose Change trigger. Its name and conditions stay. Remove trigger in the same menu removes one of several triggers.
  • Notes: right-click the canvas and choose Add note to leave a sticky note. Click a note to write in it straight away; formatting shows as you write. The bar above it formats the text: heading, subheading, bold, italic, strikethrough, bulleted and numbered lists, links, and A−/A+ for a smaller or larger text size (Ctrl+B, Ctrl+I and Ctrl+K work too; on a link the link button removes it; the buttons light up for the format under the caret; Esc or a click outside closes it). Pasted text comes in as plain text. Hover a note and pull an edge or corner to resize it; the note follows the pointer. Drag it to move it. Right-click it to change its color or Text size (Small, Medium, Large, Extra large) or delete it. Right-click inside a note while you write for cut, copy, paste, select all, formatting, text size, color and Done writing (Shift+right-click gives the browser’s own menu, for spelling). Checklist in the bar (☑) makes a list with boxes: click a box to tick it, also when you are not writing; ticked lines are struck through. Notes are never run.
  • Undo: press Ctrl+Z (⌘Z on Mac) or the undo button next to Add step to take back the last change to the canvas, and Ctrl+Shift+Z or Ctrl+Y (or the redo button) to do it again. It covers adding, deleting, moving and connecting steps and triggers, settings and notes, up to 50 steps back while the editor is open. In a text field or a note, Ctrl+Z undoes the typing there.
  • Test workflow sits at the bottom of the canvas, after Add step and the undo buttons (they stay in the middle when the node list is open). It tests the whole workflow: every connected trigger in turn, each with its own data, and the steps each one leads to (a check mark shows what ran). The test plays on the canvas step by step: it starts at the trigger, each link turns green as the test goes along it, the step being tested spins, and a check mark (or a stop for a filter that stops) shows when it is done. A Wait waits for its real time, with the time left on the node; press Skip wait to go on at once, or Show result to see the end straight away. While a test runs or plays, Test workflow turns into a red Stop: press it to end the test at once (what has been shown so far stays on the canvas). To test one part, right-click a trigger and choose Test this trigger, or right-click a step and choose Test up to this step. A test never does anything: it shows what each step would do and costs no credits. Open the assistant beside the editor with its button or Ctrl+J; it stays open or closed as you left it, on every page.

In a condition you pick the field from a list with plain names, such as Status, Assignee or Due date. The list shows what the trigger gives, plus the fields of earlier steps once you have run a test.

The value is a list too when the field has fixed choices: your statuses, priorities, types, labels, people and projects. Dates get a date picker. The comparison fits the field: dates can be before or after, numbers greater or less than, labels contain or do not contain.

Click fx next to a field or value to write an expression instead. A field expression is a path such as item.status; a value expression can use data, such as {{steps.check.result}} or {{item.assignee}}. Click fx again to go back to the list.

Conditions, filters and the trigger’s Only when use condition groups:

  • Between two conditions there is an AND / OR switch. AND means both must be true; OR means one is enough. Click to switch.
  • Click Add group to add another group. Between the groups there is the same AND / OR switch.
  • For example, “(priority is urgent and type is bug) or the item is overdue” is two groups with OR between them.

You can have up to 10 groups with 20 conditions each. A workflow can’t be published with an empty group or an empty field.

Each step can use the trigger’s data and the output of every step before it on the same path. The Input column always lists the trigger’s fields by name; after a Test run it also shows their real values and what earlier steps gave. Drag a field from Input into a field under Settings, or click the field under Settings and then the value in Input. It is inserted as {{item.title}} and shows as a green chip. Fields from an earlier step look like {{steps.notify.to}}.

Fields that name a person, a project or an item are lists, never free text: pick a person or project from the workspace, or data such as The item’s assignee, Who did it, The item from the trigger or The item that was created in an earlier step. Click fx to write an expression instead.

Templates are plain text. Nothing in them is ever run as code.

Open the trigger and press Fetch test data. It fetches a real event from your workspace: pick an item under Fetch from (the latest items are listed, and you can search), or keep Latest event that fits the trigger. Or press Use example data to test with made-up data built from your own statuses, people and projects, for example before anything has happened in the workspace. The trigger’s Output then shows what was fetched, and every later step shows those values under Input. Until then, Input lists the fields by name only. Press Clear test data (in the Output or on the test bar under the canvas) to remove the test run and its data from the editor; nothing in the workspace changes.

Test run runs the draft on real data from your workspace without changing anything and without using workflow credits. AI steps really ask the AI in a test, so you see a real answer; that uses your own AI assistant credits, and if you cannot use the assistant or have no credits left the step only shows what it would ask. It uses the latest event of the trigger’s kind that passes the trigger’s conditions (the bar at the bottom says which item), or the item picked under Fetch from on the trigger. Steps that ran get a check mark; open a step to see what it would have done under Output.

Nothing runs until you press Publish. Each publish is saved as a new version (v1, v2 …), and runs always finish on the version they started with. The draft saves itself as you work (the label shows Saving …); changes after a publish show as Saved · not published until you publish again.

Under Versions you can view an old version (read only), compare the draft with the live version (changed steps are marked), and restore an old version to the draft. Restoring does not publish it. To undo a publish in one go, press Roll back on an earlier version: after you confirm, that version runs again from then on, the workflow is turned on, and the draft becomes the same as that version (unpublished changes in the draft are replaced, which the confirmation says). No new version is made, so the list shows the old version as active again, and runs already under way finish on the version they started with. Rolling back is checked like a publish, so a version that is no longer valid (for example a step of an app that is no longer connected) cannot go live.

Use the Active switch to pause or resume a published workflow. A published workflow with the Run manually trigger has a large green Run button above Test workflow at the bottom of the canvas. It runs the published version for real (it uses credits) and you follow the run step by step on the canvas; it is also saved under Runs. The same Run button is on the Runs tab and on the workflow’s row in the workflow list. Type an item first to run it on that item.

Press Export (the download icon at the top of the editor) to download the workflow as a JSON file: the draft, or the old version you are viewing. Values of secret-looking headers in HTTP request steps (such as Authorization or X-Api-Key) are left out; fill them in again after an import. Everything else comes along as written, such as URLs, email addresses and texts in the steps, so check the file before you share it.

On the Workflows page, press Import and choose a file (at most 200 KB). It becomes a new draft in the open folder and the editor opens on it. An import never publishes or switches anything on: the file is checked like any saved draft, and nothing runs until you publish. Webhook URLs, allowed HTTP hosts and connected apps are not part of the file; set them up in the workspace you import into.

To bring a file into a workflow you already have, open it and press Import (the upload icon at the top of the editor). After you confirm, the file replaces the draft; press Ctrl+Z to undo, and nothing is published until you publish.

When Claude, ChatGPT or another assistant is connected to your workspace (AI assistants), you can ask it to build workflows from the chat: “Make a workflow that posts in the project chat when an item is done”. It can read your workflows, create new ones as drafts and change drafts. It never publishes, turns on or runs a workflow, and it gives you a link to the draft each time: open it, test it and publish it yourself. It needs a connection that may change things, and your role must be allowed to build workflows. What it does is logged in the audit log under your name, marked via Claude (or the assistant’s name).

The Runs tab lists the latest runs with their number in this workflow (#1, #2 …), what started them (an item, or for example Started by hand by a person, On schedule or From the webhook), status, version and credits. Open a run to see each step and what it gave; a step that failed opens by itself and shows why, with the app’s own message when an app answered with an error. Press Show on canvas to play the run on the version it ran, step by step: each link turns green as the run goes along it, a check mark or a stop shows on each step, and a step that failed is marked in red: point at it to read why, or open it to see the run’s data under Input and the step’s answer or error under Output. A run that is still going is followed live; the step it is on spins, and a Wait shows the time left. Back to the draft ends it.

When a run fails, the people behind the workflow hear about it in their Inbox: the person who made it and the person who published the version that ran (members only; if neither can be told, the workspace’s owners and admins). The notice shows the error and links to Runs. You hear at most once an hour per workflow, so a workflow that fails over and over does not flood the Inbox.

A failed run can be run again from the step that failed: open it under Runs and press Run again from …. It runs the published version, so fix the problem, publish, and then run it again. The steps before the one that failed are not run again, and what they gave is kept (a comment that was already written is not written twice). It needs the right to build workflows and an active workflow, and the step must still be in the published version.

Built-in flows come with a connected app (for example, create a project when a deal is won in Attio) and show at the bottom of the Workflows page with the app’s icon. Switch one on or off there, or open it to see its trigger and steps on the canvas, read only. They are free.

When AI is off for the workspace (no AI source, or Allow AI steps in workflows turned off under Settings → AI assistant), AI steps on the canvas show as AI is off and cannot be added from the node list. A run that reaches one stops with an error until an admin turns AI steps on.

AI steps are built so they cannot be misused:

  • The AI has no tools. It can only read what the step gives it and answer; it cannot change anything, call anything or choose the next step.
  • The data field (item text, comments, earlier steps) can be written by anyone, so the AI is told to treat it only as material and never to follow instructions in it. Your instruction is the only task, and it cannot contain run data.
  • The answer must be in the expected shape: text up to 4,000 characters, named fields up to 1,000 characters each, or one of your categories (anything else gives none). Any other answer fails the step, at no cost.
  • The AI only sees what you put in the step, from this workspace. It never sees keys, passwords or other workspaces.
  • A run asks the AI at most 10 times, and the data sent is at most 20,000 characters per step.
  • AI steps run on the workspace’s AI setting (WORK³ AI or your own key). An admin can turn them off under Settings → AI; then every AI step fails and nothing is sent. Every call is logged under AI usage.

Wait for a change holds the run until an item is the way you want, for example until it is done, assigned or has a certain priority. Choose the item to watch (usually the item from the trigger), set the conditions under Go on when and how many days it may wait (1 to 30). The step looks again every time the item changes or gets a comment. When the conditions hold, the run goes on at Happened; if the time runs out first, it goes on at Time ran out. If the item is already that way, the run goes on at once. Waiting costs nothing, and a test run never waits.

A step that fails (a project that does not exist, a person who is not a member, an app that answers with an error) stops the run, and Runs shows why. To handle it instead, open the step and set If this step fails to Go on down the Error path. The step then gets a second output, a light red Error dot on its bottom corner, under OK (it turns full red once a run has gone that way): drag from it to a step, or press its +, to connect it to the steps that should run when it fails, for example a notification to the person who looks after the workflow. They can read the reason as {{steps.<step>.error}}. An Error output that leads nowhere just ends that path quietly. A failed step costs no credits. Logic steps (conditions, filters, waits) have no error path.

Ask a person stops the run and asks one member a yes/no question, for example “Can we send the offer for {{item.ref}}?”. The question shows in the person’s Inbox with Yes and No, and as a notification. When they answer, the run goes on at once down the step’s Yes or No output. If nobody answers within the days you set (1 to 30, 7 if left empty), the run goes down No. Later steps can read the answer as {{steps.<step>.answer}}: yes, no, or none when the time ran out.

  • Only the person asked can answer, and only once. Guests cannot be asked.
  • A person can have at most 20 open questions from workflows at a time; one more fails the step.
  • While it waits, the run shows as Waiting in Runs. Paths after other outputs of an earlier step wait too, and go on after the answer.
  • A test run never asks anyone: it shows the question it would ask and goes on down Yes.

Ask with choices works the same way, but with 2 to 5 buttons you name yourself, such as Approve, Change and Reject. Each button has its own output on the canvas, and No answer is taken when the time runs out. Later steps read the button as {{steps.<step>.label}} (and its number from 0 as choice). The labels are written in the step and never come from run data. A test run goes on down the first button.

Item due soon starts the day before an open item is due, and Item overdue the day after its due date, if it is still open. Both start at 08:00 in the workspace’s time zone, so nobody gets a message at night, and each starts once per item and due date. If the item is done, archived or has a new due date by 08:00, or the trigger’s conditions no longer hold, the run stops before its first step and the run list shows why. Items without a due date never start them.

Webhook starts the workflow when another system (a form, a script, another tool) posts to the workflow’s own secret URL. Open the trigger to see the URL, and press Copy.

  • Send a POST with Content-Type: application/json and a JSON object of at most 64 KB. The answer is 202 when the run is queued.
  • The URL works only while the workflow is published and active. Otherwise it answers 404, the same as a wrong URL.
  • Each URL takes at most 60 requests a minute and 5,000 a day; beyond that it answers 429. The workflow’s own run limits also apply.
  • The posted data is in body, for example {{body.email}}, and the time it came in is receivedAt. It is only data: it cannot stand in for an item or a person. Messages use it as plain text, and AI steps only read it.
  • Keep the URL secret: anyone who has it can start the workflow. Make a new URL stops the old one at once. Only people who may change workflows can see the URL.
  • Fetch test data uses the latest request to the URL; Use example data makes up a small body.

A workflow can have one webhook trigger.

Respond to webhook (under Logic and flow) gives the caller an answer of your own instead of 202: a status code (200, 201, 202, 400, 404, 409 or 422) and a text, such as {"id": "{{steps.create.ref}}"}. Values are put in as they are. The text is sent as JSON when it is JSON, otherwise as plain text, never as a web page. The caller waits at most 10 seconds for the run to reach the step, so put it early and avoid AI steps and waits before it; if the run is slower, the caller gets the usual 202. Only the first answer in a run counts, and only the request that started the run gets it. The step only works in a workflow with a webhook trigger; a test run shows the answer without sending it.

Run a workflow (under Logic and flow) starts another workflow, so a flow you use in many places can be built once.

  • The workflow it starts must have the trigger Started by a workflow and be published and active. Otherwise the step fails (use If this step fails to handle it).
  • Choose the item to send along (the trigger’s item by default) and name values under Values to send, like Set fields. The started workflow uses them as {{input.<name>}}, the item’s fields as usual, and the name of the workflow that started it as {{parent.name}}.
  • The started workflow runs on its own, as its own run: the step does not wait for it. It costs its own credits.
  • A workflow cannot start itself, and chains stop after a few levels, the same limit as for other automations.
  • A test run never starts the other workflow; it shows what would be sent.

The Apps group under Triggers shows triggers for the apps your workspace has connected.

  • Deal won (Attio, HubSpot, Pipedrive) starts the workflow when a deal reaches the stage you chose as Stage that means won on the app’s page. It runs once per deal: if the won deal is changed again in the CRM, the workflow does not run again. The run gets the deal’s name, company, amount, currency, closeDate, ownerEmail, contactName, contactEmail, url and dealId.

Deal data comes from outside the workspace, so treat it like any other text: it is used as plain text in messages, and AI steps only read it as data.

The Apps group shows steps for the apps your workspace has connected. They use the app’s existing connection.

  • Slack: Send direct message sends a message from the app’s bot to a workspace member who has linked their Slack account. It reaches nobody else, and each person gets at most 20 such messages an hour from workflows.
  • Slack: Post in channel posts in a channel by its ID (such as C0123456789; in Slack, open the channel details to copy it). Invite the app to the channel first. At most 30 posts an hour per channel.
  • Find deal (Attio, HubSpot, Pipedrive) reads one deal by its ID, so later steps can use its name, stage, value and owner. If there is no such deal it gives found: false and the run goes on.
  • Update deal (Attio, HubSpot, Pipedrive) changes a deal’s stage, value and (in HubSpot and Pipedrive) close date. Write the stage’s name as it is in the CRM, such as Negotiation; empty fields are left as they are, and a stage the CRM does not have fails the step.
  • Add note (Attio, HubSpot, Pipedrive) adds a note to a deal, as plain text (at most 5,000 characters), for example a summary of the project. In Attio the note is titled “Workflow: “ and the workflow’s name. Text from the run never becomes formatting or links in the CRM. In Attio the connection needs permission to write notes: if the step says it is not allowed, connect Attio again.

Messages are sent as plain text: mentions such as @channel and hidden links are not turned on. A test run shows what an app step would send without sending it.

HTTP request (under Logic and flow) calls a web address and gives the answer to later steps, for example {{steps.http.body.id}} and {{steps.http.status}}.

  • Allowed hosts only. On the Workflows page, under HTTP hosts (click it to open; closed it shows the current choice), people with the Integrations permission choose Only these hosts and list them one per line (api.example.com, or *.example.com for its subdomains), or choose Any public HTTPS address. With Only these hosts and an empty list, HTTP steps cannot call anything; this is where a workspace starts. People who build workflows can see the choice but not change it, so workspace data only goes where the workspace has agreed to send it.
  • The host is written in the step. The URL must start with https:// and the host, written out. Data from the run can go in the path and query (https://api.example.com/items/{{item.ref}}) but never in the host.
  • Only HTTPS on the standard port. Internal, private and local addresses are always blocked, even when an allowed name points to one.
  • Methods: GET, POST, PUT, PATCH and DELETE. Headers are one per line as Name: value (at most 10). Body is sent for POST, PUT and PATCH, as JSON when it looks like JSON, at most 64 KB.
  • Redirects are not followed. The server has 10 seconds to answer, and answers over 256 KB stop the step. A status of 400 or more fails the step, and so does a host that is no longer on the list. A run can make at most 20 HTTP requests.
  • A test run never sends the request. It shows what would be sent, with values of headers such as Authorization hidden, and says if the host is not allowed.

Anyone who can open the workflow can read its headers, so use a key made only for this, with as few rights as possible.

Each step that does something costs one credit, an AI step 10. Triggers, conditions, filters and waits are free, and so are test runs and the built-in flows that come with an integration. The Workflows page shows this month’s credits; see Plan and billing. When credits run out, workflows wait until next month or until more credits are added.

In the editor, the bottom left corner shows what one run of the workflow costs, such as 3 credits per run. Point at it to see each step’s share. With conditions or other branches it says Up to, since only the steps on the path a run takes count, and steps inside a For each (marked ×) count once per entry.

You are warned before that happens. When 80 % of the month’s credits are used, and again when they run out, the workspace’s owners and admins get a notice in their Inbox (once each per month). The Workflows page shows a warning at 80 %, and also earlier when the pace so far would use them up before the month ends (with the day they would run out). The credits card shows what the month will end at at the pace so far, and Per workflow lists every workflow that used credits this month, with its credits, its share, its runs and how many failed; click one to open its runs.

Workflows cannot be used to flood people or run away:

  • A workflow that starts more than 30 times a minute or 2,000 times a day pauses itself, and the people who manage workflows get a notice in their Inbox.
  • Send notification reaches each person at most 20 times an hour from workflows.
  • A workflow has at most 50 steps and its links never go back to an earlier step. A For each repeats steps at most 100 times and cannot hold another, and one run carries out at most 1,000 steps in all. Automations that trigger each other stop after three levels.
  • Workflows never delete anything.
  • AI steps have no tools and their answers are only data (see AI steps).
  • Pause all workflows on the Workflows page stops every workflow in the workspace at once. Waiting runs continue when you turn it off.
  • Publishing, pausing and restoring are recorded in the activity log.

WORK³ · powered by NOD³