Workflows
AI builder and code editor interface, ctx object, execution tiers, retry policy, workflow statuses, versioning, and trigger integration.
Workflows are the automation units in Fastn. Each workflow is a TypeScript function that receives a context object, executes logic using the Fastn runtime API, and returns a result. The primary way to create workflows is through the AI agent you describe what you need and the agent builds the workflow end-to-end. The code editor exists for inspection and manual fine-tuning.
AI Workflow Builder
The AI agent is the primary path for creating and modifying workflows. It handles the full cycle: analyzing your request, setting up connectors, configuring authentication, mapping fields, generating test cases, and producing the workflow code.
Entry points
Home page
AI assistant prompt on the Home page
Routes to the appropriate agent based on your request
Integrations → Workflows
Click ✦ Build with AI in the sub-nav top-right
Opens the Standalone Workflow Builder
Integrations page
Click ✦ Build with AI on the Integrations page
Opens the full integration builder ("Describe what you need and the AI agents will build it end-to-end")
Setup Assistant
Home → Step 3: Workflows (during onboarding)
Builds workflows as part of the initial setup pipeline
Widget
End user clicks a template card or uses the AI assistant
Launches an Integration Agent session inside the widget
Builder variants
Standalone Builder
Builds and validates a single workflow directly. Accessed via ✦ Build with AI on the Workflows page.
Workflow Orchestrator
Coordinates multiple agents — a Planner, Builder, and Test Case agent — for complex multi-step builds. Fastn routes to this automatically for complex requests.
What the agent does
When you describe a workflow, the agent works through these stages:
1. Analyze
Breaks down which systems are involved, what data needs to move, what transformations are needed, and what trigger to use.
2. Connector setup
Checks if connectors exist for the systems you mentioned. Creates or configures them if needed.
3. Inline auth
Handles authentication inside the chat. API Key auth shows input fields directly. OAuth shows a form with Client ID, Client Secret, pre-filled scopes, and a portal link.
4. Field mapping
Generates field mappings between source and target systems. Shows a "WE'VE SET THIS UP FOR YOU" banner with mapping rows (source/target dropdowns, Change buttons, fixed value badges). Includes Record Matching Strategy, + Add Mapping, and Add Filters.
5. Test cases
Creates test cases to validate the workflow. Shows count and live status (e.g., "Test Cases — 22, 2 Live") with MOCK/LIVE badges, scenario descriptions, Feedback fields, and Approve buttons.
6. Code generation
Produces the workflow code (export default async function(ctx) { ... }) using the runtime API. The code appears in the editor with the Edited via agent metadata.
Iterating
Send follow-up messages to refine what the agent built:
"Add error handling for when the API is down"
"Filter out records without email addresses"
"Change the schedule to every hour"
"Add a Slack notification on failure"
The agent updates the workflow code, field mappings, and test cases. The TASKS panel in the left sidebar tracks completed and pending work.
Sessions and activity
The Standalone Builder has:
Left sidebar — SESSIONS
History of builder sessions. Each session preserves the full conversation.
Right sidebar — ACTIVITY
Real-time log of what the agent is doing (creating connectors, generating code, running tests).
Runtime API
Every workflow runs as an export default async function(ctx) and has access to the following:
ctx.input
The incoming data payload. Contents depend on what triggered the workflow:
Webhook trigger — The HTTP request body
Scheduler trigger — Scheduler context (schedule metadata)
App Event trigger — The event payload from the connector
Manual trigger — The JSON you provide in the Test tab
ctx.headers
HTTP headers from the incoming request (webhook-triggered workflows only). Auth headers are stripped for security — you won't see Authorization or x-fastn-access-key here.
fastn.connector
Execute actions on any connected third-party app by connector slug. This is how workflows read from and write to external systems.
The connector slug matches the connector name in Integrations → Connectors (lowercase, hyphenated). Each connector exposes its own set of actions — check the connector's documentation or the Docs tab in the workflow editor for available methods.
fastn.db
Tenant-scoped SQL database access. Each tenant gets an isolated database context. Supports CREATE TABLE, SELECT, INSERT, UPDATE, DELETE with parameterized queries ($1, $2 placeholders).
fastn.state
Durable key-value store for persisting data across workflow runs. Two scopes:
ORG (default)
Shared across all runs of this workflow within the organization. Use for deduplication, tracking synced record IDs, or caching values between runs.
INVOCATION
Scoped to a single run. Cleared after the workflow completes. Use for temporary state within a long-running workflow.
Optional TTL (time-to-live) for automatic expiry.
fastn.secrets
Read encrypted secrets stored in Settings → Secrets. Use for third-party API tokens, database credentials, or any sensitive values your workflow needs at runtime.
Secrets are never logged, never included in execution output, and never exposed in error messages.
Workflow Editor
Open any workflow from Integrations → Workflows to launch the three-panel editor.
Left panel — Configuration
Name
Human-readable workflow name (required).
Slug
URL-safe identifier, auto-generated from the name (e.g., hubspot-discovery-deal-to-gamma-deck).
Description
What the workflow does. Written by the AI agent or manually.
Execution Tier
Dropdown: Instant, Standard, or Long (see Execution Tiers below).
Execution Timeout
Slider within the tier's allowed range.
Status
Toggle: Enabled / Disabled. Disabled workflows won't process triggers.
Retry Policy
Toggle ON to enable automatic retries (see Retry Policy below).
At the bottom of the left panel:
Publish snapshot
Creates a versioned snapshot (v1, v2, etc.) of the current workflow code and configuration.
Deploy to environment
Sends the published version to a target environment so it starts handling real events.
Top navigation:
Discard
Abandons unsaved changes and returns to the workflow list.
Save Workflow
Saves the current draft without publishing.
Publish
Creates a new version snapshot (same as "Publish snapshot").
Center panel — Code editor
Displays the workflow code as a .js file (e.g., hubspot-discovery-deal-to-gamma-deck.js). The header shows JavaScript · export default async function(ctx).
The editor footer displays metadata:
Version — The current published version number.
Edited via agent — Indicates the code was generated or last modified by the AI agent. Shows
Edited manuallyif you changed it in the code editor.Byte count — Size of the workflow code.
Right panel — Five tabs
▶ Test
Run the workflow with sample data without saving or publishing.
CTX.INPUT
JSON payload simulating the incoming data.
CTX.HEADERS
JSON object simulating HTTP headers.
Run
Executes the workflow with the provided input.
The banner reads: "Hit Run to execute without saving" — this lets you iterate quickly.
📄 Docs
Three sub-tabs for understanding the workflow:
Flow — A visual flowchart rendering the entire workflow as a node graph. Each step appears as a connected node with labeled types:
TRIGGER
The event or schedule that starts the workflow
PROCESS
A data transformation or computation step
DECISION
A conditional branch (if/else logic)
READ
Reading data from an external system
WRITE
Writing data to an external system
DONE
The workflow's end point
Decision branches show both paths (e.g., "yes" → continue, "no" → skip). Skip and error paths are visible in the graph.
Sequence — The same logic as a step-by-step sequential timeline showing execution order.
Docs — Auto-generated reference documentation for the workflow.
✏️ Test Cases
Test cases generated by the AI agent during workflow creation. Each test case has:
Name
Descriptive scenario name
Badge
MOCK (simulated data) or LIVE (hits real APIs)
Scenario
Detailed description of what's being tested
Feedback
Field to flag issues with the test case
Approve
Green button to approve the test case
Test cases are grouped by scenario type. The header shows total count and live count (e.g., "Test Cases — 22, 2 Live").
⬛ Executions
Run history for this specific workflow. Columns:
TIME
Relative timestamp ("17h ago", "1d ago")
TIER
Execution tier badge (INSTANT, STANDARD, LONG)
VERSION
Workflow version at time of execution
STATUS
Running, Completed, Failed, Timeout
DURATION
Execution time (79ms, 2.1s)
TRIGGERED BY
What started it (agent-service, webhook, scheduler, manual)
🔗 API
Shows how to call this workflow programmatically. Includes the endpoint URL and required headers:
Execution Tiers
Instant
Synchronous — caller waits for result
Result inline
60 seconds
1s – 2min
API endpoints needing responses, quick lookups, real-time validations
Standard
Asynchronous via Temporal — returns immediately, executes in background
202 Accepted
15 minutes
5s – 15min
Data syncs, multi-step processes, most workflows
Long
Asynchronous via Temporal — for large data volumes
202 Accepted
6 hours
30s – 6hrs
Batch imports, full backfills, large report generation
The timeout slider in the Configuration panel adjusts within the tier's allowed range.
Retry Policy
Toggle ON in the Configuration panel to enable automatic retries for failed executions.
Max Attempts
3
Total number of execution attempts (including the first).
Initial Interval
5000ms
Wait time before the first retry.
Backoff Coefficient
2
Multiplier applied to the interval after each retry. With defaults: 5s → 10s → 20s.
Max Interval
60000ms
Upper limit on the wait time between retries, regardless of backoff.
Workflow Lifecycle
Create
New workflow with default export default async function(ctx) template. Via "Create Workflow" (manual) or "Build with AI" (agent-generated).
Save
Persists the current code and configuration as a draft. Does not create a version or go live.
Publish
Creates a version snapshot (v1, v2, etc.). The version is immutable — you can roll back to any previous version.
Deploy
Sends a published version to a target environment. The workflow starts processing triggers in that environment.
Statuses
active
✓ green checkmark
Deployed and processing triggers.
inactive
—
Exists but not processing triggers. Toggle via the Status switch in Configuration.
Versioning
Each Publish creates a new version (v1, v2, v3...). The Workflows table shows the current version in the VERSION column. The Executions tab records which version was running at the time of each execution.
Workflows Table
Location: Integrations → Workflows
Filter tabs: All | Instant | Standard | Long
Buttons: Create Workflow (opens code editor), ✦ Build with AI (opens Standalone Workflow Builder)
NAME
Workflow name, slug, and description
STATUS
✓ active (green) or inactive
VERSION
Current published version (v1, v2, etc.)
UPDATED
Last update date
ACTIONS
Run, Delete buttons
Execution Log
Location: Activity → Executions
Filter tabs: All | Running | Completed | Failed | Timeout
Controls: Time range dropdown, workflow filter dropdown, Refresh button.
TIME
Relative timestamp ("17h ago", "1d ago")
WORKFLOW
Workflow name
TIER
Execution tier badge (INSTANT, STANDARD, LONG)
VERSION
Workflow version at time of execution
STATUS
Running, Completed, Failed, Timeout
DURATION
Execution time (79ms, 2.1s)
TRIGGERED BY
What started it (agent-service, webhook, scheduler, manual)
Last updated
Was this helpful?

