Skip to content

Importing and Copying Workflows

QuickFlo’s workflow builder supports copying and pasting workflow definitions directly via the system clipboard. Share workflows as JSON, import pre-built templates, or duplicate steps across projects — all with Cmd+C / Cmd+V.

To import a workflow from JSON:

  1. Copy a workflow JSON definition to your clipboard
  2. Open the workflow builder
  3. Press Cmd+V (Mac) or Ctrl+V (Windows/Linux)
  4. The steps appear on the canvas at your cursor position

QuickFlo automatically handles ID collisions — if a pasted step has the same ID as an existing step, it gets renamed (e.g., my-step becomes my-step-1).

The most complete format — includes steps, initial data, and workflow options:

{
"name": "My Workflow",
"steps": [
{
"stepId": "fetch-data",
"stepType": "core.http-request",
"input": {
"url": "https://api.example.com/users",
"method": "GET"
}
},
{
"stepId": "transform",
"stepType": "core.map",
"input": {
"array": "{{ fetch-data.body.data }}",
"mappings": [
{ "targetPath": "name", "value": "{{ $item.firstName }} {{ $item.lastName }}" },
{ "targetPath": "email", "value": "{{ $item.email }}" }
]
}
}
],
"initial": {
"apiKey": "your-key",
"limit": 100
}
}

When pasting a full definition, the initial data and workflow options are also imported.

Paste multiple steps at once:

[
{
"stepId": "get-user",
"stepType": "core.http-request",
"input": {
"url": "https://api.example.com/users/{{ initial.userId }}",
"method": "GET"
}
},
{
"stepId": "send-email",
"stepType": "core.send-email",
"input": {
"to": "{{ get-user.body.email }}",
"subject": "Welcome!",
"body": "Hi {{ get-user.body.name }}"
}
}
]

Import a single step definition:

{
"stepId": "check-status",
"stepType": "core.http-request",
"input": {
"url": "https://api.example.com/status",
"method": "GET"
}
}

Each step in the JSON supports these fields:

FieldRequiredDescription
stepIdYesUnique identifier for the step
stepTypeYesThe step type (e.g., core.http-request, core.if, core.for-each)
inputNoConfiguration object — fields depend on the step type
continueOnErrorNoIf true, the workflow continues even if this step fails

Steps with nested children (like for-each, if, switch) include their children in the input:

{
"stepId": "process-items",
"stepType": "core.for-each",
"input": {
"array": "{{ fetch-data.body.items }}",
"steps": [
{
"stepId": "enrich",
"stepType": "core.http-request",
"input": { "url": "https://api.example.com/enrich/{{ $item.id }}" }
}
]
}
}
  1. Select one or more steps on the canvas
  2. Press Cmd+C (Mac) or Ctrl+C (Windows/Linux)
  3. The step definition JSON is copied to your system clipboard

You can paste it into another workflow, another browser tab, or share it with a teammate.

Right-click any step and select Copy Step to copy its definition to the clipboard.

From the Workflows page, right-click any workflow card (or open its menu) and select Copy Workflow Definition.

Workflow card context menu showing Copy Workflow Definition option

This copies the complete workflow definition — including all steps and the configured initial data. It’s more convenient than selecting all steps on the canvas with Cmd+C, which only copies the step definitions without initial data.

ActionMacWindows/Linux
Copy step(s)Cmd+CCtrl+C
Cut step(s)Cmd+XCtrl+X
Paste step(s)Cmd+VCtrl+V
Select allCmd+ACtrl+A
Execute workflowCmd+EnterCtrl+Enter
Toggle AI BuilderCmd+ICtrl+I
Toggle Results PanelCmd+ECtrl+E