Skip to content
New to Superprocess? The guided invoice walkthrough takes you from a blank canvas to a running workflow.Get started

Build a process

Build and deploy a new process from a blank canvas. This recipe assumes you have a sketch of the flow on paper or in your head — what the trigger is, which steps run, where humans get involved, and what counts as “done.”

  • You have at least the editor role in the project (editors can build and deploy processes; admins and owners can too).
  • Any connectors the process will use are already set up (see Build an integration). You can bind them later, but setting them up first avoids a back-and-forth.
  • Any agents the process will use are configured on the Agents page (see Create an agent).
  1. Create the process. In the project sidebar, click Processes → New process. Give it a short name (invoice-approval) and an optional description. The empty designer canvas opens.

  2. Drop the start event. Drag the Start Event circle from the left palette onto the canvas. Click it. In the right panel, set the start event’s type — Message (inbound email or webhook), Timer (a schedule), Signal, or leave it None for a manually- or API-started run — and fill in the type-specific config.

  3. Add the work steps. Drop service tasks, user tasks, and gateways from the palette onto the canvas in the order work should happen. For each:

    • Service task — automated work: an AI agent (bind an agent, optionally pinned to a published version) or a connector (call an operation on a configured connector).
    • Script task — run a function: pick a published Python function from the library and map process variables to its inputs.
    • Business rule task — evaluate a decision: a DMN table that maps inputs to an outcome.
    • User task — bind a form for the approver to fill in, set the assignee group (finance-approvers), and choose an assignment strategy (offer-and-claim, round-robin, random, or least-loaded).
    • Gateway — pick the type (Exclusive, Parallel, Event-based). Exclusive gateways need a condition expression on each outgoing arrow.
  4. Wire the arrows. Click a source element’s edge and drag to the target. For arrows out of an exclusive gateway, click each arrow and set its condition expression (e.g. amount < 10000 && po_matched == true). Mark one outgoing arrow as default.

  5. Add end events. Drop an End Event at the terminus of each branch. Give each one a label (Approved, Rejected) for clarity in Workflow Executions.

  6. Map variables. Click any step that produces output and confirm its outputs land in the right process variables (the gateway expressions will need them). The designer flags any variable referenced by a downstream step but never produced.

  7. Deploy. Click Deploy to Temporal. The designer flags problems as you draw, and deploying runs a full validation — unconnected arrows, gateways missing a default branch, conditions referencing undefined variables, tasks missing required config; errors block the deploy and surface as warnings to fix. When it passes, the platform creates a new version, registers the trigger, and goes live — the next matching event starts a run.

  • Subprocess. A complex flow can be split into a parent process that calls subprocesses. Drop a Call Activity on the canvas and point it at another deployed process; that process runs to completion before the parent continues.
  • Validation passes but the first run fails immediately. Almost always a missing integration binding or an agent that’s deployed but disabled. Open the failed run in Workflow Executions — the error message names the step.
  • The trigger doesn’t fire. Check that the trigger’s prerequisites are met (the mailbox exists; the webhook URL is reachable from the outside; the cron expression’s timezone is correct). The trigger config panel shows the last fire time and any recent errors.
  • A gateway always takes the default branch. Either the condition expression references a variable that’s not yet set, or it has a syntax error. Open the run detail; the gateway step shows the values it evaluated against.