A workflow is a visual diagram of nodes connected by arrows. Triggers start runs, logic nodes shape the flow, action nodes do the work. You build it, save it, and Rills handles execution, retries, and versioning.
#Node categories
There are three categories: triggers (start a run), logic (shape control flow), and actions (do work).
#Triggers
| Node | When it fires |
|---|---|
| Manual Trigger | You click “Run” in the builder. |
| Schedule | A cron schedule. Timezone-aware (defaults to UTC). |
| Webhook | An external system POSTs to a unique URL. See Webhooks . |
| Integration Event | A connected integration emits an event (Gmail message, Stripe charge, Slack message, etc.). Pick the integration and the event in the node config. |
A workflow can have multiple triggers, Manual Trigger plus Schedule plus Webhook can all be active at once.
#Logic
| Node | What it does |
|---|---|
| Condition | Branch based on rules. Each branch evaluates a field with an operator (Equals, Contains, Greater Than, Is Empty, etc.). Compound rules supported with AND/OR. |
| Loop | Iterate over a collection. Configure the items expression, item/index variable names, optional max iterations, concurrency for parallel iteration, and batching. |
| Delay | Pause for a duration (“2 hours”), until a specific time, until a variable resolves, or for a relative period (business days, calendar days, weeks). Free. |
| Human Review | Pause for human review. See the Approvals reference for full config. |
| Any (First) | After a branching split, continue as soon as one branch finishes. Optionally cancel the rest. |
| All (Wait) | After a branching split, wait for every branch. Pick a failure mode: Fail Fast, Collect Errors, or Partial Success (configurable minimum success count). |
#Actions
| Node | What it does |
|---|---|
| AI | Call a language model with a prompt. Configurable model, temperature, max tokens, output mode (text or JSON schema). |
| HTTP Request | Call any REST endpoint with optional auth. |
| Send Email | Send email from Rills. Supports HTML/text bodies, CC/BCC, attachments, and a base template. |
| Custom Code | Run JavaScript or Python in a sandbox. See Custom Code . |
| Transform Data | Reshape data between steps (map, filter, pick, omit, etc.). |
| Integration Action | Any action exposed by a connected integration, send Slack message, refund a Stripe charge, create a Notion page. |
#Variables
Reference data from earlier nodes with {{node_name.field}}. The builder shows what’s available at each step.
#Approval gates
Add a Human Review node anywhere a step needs a human in the loop. The Human Review node has three approval modes, Always (every run pauses), Confidence (auto-approve when the run’s confidence score meets your threshold), and Never (auto-execute without review).
See the Approvals reference for the full picture.
#Retry and error handling
HTTP Request, Custom Code, AI, Send Email, and Integration Action nodes support a retry policy. When a step fails with a retryable error, Rills retries before marking the step failed.
| Setting | Default | Range |
|---|---|---|
| Max retries | 3 | 1–10 |
| Strategy | Exponential | Fixed or Exponential |
| Base delay | 1,000 ms | 100–60,000 ms |
| Backoff multiplier | 2 | 1–3 |
| Max delay | 60,000 ms | 1,000–300,000 ms |
| Retryable HTTP codes | 408, 429, 500, 502, 503, 504 | Any HTTP status codes |
Exponential backoff: delay = min(maxDelay, baseDelay × multiplier^attempt) with jitter to prevent thundering herd.
#Scheduling
Schedule triggers run on a cron expression with a timezone. Schedules can be enabled or disabled independently of the workflow, disabling a schedule stops it firing without pausing manual or webhook triggers.
If a scheduled run fails, Rills tracks the failure but the schedule keeps firing. Watch the schedule’s failure count if you suspect drift.
#Versioning
Saving a workflow creates a new immutable version. Runs continue on the version they started with, so editing a workflow never disrupts in-flight runs. You can always trace which version produced a given run.
#Run lifecycle
A workflow itself is Active (running normally) or Paused (manually stopped). Each run is one of:
| Status | Meaning |
|---|---|
| Pending | Created, about to start |
| Running | Steps are executing |
| Success | Completed successfully |
| Failed | A step failed after retries were exhausted |
| Paused | Workspace ran out of credits or subscription lapsed, auto-resumes when resolved |
Paused runs preserve their position. When the underlying issue clears (credits replenish, payment is fixed), runs resume from where they left off, no data lost, no steps re-run.
#Run history
Open the Activity tab on a workflow to see every past run with status, duration, and trigger. Click into a run to see step-by-step input and output, errors, and retry attempts. Failed runs highlight which step failed.
Run data retention depends on your plan, see billing . You can override retention per workflow if you want a shorter audit trail, but it cannot be longer than the plan’s retention period.
#AI models
AI nodes support these models:
- Claude Opus 4.5, 4.6, heavyweight, best reasoning
- Claude Sonnet 4.5, 4.6, general-purpose default
- Claude Haiku 3.5, 4.5, fast and cheap
- GPT 5.2, 5, 4.1
The model dropdown in the builder is always the live list, new models appear there first. AI Credits are billed by tokens; bigger models cost more per call.
#More
- Custom Code : runtime, secrets, return values, error codes
- Webhooks : auth options and payload handling
- Templates : install pre-built workflows or share your own
- Secrets : store API keys and reference them safely
- Insights : workflow optimization suggestions (Pro+)