Skip to content

Core Concepts

This page is the mental model reference for QuickFlo. If you want to actually build something, start with the Build Your First Workflow tutorial — that walks you through creating a real working API in about 10 minutes. Come back here when you want to understand why the building blocks work the way they do.

A workflow is a sequence of steps that produces a result. You build it on a visual canvas in the workflow editor — drag steps in, connect them, configure each one, and run it. Every workflow has a unique URL once it’s saved, and can be triggered manually, by an external event, or on a schedule.

A step is a single unit of work — an HTTP request, an AI call, a data transform, a control-flow branch. Each step has:

  • A step ID (the name you’ll use to reference its output later)
  • A step type (core.http, ai.llm-call, data.filter, etc. — see the step library)
  • An input configuration form
  • An output that downstream steps can reference via template syntax

Steps run sequentially top-to-bottom unless you use control-flow steps (core.if, core.switch, core.for-each) to branch or loop.

A trigger is what starts a workflow. The same workflow can have multiple triggers of different types:

TriggerWhat it does
WebhookTurns the workflow into an HTTP endpoint. Anyone with the URL (and the optional secret) can run it.
ScheduleRuns on a cron expression in your chosen timezone.
FormGenerates a hosted form. Submitters trigger the workflow with the field values.
EventListens for real-time events from connected services like Five9.

The trigger payload becomes {{ initial.* }} inside the workflow.

QuickFlo has two template languages, used in different places:

  • Liquid for step config — reference step outputs, environment variables, connections, and utility values inside any input field. Example: {{ fetch-user.body.email }}.
  • JSONLogic for control-flow conditions and data-pipeline predicates (core.if, core.switch, data.filter, data.reduce). JSONLogic operands accept Liquid {{ template }} form for data access, so the two compose naturally. See Conditionals & Data-Pipeline Logic.

A connection is an encrypted credential — an OAuth token, an API key, a username/password, a service account. Once created, a connection can be referenced from any workflow via {{ $connections.connectionName }}, or selected from a dropdown on steps that natively support a connection (HTTP, Five9, AI providers).

An environment is a named bag of encrypted variables — production, staging, dev. Variables are accessed via $env.MY_VAR and can override which connection a step uses (connection redirection). Add ?env=staging to a webhook URL to switch environments per request without redeploying.

A workflow can call another workflow as a sub-workflow, like calling a function. Sub-workflows can return values and run in their own context — useful for reusable logic and for tools called by AI agents.

Every time a workflow runs, it produces an execution — a recorded trace of every step, its input, its output, its duration, and any errors. Executions are searchable, filterable by status, and inspectable in detail.

Steps separate execution errors (the step threw) from operational errors (the step ran but the outcome was an HTTP 4xx, API fault, or validation failure). Both halt the workflow by default — opt in to Continue on Error to absorb either kind. The full error history is exposed via {{ $errors }} for downstream branching. See the Error Handling guide for the full model — severity, retry policies, skipCondition, and patterns.

A data store is persistent key-value storage scoped to your organization. Use it to maintain state across executions (counters, processed-record sets, lookup tables), and turn any table into a dashboard with charts, pivot tables, and filters.

A knowledge base is a searchable document collection that AI steps can use as context (RAG). Upload files or URLs and QuickFlo handles parsing, chunking, and embedding automatically.

The AI Builder is a conversational assistant that builds workflows from natural-language descriptions. It queries your live step schemas, connections, and platform docs to produce workflows you can deploy immediately. Press Cmd+I to open it.

Workflow definitions are JSON. Copy one to your clipboard and press Cmd+V in the workflow builder to paste it onto the canvas — see Importing and Copying Workflows. The Workflow Library is built around this: every recipe is a copy-pasteable JSON snippet you can drop straight into your workspace.