Workflows
A project can run simple automations of its own: a trigger, then a list of steps, each a box. For example: “every hour, list the title and link of this feed’s new entries”, or “every 5 minutes, check my inbox, have an agent sort the new emails, and tell me about those that need me”. Each box does one thing, and a workflow pipes them together, as a command line does.
The Workflows tab
Section titled “The Workflows tab”A project’s Workflows tab lists its workflows, each with its trigger, whether it is on, its last run and its result. New workflow makes one. From the list you edit, turn on and off, copy, delete and run workflows, and look at their runs.
A workflow
Section titled “A workflow”A workflow has a name, a trigger, its steps from top to bottom, and its settings.
- Each step has a name, unique in the workflow; later steps refer to its outputs by that name.
- Steps are added between others (Add a step), moved up and down (dragged, or with Alt+↑ / Alt+↓), copied and removed. An If step holds its own steps, indented under it.
- It reads and edits the same way on a phone.
Triggers
Section titled “Triggers”- Run by hand: a Run button, optionally with test input (JSON).
- On a schedule: a simple repeat (“every day at 8:00”) or a cron expression. Schedules use the installation’s one Time zone, set in Settings › General (until set, the host’s); a schedule shows it under its times.
Values
Section titled “Values”Each box says what it gives, as named outputs. A box’s inputs take a typed value, an output picked from the list of the
trigger’s data and earlier steps’ outputs, or an expression in {{ }} such as {{ steps.feed.body }} or, in Format
text over a list, {{ item.title }}. While you edit, each input shows what it would be from the last run’s data.
- HTTP request: method, address, query, headers and body (JSON, text or form), a connection to sign in with, and a time limit. Its outputs are the reply’s status, headers and body. A reply that isn’t a success fails the step unless allowed.
- Script: your own code, in JavaScript or TypeScript, with its inputs and outputs declared. What it prints shows in the run.
- Parse feed: reads an RSS or Atom feed’s text into its title and entries (id, title, link, date, summary, author).
- Only new: passes on the items of a list it hasn’t passed before in this workflow, told apart by a field (an entry’s id, say) or by the whole item. Items count as seen only when the run succeeds. On its first run it only remembers the items, unless set to pass them all. With nothing new, the run ends there, succeeded. Forget seen items starts again.
- Date range: gives a from and a to: last month, this month, last week, the last N days, or older than N days, months or years.
- IMAP search: with one or more IMAP accounts, lists a folder’s messages matching its criteria (received from and to, from, to, subject, larger than), without their bodies.
- IMAP fetch: gets the messages of a list from IMAP search, each as an .eml file.
- IMAP delete: deletes exactly the messages of a list from IMAP search: moved to the account’s Trash, or deleted for good if chosen.
- Read email: reads .eml files into a list: from, to, cc, subject, date, message id, the text, and attachments’ names.
- Email to HTML: turns .eml files into .html files, with the headers, inline images and a list of attachments.
- Zip: puts files into one .zip file.
- Make CSV: turns a list into a .csv file with the columns you choose, readable by spreadsheets.
- Ask for a decision: asks you to choose, with a question, values to show and two or more named choices (“Delete” / “Keep”), each with its own path of steps. The run waits, marked Waiting for a decision, and tells you in a chosen agent’s chat and with a notification; the Questions page lists it too. Tapping a choice runs its path. It waits up to 24 hours by default (at most 7 days); then the default choice is taken, or the run ends.
- Format text: fills a text template (plain text, Markdown or HTML) with values. Given a list in For each item of, it fills the template once per item and joins them one per line.
- If: runs its steps only when its conditions hold, with an optional Else list. A condition is a value, a test (is true, is empty, equals, contains, more than and the like) and, for tests that compare, a value to compare with; all must hold, or any one.
- Send email: over SMTP, with an SMTP connection: to, cc, subject, a body in text or HTML, files of the run attached, and optionally In reply to, so mail programs thread it.
- Notify: posts a message in a chosen agent’s chat as a message from the workflow. It counts as a reply and notifies you; the agent doesn’t act on it.
- Ask an agent: sends a message to a chosen agent of the project and waits for its turn to end. Its output is the agent’s reply.
HTTP request, Script and Send email run inside the project, in its container or on its server, so they need a Linux or Mac project; a Windows project runs the other boxes. A step’s time limit is 15 seconds unless set otherwise (at most 15 minutes).
Connections
Section titled “Connections”What boxes sign in with: IMAP account, SMTP, a bearer token, an account and password, and the like. Each is named and picked by name in a box. A connection is checked by signing in before it is saved. After saving, a secret is never shown again, only replaced.
- Each run is listed with its trigger, start, duration and result (running, succeeded, failed, cancelled). Opened, it shows every step with its inputs, outputs, what it printed and its error, live while it runs.
- A run can be cancelled, or run again with the same trigger data.
- A workflow runs one run at a time; a trigger meanwhile waits its turn (at most 10 waiting).
- On failure, per step: Stop the run (the default), Carry on (its error becomes an output), or Its own path (steps run only when it fails).
- On error: an optional path at the workflow’s end, run when the run fails with nothing else handling it, to notify, email or clean up. The run still counts as failed.
- Run files: files boxes make (.eml, .html, .zip, .csv) are listed on the run’s page for download, and deleted 7 days after the run ends.
- Runs are kept 30 days, or the last 200 per workflow, whichever is more.
- A run under way when ProjectStart restarts ends as interrupted and is never redone by itself, so nothing is sent twice. A run waiting for a decision keeps waiting.
Agents and workflows
Section titled “Agents and workflows”- An agent of the project can list, read, make and change the project’s workflows when you ask it. What it saves is turned off until you look at it and turn it on; the agent answers with its link.
- An agent can send an email when you ask it to, through one of the project’s SMTP connections, without ever seeing its secrets. Each email sent shows in the chat as a card.
History, Trash and Purge
Section titled “History, Trash and Purge”Creating, changing, turning on or off and deleting a workflow or a connection is a History entry naming who did it. Runs are listed in the Workflows tab, not in History. A project in the Trash runs no workflows; Restore turns them back as they were; Purge deletes its workflows, runs and connections.