Skip to content

Nodes ​

Every node available in the workflow editor, generated from the catalogue itself. Each page lists the parameters, outputs and data of the node exactly as the product defines them.

Triggers ​

  • Email received — trigger.email. Starts the workflow when an incoming email matches the conditions.
  • Webhook received — trigger.webhook. Starts the workflow on a POST to the workflow URL. The JSON body lands in data.webhook.
  • Called by a workflow — trigger.called. This workflow subscribes to no email: it runs when another one calls it. The input lands in data.input.
  • Schedule — trigger.schedule. Starts the workflow on a schedule, with no triggering email. The planned time, the actual time and the time zone land in data.schedule.
  • Manual trigger — trigger.manual. Starts only on an explicit request, from the webmail or the editor.
  • Workflow failure — trigger.error. Starts when an execution of a workflow that names this one as its error workflow fails. The report lands in data.failure.
  • Airtable row changed — trigger.airtable. Starts the workflow when a row in an Airtable table is created or changed. What changed lands in data.airtable, with no triggering email.
  • MyNotary — event — trigger.mynotary. Starts the workflow when MyNotary reports an event: a completed signature, a new case, a registered notification. The body lands in data.mynotary.
  • Yousign — event — trigger.yousign. Starts the workflow when Yousign reports an event: a signed request, a decline, an expiry. The signed body lands in data.yousign. Deliveries Yousign sends again are deduplicated on event_id.
  • Notion — event — trigger.notion. Starts the workflow when Notion reports an event: an entry created, a status changed, a comment. The body lands in data.notion. The subscription is created by hand in Notion — otherwise prefer “Schedule” + “Entries changed since…”.
  • Notion entry changed — trigger.notion_changes. Starts the workflow when an entry of a Notion database is created or changed, checking at a regular interval. The entry lands in data.notion, with no triggering email. Nothing to set up in Notion.

AI ​

  • Categorize — ai.categorize. Classifies the email into the categories you define and routes it down the matching branch. Each category is one output of the node.
  • Compose (AI) — ai.compose. Has the model write a message from your instructions and the recipient profile (formality, tone, language, signature). Does not send it: add “Send” after it to save a draft or send it.
  • Extract — ai.extract. Extracts the fields you declare from the email (number, date, amount…) into the working data. A missing field is null.
  • Summarize — ai.summarize. Summarizes the email in a few lines, in the style and length you choose. The summary lands in the working data.
  • Free instruction (AI) — ai.prompt. Gives the model a free-form instruction about the email and the working data. The node produces text or JSON: it sends nothing and changes nothing — add an action node downstream to act.
  • Anthropic (Claude) — llm.anthropic. Link this node to the “Model” port of an AI node so it works with Claude. The API key comes from the chosen connection (Connections › AI).
  • OpenAI (GPT) — llm.openai. Link this node to the “Model” port of an AI node so it works with GPT. The API key comes from the chosen connection (Connections › AI).
  • Mistral AI — llm.mistral. Link this node to the “Model” port of an AI node so it works with a Mistral model, hosted in Europe. The API key comes from the chosen connection (Connections › AI).
  • OpenRouter — llm.openrouter. Link this node to the “Model” port of an AI node to call any model in the OpenRouter catalogue with a single key. The model is written “vendor/model”.
  • Ollama (local) — llm.ollama. Link this node to the “Model” port of an AI node so it works with a model running on your server: nothing leaves your machines, and there is no key to provide.
  • OpenAI-compatible API — llm.openai_compatible. Link this node to the “Model” port of an AI node to call a server speaking the OpenAI protocol without being one of the named providers: vLLM, LM Studio, an internal proxy. The server address is set in the connections.

Logic ​

  • Condition (If) — flow.if. Routes the email to the "true" or "false" output based on conditions over the email and the working data.
  • Switch — flow.switch. Sends the email down the first branch whose conditions match, otherwise down the "otherwise" branch.
  • Stop — flow.stop. Ends this execution branch with a readable status and reason.
  • Approval — flow.approval. Suspends the execution until a human approves or rejects. Request sent by email, with a timeout.
  • Wait — flow.wait. Suspends the execution — from a minute to several years. Nothing is kept in memory: the wait survives restarts.
  • Emit a signal — flow.signal. Ends, elsewhere, the waits watching this key — so a client who already answered is never chased.
  • Loop — flow.loop. Repeats a set of nodes for each element of a list: each attachment, each row, each recipient.
  • Call a workflow — workflow.call. Runs another published workflow with this execution’s data. In "wait" mode, its output becomes this node’s output.

Data ​

  • Read attachments — attachment.extract_text. Extracts the text of the email attachments (PDF, text, HTML…) into the working data: {{ data.extract_text_1.attachments.0.text }}. Place it before an AI node to hand it a document’s content.
  • HTTP request — http.request. Calls an external API and puts the response into the working data. A write may be retried after an outage: prefer idempotent endpoints.
  • Drive — search files — google_drive.search. Searches files in Google Drive and puts the list into the working data. It is a read: it runs for real, even during a test run.
  • Calendar — find free slots — google_calendar.find_free. Reads the calendar availability over a window and returns free slots, ready to be offered by an AI node.
  • Airtable — airtable.api. Finds, creates, completes and comments rows in an Airtable base, and drops the attachments (from the email or added by a step) into it.
  • Calendly — calendly.api. Reads your event types and scheduled events, and can cancel one.
  • MyNotary — mynotary.api. Reads and feeds MyNotary cases, records, contracts and documents. No signature can be started through the API: it stays a human action.
  • Notion — notion.api. Reads and feeds your Notion pages and databases: entries, properties, Markdown content, comments and attachments.
  • Table — find a row — table.find. Finds a row by its key. Two outputs: found, and not found.
  • Table — list rows — table.list. Returns an array of filtered, sorted rows — ready to feed a loop.
  • Transform — data.transform. Defines fields in the working data from text that accepts {{ }} expressions, with a few formatting options.
  • Compute a date — date.compute. Adds a delay — calendar or business — to a date, to write it elsewhere: a table, a draft, a CRM.

Actions ​

  • Move — mail.move. Adds or removes folders/labels on the triggering email, through the mirror (immediately visible in the mailbox).
  • Flag — mail.flag. Changes the state of the triggering email: read/unread, flagged/unflagged. Only the states you set are changed.
  • Compose — mail.compose. Prepares a message — recipients, subject, body, attachments — without sending anything. Add “Send” after it to save a draft or send it; in between you can add an approval, a condition or a table write.
  • Send — mail.send. Saves a message as a draft or sends it, from the mailbox of your choice and with the signature of your choice. Goes after “Compose” — or is filled in by hand.
  • Notify — notify.send. Sends a message to a Slack, Teams or generic webhook. The shortcut for "tell the team".
  • Drive — upload a file — google_drive.upload. Uploads the attachments (from the email or added by a step), or a text file you write, into a Google Drive folder.
  • Drive — create a folder — google_drive.create_folder. Creates a Google Drive folder unless one with the same name already exists under the same parent, and returns its id for the rest of the workflow.
  • Sheets — append a row — google_sheets.append. Appends a row to a Google Sheets spreadsheet. A deduplication column avoids a duplicate row on a retry.
  • Calendar — create an event — google_calendar.create_event. Creates an event in Google Calendar. A retry of the step creates no duplicate: the id derives from the step.
  • Upload to OneDrive — onedrive.upload. Uploads the attachments (from the email or added by a step) — or some text — into a folder of your OneDrive.
  • Search OneDrive — onedrive.search. Searches files in your OneDrive and puts the list into the working data.
  • Create a OneDrive folder — onedrive.create_folder. Creates a folder unless it already exists — a retry creates no duplicate.
  • Create an Outlook event — outlook_calendar.create_event. Puts an appointment into your Outlook calendar. Invitations are sent only if you ask.
  • Find an Outlook slot — outlook_calendar.find_free. Reads your calendar availability and lists the free slots within your working hours.
  • SharePoint — sharepoint.api. Files, tags and shares documents in a SharePoint site, and keeps its lists up to date.
  • Excel — excel.api. Reads and fills in an Excel workbook stored on SharePoint or on your OneDrive.
  • Yousign — yousign.api. Gets an emailed attachment electronically signed: request, document, signers, activation, then collection of the signed document and its audit trail. ⚠ Activation is billed by Yousign.
  • Table — insert a row — table.insert. Inserts a row. If the table has a unique key that is already taken, the step fails — use “insert or update” instead.
  • Table — update a row — table.update. Changes the row carrying this key. The step fails if no row matches.
  • Table — insert or update — table.upsert. Writes the row: created when its key is free, updated otherwise. This is the node for memory between runs.
  • Table — delete a row — table.delete. Removes the row carrying this key. Nothing to remove is a success, not an error.
  • Table — append a comment — table.append_text. Appends timestamped text at the bottom of a cell, never overwriting what it holds. One action = one comment.