Build a flow on the canvas yourself: drag in nodes, wire them together, fill in their settings, and test them one at a time.
The Nodes tab gives you the full canvas: drag in the nodes you want, wire them together, fill in their settings, and test them one at a time. You can hop to the Chat tab at any point and let the builder take over, it picks up whatever you changed.
The sidebar lists every node by category. Click a category to see its nodes, or type in the search box to filter across all of them. Drag a node from the sidebar onto the canvas to add it, clicking a node in the list does not add it.
Node catalog
Browse the full catalog of nodes and what each one does.
Drag nodes around to arrange them, or click Auto-Organize in the bottom-right controls (⌘/) to tidy the whole canvas at once. Those same controls zoom in and out and fit the flow to the screen. To work with several nodes together, shift-drag a box around them or ⌘-click each one, then copy and paste them with ⌘C and ⌘V. Select anything and press Delete to remove it.
Drag from a node’s bottom handle to another node’s top handle to connect them. One output can feed as many downstream nodes as you like. To remove a connection, click it and press Delete.Node settings live right on the canvas. Fill in the fields you see, and switch on More Options for the less common settings. To use a value from an earlier node, hover the node and drag a value from its Inputs panel into a field, where it drops in as a colored chip that you can mix with your own text. Some fields offer a dropdown of upstream values instead.
Click a node’s name to rename it, or hover a node and click a badge in its Outputs panel to rename an output.
To give your flow a simple form instead of the canvas, add a User Input node and turn on Access via user interface. This creates a web page where anyone can fill in the fields and run the flow, no builder needed. A View User Interface button then appears in the top-left of the canvas. See Flow user interface.To leave a note for yourself or a teammate, click Add Comment in the top-left of the canvas, then click where you want it. Comments are annotations only and do not connect to anything.
You do not have to run the whole flow to check one piece of it. Hover a node and click Test Node to try that node on its own. The rest of the canvas freezes, and the node’s fields turn into simple boxes where you type sample values. Click Test to run it. Nothing you type during a test is saved, and exiting test mode restores your flow exactly as it was.
When you want to run everything, click Run (⌘Enter). After a run, hovering a node also offers Re-Run From Here, which reuses the previous run’s results and picks up from that node onward, handy when you are iterating on the last step of a long flow. For progress, outputs, and past runs, see Running and testing and Run history.If something is wrong, the node turns red with the problem shown above it. Missing credentials stop a run before it starts and name the nodes to fix.
Click Save (⌘S) to save, which creates a new version each time. Settings (⌘,) holds the flow’s name, description, and status, and Share controls who else can see it.Open Version History to browse earlier saves and click one to view it, then use View Latest Version to come back. To go back to an older version, open it and save it, which makes it the current version.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"QX Labs Docs","description":"Learn how to build AI agents, automations, and enrichment grids on the QX platform.","colors":{"primary":"#7C3AED","light":"#8B5CF6","dark":"#6D28D9"},"logo":{"light":"https://mintcdn.com/qx-labs/ANUEumuRP1AOjziU/logo/light.svg?fit=max\u0026auto=format\u0026n=ANUEumuRP1AOjziU\u0026q=85\u0026s=65ac6a69f66999bfc9f87bd1f280adba","dark":"https://mintcdn.com/qx-labs/ANUEumuRP1AOjziU/logo/dark.svg?fit=max\u0026auto=format\u0026n=ANUEumuRP1AOjziU\u0026q=85\u0026s=57ca5e2de4b39fc1ca00ed6fdc3b8c67"},"favicon":"https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/favicon.png?fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=af89d63f1b6dd6ddebd8541b79e6e98e","appearance":{"default":"system"},"navbar":{"primary":{"type":"button","label":"Open QX","href":"https://app.qxlabs.com"}},"footer":{},"seo":{"metatags":{"canonical":"https://docs.qxlabs.com"},"organization":{"id":"https://www.qxlabs.com/#organization","name":"QX Labs","url":"https://www.qxlabs.com","logo":"https://www.qxlabs.com/img/logo.svg","sameAs":["https://www.linkedin.com/company/qxlabs"]},"trailingSlash":false},"icons":{"library":"lucide"},"styling":{"eyebrows":"breadcrumbs","latex":false},"contextual":{"options":["copy","view","assistant","mcp","add-mcp"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"qx-labs","hasAudioNarration":false,"actualSubdomain":"qx-labs","customDomains":["docs.qxlabs.com"],"gitSource":{"type":"github","owner":"qx-labs","repo":"qx-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ac437f90b502abae27822be","collectionId":"4ca62dba-85ac-48f9-87a5-c074616f310f","liveDeploymentHistoryId":"6ac437f90b502abae27822be","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ac437f90b502abae27822be","clientVersion":"0.0.3879","searchFilterCounts":[{"language":"default","tag":"Guides","count":48},{"language":"default","tag":"Flows","count":17},{"language":"default","tag":"Agents","count":13},{"language":"default","tag":"Grids","count":13},{"language":"default","tag":"Nodes","count":10},{"language":"default","tag":"Processors","count":7},{"language":"default","tag":"Tools","count":4},{"language":"default","tag":"Getting started","count":3},{"language":"default","tag":"Knowledge","count":3},{"language":"default","tag":"Create an agent","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-branches-v2-autocommit","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-branches-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"teamspace","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"client-snapshot-docs-config","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"flows/build-manually","slug":"/flows/build-manually","pageMetadata":{"title":"Build manually","description":"Build a flow on the canvas yourself: drag in nodes, wire them together, fill in their settings, and test them one at a time.","og:image":"https://docs.qxlabs.com/mintlify-assets/_next/image?url=%2F_mintlify%2Fapi%2Fog%3Fdivision%3DFlows%26appearance%3Dsystem%26title%3DBuild%2Bmanually%26description%3DBuild%2Ba%2Bflow%2Bon%2Bthe%2Bcanvas%2Byourself%253A%2Bdrag%2Bin%2Bnodes%252C%2Bwire%2Bthem%2Btogether%252C%2Bfill%2Bin%2Btheir%2Bsettings%252C%2Band%2Btest%2Bthem%2Bone%2Bat%2Ba%2Btime.%26logoLight%3Dhttps%253A%252F%252Fmintcdn.com%252Fqx-labs%252FANUEumuRP1AOjziU%252Flogo%252Flight.svg%253Ffit%253Dmax%2526auto%253Dformat%2526n%253DANUEumuRP1AOjziU%2526q%253D85%2526s%253D65ac6a69f66999bfc9f87bd1f280adba%26logoDark%3Dhttps%253A%252F%252Fmintcdn.com%252Fqx-labs%252FANUEumuRP1AOjziU%252Flogo%252Fdark.svg%253Ffit%253Dmax%2526auto%253Dformat%2526n%253DANUEumuRP1AOjziU%2526q%253D85%2526s%253D57ca5e2de4b39fc1ca00ed6fdc3b8c67%26primaryColor%3D%25237C3AED%26lightColor%3D%25238B5CF6%26backgroundLight%3D%2523ffffff%26backgroundDark%3D%25230c0b10\u0026w=1200\u0026q=100","twitter:image":"https://docs.qxlabs.com/mintlify-assets/_next/image?url=%2F_mintlify%2Fapi%2Fog%3Fdivision%3DFlows%26appearance%3Dsystem%26title%3DBuild%2Bmanually%26description%3DBuild%2Ba%2Bflow%2Bon%2Bthe%2Bcanvas%2Byourself%253A%2Bdrag%2Bin%2Bnodes%252C%2Bwire%2Bthem%2Btogether%252C%2Bfill%2Bin%2Btheir%2Bsettings%252C%2Band%2Btest%2Bthem%2Bone%2Bat%2Ba%2Btime.%26logoLight%3Dhttps%253A%252F%252Fmintcdn.com%252Fqx-labs%252FANUEumuRP1AOjziU%252Flogo%252Flight.svg%253Ffit%253Dmax%2526auto%253Dformat%2526n%253DANUEumuRP1AOjziU%2526q%253D85%2526s%253D65ac6a69f66999bfc9f87bd1f280adba%26logoDark%3Dhttps%253A%252F%252Fmintcdn.com%252Fqx-labs%252FANUEumuRP1AOjziU%252Flogo%252Fdark.svg%253Ffit%253Dmax%2526auto%253Dformat%2526n%253DANUEumuRP1AOjziU%2526q%253D85%2526s%253D57ca5e2de4b39fc1ca00ed6fdc3b8c67%26primaryColor%3D%25237C3AED%26lightColor%3D%25238B5CF6%26backgroundLight%3D%2523ffffff%26backgroundDark%3D%25230c0b10\u0026w=1200\u0026q=100","href":"/flows/build-manually"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Build a flow on the canvas yourself: drag in nodes, wire them together, fill in their settings, and test them one at a time.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Card,Frame,Heading,OptimizedImage,Tip}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Nodes`}),` tab gives you the full canvas: drag in the nodes you want, wire them together, fill in their settings, and test them one at a time. You can hop to the `,_jsxs(_components.a,{href:`/flows/build-with-ai`,children:[_jsx(_components.strong,{children:`Chat`}),` tab`]}),` at any point and let the builder take over, it picks up whatever you changed.`]}),`\n`,_jsx(Heading,{level:`2`,id:`add-nodes-to-the-canvas`,children:`Add nodes to the canvas`}),`\n`,_jsxs(_components.p,{children:[`The sidebar lists every node by category. Click a category to see its nodes, or type in the search box to filter across all of them. `,_jsx(_components.strong,{children:`Drag`}),` a node from the sidebar onto the canvas to add it, clicking a node in the list does not add it.`]}),`\n`,_jsxs(Frame,{children:[_jsx(OptimizedImage,{className:`mint-block dark:mint-hidden`,src:`https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/component-pane-light.png?fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=5d01f481f20b1bb7a7e1d6c5b643d819`,alt:`The node sidebar with categories and the search box, next to the canvas`,\"data-og-width\":`1919`,width:`1919`,\"data-og-height\":`951`,height:`951`,\"data-path\":`images/flows/build-manually/component-pane-light.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/component-pane-light.png?w=280\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=7340013378d7926a6ebca6ca660acb5e 280w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/component-pane-light.png?w=560\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=d40bfd4569a645118dceb8adf9737524 560w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/component-pane-light.png?w=840\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=a6a8546a4e0c205796e9ea32e15e84d8 840w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/component-pane-light.png?w=1100\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=3b6df4f2d612503fa94659443ef02528 1100w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/component-pane-light.png?w=1650\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=1513db440be0316af92c034e9f69b264 1650w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/component-pane-light.png?w=2500\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=58a4d30816d47097b2220db975627682 2500w`}),_jsx(OptimizedImage,{className:`mint-hidden dark:mint-block`,src:`https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/component-pane-dark.png?fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=9617a37030dd6772a33ae8c367bd4379`,alt:`The node sidebar with categories and the search box, next to the canvas`,\"data-og-width\":`1919`,width:`1919`,\"data-og-height\":`951`,height:`951`,\"data-path\":`images/flows/build-manually/component-pane-dark.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/component-pane-dark.png?w=280\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=bca1542df1e41ef003db2efd141cbbd8 280w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/component-pane-dark.png?w=560\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=ed4e82548968527764a2c2acf284bea2 560w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/component-pane-dark.png?w=840\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=0b8e6f09cac9c52e049aebb010840a92 840w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/component-pane-dark.png?w=1100\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=1cfe4c08720a5c457365ee33e4111573 1100w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/component-pane-dark.png?w=1650\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=f13e279e8ae1c9456d19c865d6bc0914 1650w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/component-pane-dark.png?w=2500\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=8d71d81a5ca0b3e8039c1a26522a6de2 2500w`})]}),`\n`,_jsx(Card,{title:`Node catalog`,icon:`list-tree`,href:`/flows/nodes/overview`,horizontal:true,children:_jsx(_components.p,{children:`Browse the full catalog of nodes and what each one does.`})}),`\n`,_jsxs(_components.p,{children:[`Drag nodes around to arrange them, or click `,_jsx(_components.strong,{children:`Auto-Organize`}),` in the bottom-right controls (`,_jsx(_components.strong,{children:`⌘/`}),`) to tidy the whole canvas at once. Those same controls zoom in and out and fit the flow to the screen. To work with several nodes together, shift-drag a box around them or ⌘-click each one, then copy and paste them with `,_jsx(_components.strong,{children:`⌘C`}),` and `,_jsx(_components.strong,{children:`⌘V`}),`. Select anything and press `,_jsx(_components.strong,{children:`Delete`}),` to remove it.`]}),`\n`,_jsx(Heading,{level:`2`,id:`connect-and-set-up-nodes`,children:`Connect and set up nodes`}),`\n`,_jsxs(_components.p,{children:[`Drag from a node’s bottom handle to another node’s top handle to connect them. One output can feed as many downstream nodes as you like. To remove a connection, click it and press `,_jsx(_components.strong,{children:`Delete`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Node settings live right on the canvas. Fill in the fields you see, and switch on `,_jsx(_components.strong,{children:`More Options`}),` for the less common settings. To use a value from an earlier node, hover the node and drag a value from its `,_jsx(_components.strong,{children:`Inputs`}),` panel into a field, where it drops in as a colored chip that you can mix with your own text. Some fields offer a dropdown of upstream values instead.`]}),`\n`,_jsxs(Frame,{children:[_jsx(OptimizedImage,{className:`mint-block dark:mint-hidden`,src:`https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/node-config-light.png?fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=2103b60aa4d015daeee3aab731d58a8d`,alt:`A node on the canvas with its fields, and the hover panels showing available inputs and outputs`,\"data-og-width\":`1919`,width:`1919`,\"data-og-height\":`949`,height:`949`,\"data-path\":`images/flows/build-manually/node-config-light.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/node-config-light.png?w=280\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=47b658a64e923a1e8269952ff77b721d 280w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/node-config-light.png?w=560\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=709ad8f4532b1a82456cbec321b364f3 560w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/node-config-light.png?w=840\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=8980b8635d85a70116b68a7fafd5eeaa 840w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/node-config-light.png?w=1100\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=10a93367901d0030d2f123cc014b533a 1100w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/node-config-light.png?w=1650\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=14237906357365fe982e6cb235e72d5a 1650w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/node-config-light.png?w=2500\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=ce3612479c11c0adce9040662fc83b8a 2500w`}),_jsx(OptimizedImage,{className:`mint-hidden dark:mint-block`,src:`https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/node-config-dark.png?fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=556a0bf39c7aaf006ddf8bccedda75c6`,alt:`A node on the canvas with its fields, and the hover panels showing available inputs and outputs`,\"data-og-width\":`1919`,width:`1919`,\"data-og-height\":`949`,height:`949`,\"data-path\":`images/flows/build-manually/node-config-dark.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/node-config-dark.png?w=280\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=e8c82dfd8e7a1593e4edd5f489363691 280w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/node-config-dark.png?w=560\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=f46a8f574713515d2d925084291e2dae 560w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/node-config-dark.png?w=840\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=695dabe2a5e3bf2761b3df8187a0ca5b 840w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/node-config-dark.png?w=1100\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=15873b88481dce58e2c1b9a2f0a44c25 1100w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/node-config-dark.png?w=1650\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=9aba6cd1a34e85e881eb31180bbf5e45 1650w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/node-config-dark.png?w=2500\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=10a40ed2be68660364d6857cd430e488 2500w`})]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Click a node’s name to rename it, or hover a node and click a badge in its `,_jsx(_components.strong,{children:`Outputs`}),` panel to rename an output.`]})}),`\n`,_jsxs(_components.p,{children:[`To give your flow a simple form instead of the canvas, add a `,_jsx(_components.strong,{children:`User Input`}),` node and turn on `,_jsx(_components.strong,{children:`Access via user interface`}),`. This creates a web page where anyone can fill in the fields and run the flow, no builder needed. A `,_jsx(_components.strong,{children:`View User Interface`}),` button then appears in the top-left of the canvas. See `,_jsx(_components.a,{href:`/flows/flow-ui`,children:`Flow user interface`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`To leave a note for yourself or a teammate, click `,_jsx(_components.strong,{children:`Add Comment`}),` in the top-left of the canvas, then click where you want it. Comments are annotations only and do not connect to anything.`]}),`\n`,_jsxs(Frame,{children:[_jsx(OptimizedImage,{className:`mint-block dark:mint-hidden`,src:`https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/comment-light.png?fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=c5ea7e78e9d25a420d4f5c967e267b6c`,alt:`A comment note placed on the canvas next to a node`,width:`560`,\"data-og-width\":`966`,\"data-og-height\":`701`,\"data-path\":`images/flows/build-manually/comment-light.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/comment-light.png?w=280\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=406bf98b99a6a81ff4d1c6ef99e1629b 280w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/comment-light.png?w=560\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=9568cb849ecdd62c4d2c52a089aad0ec 560w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/comment-light.png?w=840\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=e66938b1b31e533d3fdf08b31b85ff59 840w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/comment-light.png?w=1100\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=89b2968dc7f408acdc18a833f3b62592 1100w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/comment-light.png?w=1650\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=e481fdebb0136c54dbae805c57158925 1650w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/comment-light.png?w=2500\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=f7cc753ea36afddf5af9e68dbc637b8f 2500w`}),_jsx(OptimizedImage,{className:`mint-hidden dark:mint-block`,src:`https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/comment-dark.png?fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=bda3e59eb7cb3bd7e41f087bba2443ec`,alt:`A comment note placed on the canvas next to a node`,width:`560`,\"data-og-width\":`966`,\"data-og-height\":`701`,\"data-path\":`images/flows/build-manually/comment-dark.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/comment-dark.png?w=280\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=fca17dd593af1c467ee31b71b2eaa38f 280w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/comment-dark.png?w=560\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=680e9cb476d3c6fc3d30e056050d739d 560w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/comment-dark.png?w=840\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=3bb0e47e256a2da1292531e70a522cf0 840w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/comment-dark.png?w=1100\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=b1b8a56bc118d6f6b211db9584ca53f7 1100w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/comment-dark.png?w=1650\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=410d86d680c7ffe337fc8de02bcef248 1650w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/comment-dark.png?w=2500\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=a58b51da5029ec55d6360a66753d24cc 2500w`})]}),`\n`,_jsx(Heading,{level:`2`,id:`test-as-you-build`,children:`Test as you build`}),`\n`,_jsxs(_components.p,{children:[`You do not have to run the whole flow to check one piece of it. Hover a node and click `,_jsx(_components.strong,{children:`Test Node`}),` to try that node on its own. The rest of the canvas freezes, and the node’s fields turn into simple boxes where you type sample values. Click `,_jsx(_components.strong,{children:`Test`}),` to run it. Nothing you type during a test is saved, and exiting test mode restores your flow exactly as it was.`]}),`\n`,_jsxs(Frame,{children:[_jsx(OptimizedImage,{className:`mint-block dark:mint-hidden`,src:`https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/test-node-light.png?fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=cfc04b63de83d7e696b48508bfd7f49b`,alt:`A node in test mode with sample value fields, while the rest of the canvas is frozen`,\"data-og-width\":`1919`,width:`1919`,\"data-og-height\":`946`,height:`946`,\"data-path\":`images/flows/build-manually/test-node-light.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/test-node-light.png?w=280\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=65f0d72f1a032e21f2584ef5d87eab11 280w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/test-node-light.png?w=560\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=ef61c6b104a2114360f50d275115a089 560w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/test-node-light.png?w=840\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=9cce8e8d0a35746180fae415f03f474f 840w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/test-node-light.png?w=1100\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=4b1b9be9d6155cd3337dfb270785099c 1100w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/test-node-light.png?w=1650\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=33a86206e7b86dbaf4bd073ee92d6366 1650w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/test-node-light.png?w=2500\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=e196c5eac858e746033264079936dd56 2500w`}),_jsx(OptimizedImage,{className:`mint-hidden dark:mint-block`,src:`https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/test-node-dark.png?fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=3d6fa247fd8883fcf8463c19225ef77d`,alt:`A node in test mode with sample value fields, while the rest of the canvas is frozen`,\"data-og-width\":`1919`,width:`1919`,\"data-og-height\":`946`,height:`946`,\"data-path\":`images/flows/build-manually/test-node-dark.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/test-node-dark.png?w=280\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=fa0611437cd585c3061cd5847b57fd8f 280w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/test-node-dark.png?w=560\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=9c7e017b3c57f3dcc0640b9720f6b10a 560w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/test-node-dark.png?w=840\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=4ce3477770741204b224d7a09bc0e8d4 840w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/test-node-dark.png?w=1100\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=90efc6a156b8d500b9f32234dbf6292e 1100w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/test-node-dark.png?w=1650\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=5e6b57b45019861c6cb6724f756c179f 1650w, https://mintcdn.com/qx-labs/ZJkiVX6zo-84vXkk/images/flows/build-manually/test-node-dark.png?w=2500\u0026fit=max\u0026auto=format\u0026n=ZJkiVX6zo-84vXkk\u0026q=85\u0026s=5f466314dd01905fbb734cb4a54d0e65 2500w`})]}),`\n`,_jsxs(_components.p,{children:[`When you want to run everything, click `,_jsx(_components.strong,{children:`Run`}),` (`,_jsx(_components.strong,{children:`⌘Enter`}),`). After a run, hovering a node also offers `,_jsx(_components.strong,{children:`Re-Run From Here`}),`, which reuses the previous run’s results and picks up from that node onward, handy when you are iterating on the last step of a long flow. For progress, outputs, and past runs, see `,_jsx(_components.a,{href:`/flows/running-and-testing`,children:`Running and testing`}),` and `,_jsx(_components.a,{href:`/flows/run-history`,children:`Run history`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`If something is wrong, the node turns red with the problem shown above it. Missing `,_jsx(_components.a,{href:`/connected-apps/overview`,children:`credentials`}),` stop a run before it starts and name the nodes to fix.`]}),`\n`,_jsx(Heading,{level:`2`,id:`save-your-work`,children:`Save your work`}),`\n`,_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Save`}),` (`,_jsx(_components.strong,{children:`⌘S`}),`) to save, which creates a new version each time. `,_jsx(_components.strong,{children:`Settings`}),` (`,_jsx(_components.strong,{children:`⌘,`}),`) holds the flow’s name, description, and status, and `,_jsx(_components.strong,{children:`Share`}),` controls who else can see it.`]}),`\n`,_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Version History`}),` to browse earlier saves and click one to view it, then use `,_jsx(_components.strong,{children:`View Latest Version`}),` to come back. To go back to an older version, open it and save it, which makes it the current version.`]}),`\n`,_jsxs(Frame,{children:[_jsx(OptimizedImage,{className:`mint-block dark:mint-hidden`,src:`https://mintcdn.com/qx-labs/1FXz21yTufvWGRBn/images/flows/build-manually/version-history-light.png?fit=max\u0026auto=format\u0026n=1FXz21yTufvWGRBn\u0026q=85\u0026s=73447ced20594f8d41277e69e9d7192d`,alt:`The version history list showing earlier saves of a flow`,\"data-og-width\":`1267`,width:`1267`,\"data-og-height\":`730`,height:`730`,\"data-path\":`images/flows/build-manually/version-history-light.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/qx-labs/1FXz21yTufvWGRBn/images/flows/build-manually/version-history-light.png?w=280\u0026fit=max\u0026auto=format\u0026n=1FXz21yTufvWGRBn\u0026q=85\u0026s=81377759560a19a2f9602346ddfcb1bc 280w, https://mintcdn.com/qx-labs/1FXz21yTufvWGRBn/images/flows/build-manually/version-history-light.png?w=560\u0026fit=max\u0026auto=format\u0026n=1FXz21yTufvWGRBn\u0026q=85\u0026s=098e8f7eb2dd59594b8197c17fe61368 560w, https://mintcdn.com/qx-labs/1FXz21yTufvWGRBn/images/flows/build-manually/version-history-light.png?w=840\u0026fit=max\u0026auto=format\u0026n=1FXz21yTufvWGRBn\u0026q=85\u0026s=1fcfc6ec04148185e08ff49a1a756819 840w, https://mintcdn.com/qx-labs/1FXz21yTufvWGRBn/images/flows/build-manually/version-history-light.png?w=1100\u0026fit=max\u0026auto=format\u0026n=1FXz21yTufvWGRBn\u0026q=85\u0026s=c07674c56a00553674557cf66fba6269 1100w, https://mintcdn.com/qx-labs/1FXz21yTufvWGRBn/images/flows/build-manually/version-history-light.png?w=1650\u0026fit=max\u0026auto=format\u0026n=1FXz21yTufvWGRBn\u0026q=85\u0026s=d59e3b215156c0c6193e3c6b3c7e5584 1650w, https://mintcdn.com/qx-labs/1FXz21yTufvWGRBn/images/flows/build-manually/version-history-light.png?w=2500\u0026fit=max\u0026auto=format\u0026n=1FXz21yTufvWGRBn\u0026q=85\u0026s=a308f419eddaafc89480105a753dde31 2500w`}),_jsx(OptimizedImage,{className:`mint-hidden dark:mint-block`,src:`https://mintcdn.com/qx-labs/1FXz21yTufvWGRBn/images/flows/build-manually/version-history-dark.png?fit=max\u0026auto=format\u0026n=1FXz21yTufvWGRBn\u0026q=85\u0026s=5ddda93b285ae9644a13a7234c5e2b1f`,alt:`The version history list showing earlier saves of a flow`,\"data-og-width\":`1267`,width:`1267`,\"data-og-height\":`730`,height:`730`,\"data-path\":`images/flows/build-manually/version-history-dark.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/qx-labs/1FXz21yTufvWGRBn/images/flows/build-manually/version-history-dark.png?w=280\u0026fit=max\u0026auto=format\u0026n=1FXz21yTufvWGRBn\u0026q=85\u0026s=258d264f3acc08538ef6d6885dea9a8a 280w, https://mintcdn.com/qx-labs/1FXz21yTufvWGRBn/images/flows/build-manually/version-history-dark.png?w=560\u0026fit=max\u0026auto=format\u0026n=1FXz21yTufvWGRBn\u0026q=85\u0026s=dfc2e97640701194483ddca05865ba6e 560w, https://mintcdn.com/qx-labs/1FXz21yTufvWGRBn/images/flows/build-manually/version-history-dark.png?w=840\u0026fit=max\u0026auto=format\u0026n=1FXz21yTufvWGRBn\u0026q=85\u0026s=ff5f3dcf2e63fb75ab758ab079df5d2b 840w, https://mintcdn.com/qx-labs/1FXz21yTufvWGRBn/images/flows/build-manually/version-history-dark.png?w=1100\u0026fit=max\u0026auto=format\u0026n=1FXz21yTufvWGRBn\u0026q=85\u0026s=808f86f0d5a02326b173aa25684bd3bb 1100w, https://mintcdn.com/qx-labs/1FXz21yTufvWGRBn/images/flows/build-manually/version-history-dark.png?w=1650\u0026fit=max\u0026auto=format\u0026n=1FXz21yTufvWGRBn\u0026q=85\u0026s=ed9102ca6af644a1a9d43a8659df5133 1650w, https://mintcdn.com/qx-labs/1FXz21yTufvWGRBn/images/flows/build-manually/version-history-dark.png?w=2500\u0026fit=max\u0026auto=format\u0026n=1FXz21yTufvWGRBn\u0026q=85\u0026s=ca6da55f95c333893a0137532f0f7ca4 2500w`})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Build manually","description":"Build a flow on the canvas yourself: drag in nodes, wire them together, fill in their settings, and test them one at a time.","og:image":"https://docs.qxlabs.com/mintlify-assets/_next/image?url=%2F_mintlify%2Fapi%2Fog%3Fdivision%3DFlows%26appearance%3Dsystem%26title%3DBuild%2Bmanually%26description%3DBuild%2Ba%2Bflow%2Bon%2Bthe%2Bcanvas%2Byourself%253A%2Bdrag%2Bin%2Bnodes%252C%2Bwire%2Bthem%2Btogether%252C%2Bfill%2Bin%2Btheir%2Bsettings%252C%2Band%2Btest%2Bthem%2Bone%2Bat%2Ba%2Btime.%26logoLight%3Dhttps%253A%252F%252Fmintcdn.com%252Fqx-labs%252FANUEumuRP1AOjziU%252Flogo%252Flight.svg%253Ffit%253Dmax%2526auto%253Dformat%2526n%253DANUEumuRP1AOjziU%2526q%253D85%2526s%253D65ac6a69f66999bfc9f87bd1f280adba%26logoDark%3Dhttps%253A%252F%252Fmintcdn.com%252Fqx-labs%252FANUEumuRP1AOjziU%252Flogo%252Fdark.svg%253Ffit%253Dmax%2526auto%253Dformat%2526n%253DANUEumuRP1AOjziU%2526q%253D85%2526s%253D57ca5e2de4b39fc1ca00ed6fdc3b8c67%26primaryColor%3D%25237C3AED%26lightColor%3D%25238B5CF6%26backgroundLight%3D%2523ffffff%26backgroundDark%3D%25230c0b10\u0026w=1200\u0026q=100","twitter:image":"https://docs.qxlabs.com/mintlify-assets/_next/image?url=%2F_mintlify%2Fapi%2Fog%3Fdivision%3DFlows%26appearance%3Dsystem%26title%3DBuild%2Bmanually%26description%3DBuild%2Ba%2Bflow%2Bon%2Bthe%2Bcanvas%2Byourself%253A%2Bdrag%2Bin%2Bnodes%252C%2Bwire%2Bthem%2Btogether%252C%2Bfill%2Bin%2Btheir%2Bsettings%252C%2Band%2Btest%2Bthem%2Bone%2Bat%2Ba%2Btime.%26logoLight%3Dhttps%253A%252F%252Fmintcdn.com%252Fqx-labs%252FANUEumuRP1AOjziU%252Flogo%252Flight.svg%253Ffit%253Dmax%2526auto%253Dformat%2526n%253DANUEumuRP1AOjziU%2526q%253D85%2526s%253D65ac6a69f66999bfc9f87bd1f280adba%26logoDark%3Dhttps%253A%252F%252Fmintcdn.com%252Fqx-labs%252FANUEumuRP1AOjziU%252Flogo%252Fdark.svg%253Ffit%253Dmax%2526auto%253Dformat%2526n%253DANUEumuRP1AOjziU%2526q%253D85%2526s%253D57ca5e2de4b39fc1ca00ed6fdc3b8c67%26primaryColor%3D%25237C3AED%26lightColor%3D%25238B5CF6%26backgroundLight%3D%2523ffffff%26backgroundDark%3D%25230c0b10\u0026w=1200\u0026q=100","href":"/flows/build-manually"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Add nodes to the canvas","slug":"add-nodes-to-the-canvas","depth":2,"children":[]},{"title":"Connect and set up nodes","slug":"connect-and-set-up-nodes","depth":2,"children":[]},{"title":"Test as you build","slug":"test-as-you-build","depth":2,"children":[]},{"title":"Save your work","slug":"save-your-work","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"dynamicCss":".mint-block {\n display: block\n}\n.mint-hidden {\n display: none\n}\n.dark\\:mint-block:is(.dark *) {\n display: block\n}\n.dark\\:mint-hidden:is(.dark *) {\n display: none\n}","subdomain":"qx-labs","siteName":"QX Labs Docs","title":"Build manually - QX Labs Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-20T19:37:53.925Z","originalFileLocation":"flows/build-manually.mdx"},"headHtml":"\u003cmeta data-mint-head name=\"description\" content=\"Build a flow on the canvas yourself: drag in nodes, wire them together, fill in their settings, and test them one at a time.\">\u003cmeta data-mint-head name=\"application-name\" content=\"QX Labs Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/qx-labs/LkkOaRr8pBhKxINP/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/qx-labs/LkkOaRr8pBhKxINP/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/qx-labs/LkkOaRr8pBhKxINP/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/qx-labs/LkkOaRr8pBhKxINP/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/qx-labs/LkkOaRr8pBhKxINP/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/qx-labs/LkkOaRr8pBhKxINP/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/qx-labs/LkkOaRr8pBhKxINP/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/qx-labs/LkkOaRr8pBhKxINP/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/qx-labs/LkkOaRr8pBhKxINP/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Build manually - QX Labs Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Build a flow on the canvas yourself: drag in nodes, wire them together, fill in their settings, and test them one at a time.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"QX Labs Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.qxlabs.com/flows/build-manually\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://docs.qxlabs.com/mintlify-assets/_next/image?url=%2F_mintlify%2Fapi%2Fog%3Fdivision%3DFlows%26appearance%3Dsystem%26title%3DBuild%2Bmanually%26description%3DBuild%2Ba%2Bflow%2Bon%2Bthe%2Bcanvas%2Byourself%253A%2Bdrag%2Bin%2Bnodes%252C%2Bwire%2Bthem%2Btogether%252C%2Bfill%2Bin%2Btheir%2Bsettings%252C%2Band%2Btest%2Bthem%2Bone%2Bat%2Ba%2Btime.%26logoLight%3Dhttps%253A%252F%252Fmintcdn.com%252Fqx-labs%252FANUEumuRP1AOjziU%252Flogo%252Flight.svg%253Ffit%253Dmax%2526auto%253Dformat%2526n%253DANUEumuRP1AOjziU%2526q%253D85%2526s%253D65ac6a69f66999bfc9f87bd1f280adba%26logoDark%3Dhttps%253A%252F%252Fmintcdn.com%252Fqx-labs%252FANUEumuRP1AOjziU%252Flogo%252Fdark.svg%253Ffit%253Dmax%2526auto%253Dformat%2526n%253DANUEumuRP1AOjziU%2526q%253D85%2526s%253D57ca5e2de4b39fc1ca00ed6fdc3b8c67%26primaryColor%3D%25237C3AED%26lightColor%3D%25238B5CF6%26backgroundLight%3D%2523ffffff%26backgroundDark%3D%25230c0b10\u0026amp;w=1200\u0026amp;q=100\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Build manually - QX Labs Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Build a flow on the canvas yourself: drag in nodes, wire them together, fill in their settings, and test them one at a time.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://docs.qxlabs.com/mintlify-assets/_next/image?url=%2F_mintlify%2Fapi%2Fog%3Fdivision%3DFlows%26appearance%3Dsystem%26title%3DBuild%2Bmanually%26description%3DBuild%2Ba%2Bflow%2Bon%2Bthe%2Bcanvas%2Byourself%253A%2Bdrag%2Bin%2Bnodes%252C%2Bwire%2Bthem%2Btogether%252C%2Bfill%2Bin%2Btheir%2Bsettings%252C%2Band%2Btest%2Bthem%2Bone%2Bat%2Ba%2Btime.%26logoLight%3Dhttps%253A%252F%252Fmintcdn.com%252Fqx-labs%252FANUEumuRP1AOjziU%252Flogo%252Flight.svg%253Ffit%253Dmax%2526auto%253Dformat%2526n%253DANUEumuRP1AOjziU%2526q%253D85%2526s%253D65ac6a69f66999bfc9f87bd1f280adba%26logoDark%3Dhttps%253A%252F%252Fmintcdn.com%252Fqx-labs%252FANUEumuRP1AOjziU%252Flogo%252Fdark.svg%253Ffit%253Dmax%2526auto%253Dformat%2526n%253DANUEumuRP1AOjziU%2526q%253D85%2526s%253D57ca5e2de4b39fc1ca00ed6fdc3b8c67%26primaryColor%3D%25237C3AED%26lightColor%3D%25238B5CF6%26backgroundLight%3D%2523ffffff%26backgroundDark%3D%25230c0b10\u0026amp;w=1200\u0026amp;q=100\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/qx-labs/LkkOaRr8pBhKxINP/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"QX Labs Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7C3AED\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.qxlabs.com/flows/build-manually\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/flows/build-manually.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.qxlabs.com/#organization\",\"name\":\"QX Labs\",\"url\":\"https://www.qxlabs.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.qxlabs.com/img/logo.svg\"},\"sameAs\":[\"https://www.linkedin.com/company/qxlabs\"]},{\"@type\":\"WebSite\",\"@id\":\"https://docs.qxlabs.com#website\",\"name\":\"QX Labs Docs\",\"url\":\"https://docs.qxlabs.com\",\"publisher\":{\"@id\":\"https://www.qxlabs.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.qxlabs.com/flows/build-manually#webpage\",\"url\":\"https://docs.qxlabs.com/flows/build-manually\",\"name\":\"Build manually\",\"description\":\"Build a flow on the canvas yourself: drag in nodes, wire them together, fill in their settings, and test them one at a time.\",\"dateModified\":\"2026-08-20T19:37:53.925Z\",\"isPartOf\":{\"@id\":\"https://docs.qxlabs.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.qxlabs.com/flows/build-manually#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.qxlabs.com/flows/build-manually#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guides\",\"item\":\"https://docs.qxlabs.com/getting-started/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Flows\",\"item\":\"https://docs.qxlabs.com/flows/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Build manually\",\"item\":\"https://docs.qxlabs.com/flows/build-manually\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.qxlabs.com/flows/build-manually#article\",\"headline\":\"Build manually\",\"name\":\"Build manually\",\"description\":\"Build a flow on the canvas yourself: drag in nodes, wire them together, fill in their settings, and test them one at a time.\",\"url\":\"https://docs.qxlabs.com/flows/build-manually\",\"mainEntityOfPage\":{\"@id\":\"https://docs.qxlabs.com/flows/build-manually#webpage\"},\"image\":\"https://docs.qxlabs.com/mintlify-assets/_next/image?url=%2F_mintlify%2Fapi%2Fog%3Fdivision%3DFlows%26appearance%3Dsystem%26title%3DBuild%2Bmanually%26description%3DBuild%2Ba%2Bflow%2Bon%2Bthe%2Bcanvas%2Byourself%253A%2Bdrag%2Bin%2Bnodes%252C%2Bwire%2Bthem%2Btogether%252C%2Bfill%2Bin%2Btheir%2Bsettings%252C%2Band%2Btest%2Bthem%2Bone%2Bat%2Ba%2Btime.%26logoLight%3Dhttps%253A%252F%252Fmintcdn.com%252Fqx-labs%252FANUEumuRP1AOjziU%252Flogo%252Flight.svg%253Ffit%253Dmax%2526auto%253Dformat%2526n%253DANUEumuRP1AOjziU%2526q%253D85%2526s%253D65ac6a69f66999bfc9f87bd1f280adba%26logoDark%3Dhttps%253A%252F%252Fmintcdn.com%252Fqx-labs%252FANUEumuRP1AOjziU%252Flogo%252Fdark.svg%253Ffit%253Dmax%2526auto%253Dformat%2526n%253DANUEumuRP1AOjziU%2526q%253D85%2526s%253D57ca5e2de4b39fc1ca00ed6fdc3b8c67%26primaryColor%3D%25237C3AED%26lightColor%3D%25238B5CF6%26backgroundLight%3D%2523ffffff%26backgroundDark%3D%25230c0b10\u0026w=1200\u0026q=100\",\"dateModified\":\"2026-08-20T19:37:53.925Z\",\"publisher\":{\"@id\":\"https://www.qxlabs.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.qxlabs.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"QX Labs Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"QX Labs Docs","nav":{"global":null,"groups":[{"group":"Guides","pages":[{"group":"Getting started","icon":"rocket","expanded":true,"pages":[{"title":"Introduction","href":"/getting-started/introduction"},{"title":"Quickstart","href":"/getting-started/quickstart"},{"title":"Plans and credits","href":"/getting-started/plans-and-credits"}]},{"group":"Agents","icon":"bot","expanded":true,"pages":[{"title":"Overview","href":"/agents/overview"},{"group":"Create an agent","pages":[{"title":"Build with AI","href":"/agents/create-an-agent/build-with-ai"},{"title":"Build manually","href":"/agents/create-an-agent/build-manually"}]},{"title":"Models and instructions","href":"/agents/models-and-instructions"},{"title":"Capabilities","href":"/agents/capabilities"},{"title":"Persistent Workspace","href":"/agents/persistent-workspace"},{"title":"Skills","href":"/agents/skills"},{"title":"Connected apps and knowledge","href":"/agents/apps-and-knowledge"},{"title":"Scopes and permissions","href":"/agents/scopes-and-permissions"},{"title":"Chat","href":"/agents/chat"},{"title":"Communication channels","href":"/agents/communication-channels"},{"title":"External WhatsApp agents","href":"/agents/external-whatsapp-agents"},{"title":"Scheduled tasks","href":"/agents/scheduled-tasks"}]},{"group":"Flows","icon":"workflow","pages":[{"title":"Overview","href":"/flows/overview"},{"title":"Build with AI","description":"Turn a plain-language description into a working flow: the AI builder adds the nodes, wires them up, and configures them on the canvas for you.","href":"/flows/build-with-ai"},{"title":"Build manually","href":"/flows/build-manually"},{"title":"Running and testing","description":"Run a flow from the builder, watch it work node by node with credits and timing, inspect inputs and outputs, and test single nodes while you build.","href":"/flows/running-and-testing"},{"title":"Flow user interface","href":"/flows/flow-ui"},{"title":"Schedules and triggers","href":"/flows/schedules-and-triggers"},{"title":"Run history","href":"/flows/run-history"},{"group":"Nodes","icon":"list-tree","pages":[{"title":"Overview","href":"/flows/nodes/overview"},{"title":"Triggers","href":"/flows/nodes/triggers"},{"title":"Workflow basics","href":"/flows/nodes/workflow-basics"},{"title":"Custom code","href":"/flows/nodes/custom-code"},{"title":"Custom code trigger","href":"/flows/nodes/custom-code-trigger"},{"title":"AI nodes","href":"/flows/nodes/ai"},{"title":"File operations","href":"/flows/nodes/file-operations"},{"title":"List and text operations","href":"/flows/nodes/list-and-text"},{"title":"Web operations","href":"/flows/nodes/web-operations"},{"title":"Integration nodes","href":"/flows/nodes/integrations"}]}]},{"group":"Grids","icon":"table","pages":[{"title":"Overview","href":"/grids/overview"},{"title":"Create a grid","href":"/grids/create-a-grid"},{"title":"Build with AI","href":"/grids/build-with-ai"},{"title":"Columns and processors","href":"/grids/columns-and-processors"},{"title":"Running cells","href":"/grids/running-cells"},{"title":"Import and export","href":"/grids/import-and-export"},{"group":"Processors","icon":"table-properties","pages":[{"title":"Overview","href":"/grids/processors/overview"},{"title":"User input processors","href":"/grids/processors/user-input"},{"title":"AI processors","href":"/grids/processors/ai"},{"title":"Advanced processors","href":"/grids/processors/advanced"},{"title":"Text and web processors","href":"/grids/processors/text-and-web"},{"title":"Enrichment processors","href":"/grids/processors/enrichment"},{"title":"Integration processors","href":"/grids/processors/integrations"}]}]},{"group":"Pages","icon":"panels-top-left","pages":[{"title":"Overview","href":"/pages/overview"}]},{"group":"Spaces","icon":"app-window","pages":[{"title":"Overview","href":"/spaces/overview"}]}]},{"group":"Tools","pages":[{"group":"Knowledge","icon":"library","pages":[{"title":"Overview","href":"/knowledge/overview"},{"title":"Adding files","href":"/knowledge/adding-files"},{"title":"Connect via MCP","href":"/knowledge/connect-via-mcp"}]},{"group":"Connected apps","icon":"plug","pages":[{"title":"Overview","href":"/connected-apps/overview"}]}]},{"group":"Updates","pages":[{"title":"Changelog","href":"/updates/changelog"}]}]},"title":"Build manually - QX Labs Docs","buildId":"dpl_5UGCeHaPhSKbAExsKaHeR8dW3HyG","deploymentId":"dpl_5UGCeHaPhSKbAExsKaHeR8dW3HyG","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-DYrD4gCJ.js","DynamicMarkdown-BTVnG8lc.js","zoom-image-lightbox-DgtuyVql.js","PlusIcon-BCNs_Q8j.js","lightbox-handle-r17bVUz3.js"]}