Nodes are the building blocks of Retell conversation flows. Learn every node type, how edges connect them, and how transition conditions advance calls.
A conversation flow is a graph of nodes connected by edges. Each node handles one step of the call — talking with the user, running a tool, branching on data, transferring, or ending the call. Each edge carries a transition condition that decides when the agent moves to the next node.Node boundaries let you limit context and control execution, but can restrict how the conversation proceeds. Read conversation flow best practices before deciding how to divide your task.
Subagent Node: Dialogue where the agent can also call tools/functions based on context. Unlike a function node (which executes deterministically on entry), the LLM decides whether and when to invoke each tool from what the user says. Supports multiple tools per node and stays active across multiple turns and tool calls before transitioning. Use a function node instead when a tool must always run at that step.
Conversation Node: Pure dialogue with the user — no tool calling. The agent can hold a multi-turn conversation within a single node, so you don’t need a new node for every line. Supports two instruction modes: Prompt (the LLM generates responses dynamically) and Static Sentence (the agent says a fixed line first, then continues dynamically if the conversation stays in the node). Transitions are evaluated after each user response.
Extract DV Node: Extracts information from the conversation so far and stores it as dynamic variables on entry — not for dialogue. The LLM analyzes the full conversation to capture each value you define by name, description, and type (Text, Number, Enum, or Boolean). Useful for structured data that downstream nodes or Post Call Extraction need.
Function Node: Executes a single tool/function deterministically on node entry — not for dialogue. Choose Wait for completion under Execution mode when the next hop depends on the return value, then branch on the outcome directly from this node. The agent can optionally speak while it runs (e.g. “Let me check that for you”).
Code Node: Runs JavaScript in Retell’s sandbox on entry — no external server needed. Best for data transformation, calculations, formatting, and simple read-only lookups via fetch(). Has access to dynamic variables and call metadata, and can store return values into dynamic variables. For anything needing secrets, authentication, or writes, use a custom function instead.
SMS Node: Sends an SMS during an active phone call, to the caller or another number. Requires an SMS-enabled or SMS-approved Retell number. Transitions once the SMS succeeds or fails. (Voice agents only.)
MCP Node: Calls a tool on an external MCP (Model Context Protocol) server on entry. Connect your server, select a tool, and optionally extract response values into dynamic variables for later nodes. The agent can speak while it runs.
Call Transfer Node: Transfers the call to another phone number or SIP URI. Enable Talk While Waiting to speak a message before starting the transfer. Supports cold, warm (with human detection, whisper/three-way messages), and agentic warm transfer. (Voice agents only.)
Transfer Agent Node: Hands the conversation to a different Retell agent mid-call. Near-instant (no new phone call), the destination agent inherits the full conversation history, and no separate phone number is needed. Preferred over call transfer when routing between AI agents (e.g. front-desk → booking, or language-based routing).
Press Digit Node: Navigates IVR menus by sending DTMF tones. The agent doesn’t speak — it listens to IVR prompts and infers which digit to press from your instruction, evaluating on each IVR utterance. Give clear guidance on which options to choose and which to avoid. (Voice agents only.)
End Node: Ends the call. Enable Speak During Execution with an instruction so the agent gives a closing message before hanging up; otherwise the call ends abruptly.
Logic Split Node: Evaluates conditions and branches the flow immediately on entry — the agent doesn’t speak. Useful for splitting on dynamic variables or conditions without stacking everything onto the previous node. Always has an else destination as a fallback so the flow never gets stuck.
Subflow: Packages a reusable subflow (a group of nodes) that appears as a single node on the main canvas. Subflows can be local to one agent or shared across agents in a library; they run their internal nodes and return control to the main flow via an exit node. Tools defined inside a subflow stay scoped to it.
Every node except the end node moves the call forward through edges. A node can have several kinds:
Regular edges each carry a transition condition — a prompt the LLM evaluates, or an equation over dynamic variables — plus a destination node.
Else edge is the fallback: it fires when no other condition matches, so the flow never gets stuck.
Always edge transitions unconditionally after the user responds.
Skip Response edge appears when the node’s Skip Response setting is on: the node transitions as soon as the agent finishes speaking, without waiting for a reply.
How conditions are written, and the exact order they’re evaluated in, is covered in transition conditions.
Click a node type in the left sidebar to add it to the canvas.
The node type list in the flow editor's left sidebar.
2
Configure the node
Select a node to open the Node settings tab on the right. If the panel is collapsed, select Open settings. Fill in the instruction inside the node and expand the settings sections you need.Function, Call Transfer, Agent Transfer, Code, MCP, and Subflow nodes can keep their configuration section and Node settings section open together. Opening one section does not close the other or change any settings. See the guide for each node type for details.
Select a node, then open Node settings.
3
Add transition conditions
Click the bottom part of the node to add edges, then write a transition condition for each.
4
Connect node
Click and hold the circle to start a line that connects the node to another node, and another node to this node.
You can copy nodes and paste them elsewhere on the canvas, into another flow, or even into a different browser tab. Retell uses your system clipboard, so a copy stays available across tabs and windows.
1
Select what to copy
Click a node, or click and drag to select multiple nodes and sticky notes.
2
Copy
Press Cmd/Ctrl + C. A Copied confirmation shows how many items were copied. Any selected sticky notes, and the tools attached to the selected nodes, are copied along with them.
3
Paste
Move your cursor to where you want the items to appear and press Cmd/Ctrl + V. A Pasted confirmation appears, and the nodes, notes, and tools are added at your cursor, automatically positioned to avoid overlapping existing nodes.
A few things to keep in mind:
If a copied tool already exists in the destination, it isn’t added again — the pasted node reuses the existing tool.
Component nodes can’t be pasted inside a component editor. If you try, Retell shows a Cannot Paste message.
Split a node when you need to reduce its context or control which instructions, tools, or settings apply to part of the task. If the agent struggles to follow instructions, first simplify the existing prompt and remove unnecessary tools. More nodes do not automatically improve reliability; see how node boundaries affect conversations.
How do I zoom the canvas in and out?
Use the scroll wheel on a mouse, or pinch on a touchpad.
Is there a limit on the number of nodes?
No, you can add as many nodes as you want.
Was this page helpful?
⌘I
{"docsConfig":{"theme":"almond","$schema":"https://mintlify.com/docs.json","name":"Retell AI","description":"Explore Retell AI docs to learn how to build, test, deploy, and optimize AI voice agents with APIs, integrations, conversation flows, and production-ready tools.","colors":{"primary":"#606A78","light":"#F5F5FA","dark":"#172131"},"logo":{"light":"https://mintcdn.com/retellai/-E9UettTBfBiCBBS/images/docs-light.png?fit=max\u0026auto=format\u0026n=-E9UettTBfBiCBBS\u0026q=85\u0026s=64eb26a2d3cc9a67ee3ea0bfe086dd14","dark":"https://mintcdn.com/retellai/-E9UettTBfBiCBBS/images/docs-dark.png?fit=max\u0026auto=format\u0026n=-E9UettTBfBiCBBS\u0026q=85\u0026s=08472a0c78599498b85d23348d7826f6"},"favicon":"https://mintcdn.com/retellai/TsBk7Stx4694-7p1/logo/favicon-light.ico?fit=max\u0026auto=format\u0026n=TsBk7Stx4694-7p1\u0026q=85\u0026s=4e90f4db5e89b5ec7fe249a4844c2d97","api":{"openapi":["openapi-final.yaml"],"playground":{"display":"interactive"},"mdx":{"auth":{"method":"bearer"},"server":"https://api.retellai.com"}},"navbar":{"links":[{"icon":"message-circle-question-mark","href":"https://docs.retellai.com/general/support","label":"Support"},{"icon":"chart-line","href":"https://status.retellai.com/","label":"Status"},{"icon":"book","href":"https://www.retellai.com/changelog","label":"Changelog"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.retellai.com"}},"footer":{"socials":{"x":"https://x.com/retellai","linkedin":"https://www.linkedin.com/company/98828489","github":"https://github.com/RetellAI","instagram":"https://www.instagram.com/retell_ai","youtube":"https://www.youtube.com/@retellai"}},"fonts":{"family":"Inter"},"icons":{"library":"lucide"},"styling":{"codeblocks":"dark","latex":true},"integrations":{"mixpanel":{"projectToken":"c8676d3561adb5eefc366aa2a66725bc"}},"contextual":{"options":["copy","view","chatgpt","claude","cursor"],"display":"header"},"interaction":{"drilldown":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"retellai","hasAudioNarration":false,"actualSubdomain":"retellai","customDomains":["docs.retellai.com"],"gitSource":{"type":"github","owner":"retellai","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":false,"issues":false,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aeea7a83e018a999ba67cd9","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"Guides","count":214},{"language":"default","tag":"API Reference","count":107},{"language":"default","tag":"Build","count":68},{"language":"default","tag":"Deploy","count":35},{"language":"default","tag":"Integrations","count":30},{"language":"default","tag":"Conversation flow agents","count":24},{"language":"default","tag":"Deprecations","count":22},{"language":"default","tag":"CRM","count":21},{"language":"default","tag":"Detailed Deprecation Guide","count":21},{"language":"default","tag":"Monitor","count":17}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"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":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","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":"workos-onboarding","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":"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":"support-platform-pylon-zendesk","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":"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":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instinct-self-updating-docs","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","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":"fork-pr-previews","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":"workos-sso-scim","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},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"@media (min-width: 1024px){#navbar .flex-1:has(>[data-slot=\"context-menu-trigger\"]),#navbar .flex-1:has(>a>.nav-logo){flex:none!important;width:15rem}#navbar .ustify-end:has(.nav-tabs),#navbar .justify-end:has(.nav-tabs){justify-content:space-between!important;margin-left:0!important}#navbar .flex:has(>.ustify-end),#navbar .flex:has(>.justify-end){flex:1!important}#navbar .nav-tabs{white-space:nowrap}}article{max-width:48rem!important}.max-w-prose{max-width:48rem!important}.max-w-xl{max-width:48rem!important}video.scroll-play{cursor:zoom-in}.video-zoom-overlay{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:4vmin;background:rgba(0, 0, 0, 0.8);backdrop-filter:blur(2px);cursor:zoom-out}.video-zoom-media{max-width:92vw;max-height:92vh;width:auto;height:auto;border-radius:12px;box-shadow:0 10px 40px rgba(0, 0, 0, 0.5);cursor:default}.video-zoom-close{position:fixed;top:16px;right:20px;display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:none;border-radius:999px;background:rgba(255, 255, 255, 0.15);color:#fff;font-size:24px;line-height:1;cursor:pointer}.video-zoom-close:hover{background:rgba(255, 255, 255, 0.3)}.ui-btn{background-color:#f4f5f7!important;color:#1f2328!important;border:1px solid #d0d5dd!important;border-bottom-width:2px!important;border-radius:6px!important;padding:0.1em 0.42em!important}html.dark .ui-btn,[data-theme=\"dark\"] .ui-btn{background-color:#21252d!important;color:#e6e8eb!important;border-color:#3a4048!important}img[src$=\"/images/icons/wss-badge.svg\"]{width:auto!important;height:15px!important}a[aria-current=\"page\"] img[src$=\"/images/icons/wss-badge.svg\"]{content:url(\"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2227%22 height=%2215%22 viewBox=%220 0 27 15%22 role=%22img%22 aria-label=%22WSS%22%3E %3Crect width=%2227%22 height=%2215%22 rx=%224%22 fill=%22%23F54A00%22/%3E %3Ctext x=%2213.5%22 y=%2210.7%22 text-anchor=%22middle%22 font-family=%22ui-sans-serif, system-ui, -apple-system, Segoe UI, Inter, Helvetica, Arial, sans-serif%22 font-size=%228.8%22 font-weight=%22700%22 fill=%22%23FFFFFF%22%3EWSS%3C/text%3E %3C/svg%3E\")}"}],"page":{"pagePath":"build/conversation-flow/node","slug":"/build/conversation-flow/node","pageMetadata":{"title":"Nodes and edges","description":"Nodes are the building blocks of Retell conversation flows. Learn every node type, how edges connect them, and how transition conditions advance calls.","keywords":["conversation flow nodes","node types","edges","transition conditions","add a node","voice agent builder"],"og:title":"Conversation flow nodes and edges — pick the right node type","og:description":"Every node type in a Retell conversation flow, what each one does, and how edges with transition conditions connect them into a working voice agent.","href":"/build/conversation-flow/node"},"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: \"Nodes are the building blocks of Retell conversation flows. Learn every node type, how edges connect them, and how transition conditions advance calls.\"\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`,code:`code`,em:`em`,li:`li`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Frame,Heading,OptimizedImage,Step,Steps,Tip}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`A conversation flow is a graph of `,_jsx(_components.strong,{children:`nodes`}),` connected by `,_jsx(_components.strong,{children:`edges`}),`. Each node handles one step of the call — talking with the user, running a tool, branching on data, transferring, or ending the call. Each edge carries a `,_jsx(_components.a,{href:`/build/conversation-flow/transition-condition`,children:`transition condition`}),` that decides when the agent moves to the next node.`]}),`\n`,_jsxs(_components.p,{children:[`Node boundaries let you limit context and control execution, but can restrict how the conversation proceeds. Read `,_jsx(_components.a,{href:`/build/conversation-flow/best-practices`,children:`conversation flow best practices`}),` before deciding how to divide your task.`]}),`\n`,_jsx(Heading,{level:`2`,id:`pick-a-node-type`,children:`Pick a node type`}),`\n`,_jsx(_components.p,{children:`Each node type plays a specific role. Pick the type that matches what the step needs to do.`}),`\n`,_jsx(Heading,{level:`3`,id:`dialogue-nodes`,children:`Dialogue nodes`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/build/conversation-flow/subagent-node`,children:_jsx(_components.strong,{children:`Subagent Node`})}),`: Dialogue where the agent can also call tools/functions based on context. Unlike a function node (which executes deterministically on entry), the LLM decides `,_jsx(_components.strong,{children:`whether and when`}),` to invoke each tool from what the user says. Supports multiple tools per node and stays active across multiple turns and tool calls before transitioning. Use a function node instead when a tool must always run at that step.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/build/conversation-flow/conversation-node`,children:_jsx(_components.strong,{children:`Conversation Node`})}),`: Pure dialogue with the user — no tool calling. The agent can hold a multi-turn conversation within a single node, so you don’t need a new node for every line. Supports two instruction modes: `,_jsx(_components.strong,{children:`Prompt`}),` (the LLM generates responses dynamically) and `,_jsx(_components.strong,{children:`Static Sentence`}),` (the agent says a fixed line first, then continues dynamically if the conversation stays in the node). Transitions are evaluated after each user response.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/build/conversation-flow/extract-dv-node`,children:_jsx(_components.strong,{children:`Extract DV Node`})}),`: Extracts information from the conversation so far and stores it as dynamic variables on entry — not for dialogue. The LLM analyzes the full conversation to capture each value you define by name, description, and type (Text, Number, Enum, or Boolean). Useful for structured data that downstream nodes or Post Call Extraction need.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`action-nodes`,children:`Action nodes`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/build/conversation-flow/function-node`,children:_jsx(_components.strong,{children:`Function Node`})}),`: Executes a single tool/function deterministically on node entry — not for dialogue. Choose `,_jsx(_components.strong,{children:`Wait for completion`}),` under `,_jsx(_components.strong,{children:`Execution mode`}),` when the next hop depends on the return value, then branch on the outcome directly from this node. The agent can optionally speak while it runs (e.g. “Let me check that for you”).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/build/conversation-flow/code-node`,children:_jsx(_components.strong,{children:`Code Node`})}),`: Runs JavaScript in Retell’s sandbox on entry — no external server needed. Best for data transformation, calculations, formatting, and simple read-only lookups via `,_jsx(_components.code,{children:`fetch()`}),`. Has access to dynamic variables and call metadata, and can store return values into dynamic variables. For anything needing secrets, authentication, or writes, use a custom function instead.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/build/conversation-flow/sms-node`,children:_jsx(_components.strong,{children:`SMS Node`})}),`: Sends an SMS during an active phone call, to the caller or another number. Requires an SMS-enabled or SMS-approved Retell number. Transitions once the SMS succeeds or fails. `,_jsx(_components.em,{children:`(Voice agents only.)`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/build/conversation-flow/mcp-node`,children:_jsx(_components.strong,{children:`MCP Node`})}),`: Calls a tool on an external MCP (Model Context Protocol) server on entry. Connect your server, select a tool, and optionally extract response values into dynamic variables for later nodes. The agent can speak while it runs.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`call-control-nodes`,children:`Call control nodes`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/build/conversation-flow/call-transfer-node`,children:_jsx(_components.strong,{children:`Call Transfer Node`})}),`: Transfers the call to another phone number or SIP URI. Enable `,_jsx(_components.strong,{children:`Talk While Waiting`}),` to speak a message before starting the transfer. Supports cold, warm (with human detection, whisper/three-way messages), and agentic warm transfer. `,_jsx(_components.em,{children:`(Voice agents only.)`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/build/conversation-flow/transfer-agent-node`,children:_jsx(_components.strong,{children:`Transfer Agent Node`})}),`: Hands the conversation to a different Retell agent mid-call. Near-instant (no new phone call), the destination agent inherits the full conversation history, and no separate phone number is needed. Preferred over call transfer when routing between AI agents (e.g. front-desk → booking, or language-based routing).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/build/conversation-flow/press-digit-node`,children:_jsx(_components.strong,{children:`Press Digit Node`})}),`: Navigates IVR menus by sending DTMF tones. The agent doesn’t speak — it listens to IVR prompts and infers which digit to press from your instruction, evaluating on each IVR utterance. Give clear guidance on which options to choose and which to avoid. `,_jsx(_components.em,{children:`(Voice agents only.)`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/build/conversation-flow/end-node`,children:_jsx(_components.strong,{children:`End Node`})}),`: Ends the call. Enable `,_jsx(_components.strong,{children:`Speak During Execution`}),` with an instruction so the agent gives a closing message before hanging up; otherwise the call ends abruptly.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`logic-and-structure`,children:`Logic and structure`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/build/conversation-flow/logic-split-node`,children:_jsx(_components.strong,{children:`Logic Split Node`})}),`: Evaluates conditions and branches the flow immediately on entry — the agent doesn’t speak. Useful for splitting on dynamic variables or conditions without stacking everything onto the previous node. Always has an else destination as a fallback so the flow never gets stuck.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/build/conversation-flow/components`,children:_jsx(_components.strong,{children:`Subflow`})}),`: Packages a reusable subflow (a group of nodes) that appears as a single node on the main canvas. Subflows can be local to one agent or shared across agents in a library; they run their internal nodes and return control to the main flow via an exit node. Tools defined inside a subflow stay scoped to it.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`how-nodes-connect`,children:`How nodes connect`}),`\n`,_jsx(_components.p,{children:`Every node except the end node moves the call forward through edges. A node can have several kinds:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Regular edges`}),` each carry a transition condition — a prompt the LLM evaluates, or an equation over dynamic variables — plus a destination node.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Else edge`}),` is the fallback: it fires when no other condition matches, so the flow never gets stuck.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Always edge`}),` transitions unconditionally after the user responds.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Skip Response edge`}),` appears when the node’s Skip Response setting is on: the node transitions as soon as the agent finishes speaking, without waiting for a reply.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`How conditions are written, and the exact order they’re evaluated in, is covered in `,_jsx(_components.a,{href:`/build/conversation-flow/transition-condition`,children:`transition conditions`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`add-a-node`,children:`Add a node`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Select node type`,children:[_jsx(_components.p,{children:`Click a node type in the left sidebar to add it to the canvas.`}),_jsx(Frame,{caption:`The node type list in the flow editor's left sidebar.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/retellai/zL2HeUqUnagEN9eK/images/cf/add-node.png?fit=max\u0026auto=format\u0026n=zL2HeUqUnagEN9eK\u0026q=85\u0026s=9f943a03432352f72166c04f780e19ba`,alt:`Left sidebar of the conversation flow editor showing the list of node types available to add to the canvas`,\"data-og-width\":`298`,width:`298`,\"data-og-height\":`722`,height:`722`,\"data-path\":`images/cf/add-node.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/retellai/zL2HeUqUnagEN9eK/images/cf/add-node.png?w=280\u0026fit=max\u0026auto=format\u0026n=zL2HeUqUnagEN9eK\u0026q=85\u0026s=5ea6487e7ef3b3f9a5fb2729db119670 280w, https://mintcdn.com/retellai/zL2HeUqUnagEN9eK/images/cf/add-node.png?w=560\u0026fit=max\u0026auto=format\u0026n=zL2HeUqUnagEN9eK\u0026q=85\u0026s=94a05a7f5a3408dc4f87ab08ea41aea4 560w, https://mintcdn.com/retellai/zL2HeUqUnagEN9eK/images/cf/add-node.png?w=840\u0026fit=max\u0026auto=format\u0026n=zL2HeUqUnagEN9eK\u0026q=85\u0026s=6abfdf24d9d5611899f5d36ccd2e456f 840w, https://mintcdn.com/retellai/zL2HeUqUnagEN9eK/images/cf/add-node.png?w=1100\u0026fit=max\u0026auto=format\u0026n=zL2HeUqUnagEN9eK\u0026q=85\u0026s=7e36e936467294272131b83262249314 1100w, https://mintcdn.com/retellai/zL2HeUqUnagEN9eK/images/cf/add-node.png?w=1650\u0026fit=max\u0026auto=format\u0026n=zL2HeUqUnagEN9eK\u0026q=85\u0026s=e88930d953bc8464a7711cab6b42368f 1650w, https://mintcdn.com/retellai/zL2HeUqUnagEN9eK/images/cf/add-node.png?w=2500\u0026fit=max\u0026auto=format\u0026n=zL2HeUqUnagEN9eK\u0026q=85\u0026s=f21457841d452dd9f6d07f86a709dbe6 2500w`})})]}),_jsxs(Step,{title:`Configure the node`,children:[_jsxs(_components.p,{children:[`Select a node to open the `,_jsx(_components.strong,{children:`Node settings`}),` tab on the right. If the panel is collapsed, select `,_jsx(_components.strong,{children:`Open settings`}),`. Fill in the instruction inside the node and expand the settings sections you need.`]}),_jsxs(_components.p,{children:[`Function, Call Transfer, Agent Transfer, Code, MCP, and Subflow nodes can keep their configuration section and `,_jsx(_components.strong,{children:`Node settings`}),` section open together. Opening one section does not close the other or change any settings. See the guide for each node type for details.`]}),_jsx(Frame,{caption:`Select a node, then open Node settings.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/retellai/PVVZlJBBrM_spnAP/images/agent-settings-node-overrides.png?fit=max\u0026auto=format\u0026n=PVVZlJBBrM_spnAP\u0026q=85\u0026s=c925648a9851da80a5ea3bb1528b481b`,alt:`Node settings tab highlighted in blue. Global Node, memory skipping, and all node-level overrides are off. Each override has a switch beside its label, including Transcription Mode and Boosted Keywords.`,style:{maxHeight:560},\"data-og-width\":`620`,width:`620`,\"data-og-height\":`795`,height:`795`,\"data-path\":`images/agent-settings-node-overrides.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/retellai/PVVZlJBBrM_spnAP/images/agent-settings-node-overrides.png?w=280\u0026fit=max\u0026auto=format\u0026n=PVVZlJBBrM_spnAP\u0026q=85\u0026s=6f3ee955e606fe641a9e67aefd850fc4 280w, https://mintcdn.com/retellai/PVVZlJBBrM_spnAP/images/agent-settings-node-overrides.png?w=560\u0026fit=max\u0026auto=format\u0026n=PVVZlJBBrM_spnAP\u0026q=85\u0026s=6551d075433048c9a57490f984a6c8d8 560w, https://mintcdn.com/retellai/PVVZlJBBrM_spnAP/images/agent-settings-node-overrides.png?w=840\u0026fit=max\u0026auto=format\u0026n=PVVZlJBBrM_spnAP\u0026q=85\u0026s=9e4e10f2482297ded24d26cd743dd07a 840w, https://mintcdn.com/retellai/PVVZlJBBrM_spnAP/images/agent-settings-node-overrides.png?w=1100\u0026fit=max\u0026auto=format\u0026n=PVVZlJBBrM_spnAP\u0026q=85\u0026s=73223d1042f640ab91aca55bbe2f05f1 1100w, https://mintcdn.com/retellai/PVVZlJBBrM_spnAP/images/agent-settings-node-overrides.png?w=1650\u0026fit=max\u0026auto=format\u0026n=PVVZlJBBrM_spnAP\u0026q=85\u0026s=d5206ece183928cea1195315e75d9fba 1650w, https://mintcdn.com/retellai/PVVZlJBBrM_spnAP/images/agent-settings-node-overrides.png?w=2500\u0026fit=max\u0026auto=format\u0026n=PVVZlJBBrM_spnAP\u0026q=85\u0026s=e264af482b4eb09505b82380e9d791c1 2500w`})})]}),_jsx(Step,{title:`Add transition conditions`,children:_jsxs(_components.p,{children:[`Click the bottom part of the node to add edges, then write a `,_jsx(_components.a,{href:`/build/conversation-flow/transition-condition`,children:`transition condition`}),` for each.`]})}),_jsxs(Step,{title:`Connect node`,children:[_jsx(_components.p,{children:`Click and hold the circle to start a line that connects the node to another node, and another node to this node.`}),_jsx(Frame,{caption:`Drag from the connector circle to link two nodes.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/retellai/YiYvhov2NLXI5cg3/images/cf/connect-node.png?fit=max\u0026auto=format\u0026n=YiYvhov2NLXI5cg3\u0026q=85\u0026s=fdd6ce5feda5eeba19878c61fe496bb0`,alt:`Dragging from a node's connector circle to another node to create an edge in the conversation flow editor`,\"data-og-width\":`914`,width:`914`,\"data-og-height\":`874`,height:`874`,\"data-path\":`images/cf/connect-node.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/retellai/YiYvhov2NLXI5cg3/images/cf/connect-node.png?w=280\u0026fit=max\u0026auto=format\u0026n=YiYvhov2NLXI5cg3\u0026q=85\u0026s=74d1173d0639d3d134beb95db217dda5 280w, https://mintcdn.com/retellai/YiYvhov2NLXI5cg3/images/cf/connect-node.png?w=560\u0026fit=max\u0026auto=format\u0026n=YiYvhov2NLXI5cg3\u0026q=85\u0026s=43983d51d38148669bec5567ff95f70a 560w, https://mintcdn.com/retellai/YiYvhov2NLXI5cg3/images/cf/connect-node.png?w=840\u0026fit=max\u0026auto=format\u0026n=YiYvhov2NLXI5cg3\u0026q=85\u0026s=bfcbb2bbff0edf15bb6e92b6c2103e9d 840w, https://mintcdn.com/retellai/YiYvhov2NLXI5cg3/images/cf/connect-node.png?w=1100\u0026fit=max\u0026auto=format\u0026n=YiYvhov2NLXI5cg3\u0026q=85\u0026s=32d0b10debb70a46361821c96e77207d 1100w, https://mintcdn.com/retellai/YiYvhov2NLXI5cg3/images/cf/connect-node.png?w=1650\u0026fit=max\u0026auto=format\u0026n=YiYvhov2NLXI5cg3\u0026q=85\u0026s=a1ea7effb6ee8645169a02dfba83838a 1650w, https://mintcdn.com/retellai/YiYvhov2NLXI5cg3/images/cf/connect-node.png?w=2500\u0026fit=max\u0026auto=format\u0026n=YiYvhov2NLXI5cg3\u0026q=85\u0026s=b3cfa059f1a4b382b9ff46b184869b24 2500w`})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`organize-nodes`,children:`Organize nodes`}),`\n`,_jsxs(_components.p,{children:[`After adding many nodes, the canvas can get cluttered. Use the `,_jsx(_components.strong,{children:`Organize`}),` button to arrange them automatically.`]}),`\n`,_jsx(Frame,{caption:`The Organize button rearranges nodes automatically.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/retellai/AJT6JQMM1II9WOl-/images/cf/organize-node.png?fit=max\u0026auto=format\u0026n=AJT6JQMM1II9WOl-\u0026q=85\u0026s=d55c57293e75058c2336a9eea99c43d7`,alt:`Organize button in the conversation flow editor that automatically arranges nodes on the canvas`,\"data-og-width\":`2354`,width:`2354`,\"data-og-height\":`1674`,height:`1674`,\"data-path\":`images/cf/organize-node.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/retellai/AJT6JQMM1II9WOl-/images/cf/organize-node.png?w=280\u0026fit=max\u0026auto=format\u0026n=AJT6JQMM1II9WOl-\u0026q=85\u0026s=ea25f40d194697fca082786fbd069c7d 280w, https://mintcdn.com/retellai/AJT6JQMM1II9WOl-/images/cf/organize-node.png?w=560\u0026fit=max\u0026auto=format\u0026n=AJT6JQMM1II9WOl-\u0026q=85\u0026s=0ce5d983da814926c3461b9f0957fe05 560w, https://mintcdn.com/retellai/AJT6JQMM1II9WOl-/images/cf/organize-node.png?w=840\u0026fit=max\u0026auto=format\u0026n=AJT6JQMM1II9WOl-\u0026q=85\u0026s=998503515aae4a5aabaf7a960856138d 840w, https://mintcdn.com/retellai/AJT6JQMM1II9WOl-/images/cf/organize-node.png?w=1100\u0026fit=max\u0026auto=format\u0026n=AJT6JQMM1II9WOl-\u0026q=85\u0026s=9ed2aa924349ccfb9080f6970be8cc80 1100w, https://mintcdn.com/retellai/AJT6JQMM1II9WOl-/images/cf/organize-node.png?w=1650\u0026fit=max\u0026auto=format\u0026n=AJT6JQMM1II9WOl-\u0026q=85\u0026s=dbbdbf2d00cfbc4651e18ac9056d7c7a 1650w, https://mintcdn.com/retellai/AJT6JQMM1II9WOl-/images/cf/organize-node.png?w=2500\u0026fit=max\u0026auto=format\u0026n=AJT6JQMM1II9WOl-\u0026q=85\u0026s=69855844b3327bf8beddce11eb6aec02 2500w`})}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Name your nodes. Call transcripts in the history tab show transitions by node name, so descriptive names make past calls much easier to debug.`})}),`\n`,_jsx(Heading,{level:`2`,id:`copy-and-paste-nodes`,children:`Copy and paste nodes`}),`\n`,_jsx(_components.p,{children:`You can copy nodes and paste them elsewhere on the canvas, into another flow, or even into a different browser tab. Retell uses your system clipboard, so a copy stays available across tabs and windows.`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Select what to copy`,children:_jsx(_components.p,{children:`Click a node, or click and drag to select multiple nodes and sticky notes.`})}),_jsx(Step,{title:`Copy`,children:_jsxs(_components.p,{children:[`Press `,_jsx(_components.code,{children:`Cmd/Ctrl + C`}),`. A `,_jsx(_components.strong,{children:`Copied`}),` confirmation shows how many items were copied. Any selected sticky notes, and the tools attached to the selected nodes, are copied along with them.`]})}),_jsx(Step,{title:`Paste`,children:_jsxs(_components.p,{children:[`Move your cursor to where you want the items to appear and press `,_jsx(_components.code,{children:`Cmd/Ctrl + V`}),`. A `,_jsx(_components.strong,{children:`Pasted`}),` confirmation appears, and the nodes, notes, and tools are added at your cursor, automatically positioned to avoid overlapping existing nodes.`]})})]}),`\n`,_jsx(_components.p,{children:`A few things to keep in mind:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`If a copied tool already exists in the destination, it isn’t added again — the pasted node reuses the existing tool.`}),`\n`,_jsxs(_components.li,{children:[`Component nodes can’t be pasted inside a component editor. If you try, Retell shows a `,_jsx(_components.strong,{children:`Cannot Paste`}),` message.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`faq`,children:`FAQ`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`When should I break down a node?`,id:`when-should-i-break-down-a-node`,children:_jsxs(_components.p,{children:[`Split a node when you need to reduce its context or control which instructions, tools, or settings apply to part of the task. If the agent struggles to follow instructions, first simplify the existing prompt and remove unnecessary tools. More nodes do not automatically improve reliability; see `,_jsx(_components.a,{href:`/build/conversation-flow/best-practices#beware-of-rigid-conversation-flows`,children:`how node boundaries affect conversations`}),`.`]})}),_jsx(Accordion,{title:`How do I zoom the canvas in and out?`,id:`how-do-i-zoom-the-canvas-in-and-out`,children:_jsx(_components.p,{children:`Use the scroll wheel on a mouse, or pinch on a touchpad.`})}),_jsx(Accordion,{title:`Is there a limit on the number of nodes?`,id:`is-there-a-limit-on-the-number-of-nodes`,children:_jsx(_components.p,{children:`No, you can add as many nodes as you want.`})})]})]})}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":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Nodes and edges","description":"Nodes are the building blocks of Retell conversation flows. Learn every node type, how edges connect them, and how transition conditions advance calls.","keywords":["conversation flow nodes","node types","edges","transition conditions","add a node","voice agent builder"],"og:title":"Conversation flow nodes and edges — pick the right node type","og:description":"Every node type in a Retell conversation flow, what each one does, and how edges with transition conditions connect them into a working voice agent.","href":"/build/conversation-flow/node"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Pick a node type","slug":"pick-a-node-type","depth":2,"children":[{"title":"Dialogue nodes","slug":"dialogue-nodes","depth":3,"children":[]},{"title":"Action nodes","slug":"action-nodes","depth":3,"children":[]},{"title":"Call control nodes","slug":"call-control-nodes","depth":3,"children":[]},{"title":"Logic and structure","slug":"logic-and-structure","depth":3,"children":[]}]},{"title":"How nodes connect","slug":"how-nodes-connect","depth":2,"children":[]},{"title":"Add a node","slug":"add-a-node","depth":2,"children":[]},{"title":"Organize nodes","slug":"organize-nodes","depth":2,"children":[]},{"title":"Copy and paste nodes","slug":"copy-and-paste-nodes","depth":2,"children":[]},{"title":"FAQ","slug":"faq","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/retellai/e3fe5c9b64f9e274/scroll-play-videos.js"],"subdomain":"retellai","siteName":"Retell AI","title":"Conversation flow nodes and edges — pick the right node type","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-27T22:11:51.940Z","originalFileLocation":"build/conversation-flow/node.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Nodes are the building blocks of Retell conversation flows. Learn every node type, how edges connect them, and how transition conditions advance calls.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Retell AI\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/retellai/aRxZhiMifgkRJF_R/_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/retellai/aRxZhiMifgkRJF_R/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/retellai/aRxZhiMifgkRJF_R/_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/retellai/aRxZhiMifgkRJF_R/_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/retellai/aRxZhiMifgkRJF_R/_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/retellai/aRxZhiMifgkRJF_R/_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/retellai/aRxZhiMifgkRJF_R/_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/retellai/aRxZhiMifgkRJF_R/_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/retellai/aRxZhiMifgkRJF_R/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Conversation flow nodes and edges — pick the right node type\">\u003cmeta data-mint-head property=\"og:description\" content=\"Every node type in a Retell conversation flow, what each one does, and how edges with transition conditions connect them into a working voice agent.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Retell AI\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.retellai.com/build/conversation-flow/node\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://retellai.mintlify.site/_mintlify/api/og/v2?division=Nodes\u0026amp;title=Nodes+and+edges\u0026amp;description=Nodes+are+the+building+blocks+of+Retell+conversation+flows.+Learn+every+node+type%2C+how+edges+connect+them%2C+and+how+transition+conditions+advance+calls.\u0026amp;theme=35696226f7b423b96c359dbf\u0026amp;signature=a47470b477c9eb2b45be2485a938a1ad44abc0bf9e429ba6968f5337cc944330\">\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=\"Conversation flow nodes and edges — pick the right node type\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Every node type in a Retell conversation flow, what each one does, and how edges with transition conditions connect them into a working voice agent.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://retellai.mintlify.site/_mintlify/api/og/v2?division=Nodes\u0026amp;title=Nodes+and+edges\u0026amp;description=Nodes+are+the+building+blocks+of+Retell+conversation+flows.+Learn+every+node+type%2C+how+edges+connect+them%2C+and+how+transition+conditions+advance+calls.\u0026amp;theme=35696226f7b423b96c359dbf\u0026amp;signature=a47470b477c9eb2b45be2485a938a1ad44abc0bf9e429ba6968f5337cc944330\">\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/retellai/aRxZhiMifgkRJF_R/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Retell AI\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#606A78\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.retellai.com/build/conversation-flow/node\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/build/conversation-flow/node.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.retellai.com/#organization\",\"name\":\"Retell AI\",\"url\":\"https://docs.retellai.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/retellai/-E9UettTBfBiCBBS/images/docs-light.png?fit=max\u0026auto=format\u0026n=-E9UettTBfBiCBBS\u0026q=85\u0026s=64eb26a2d3cc9a67ee3ea0bfe086dd14\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.retellai.com#website\",\"name\":\"Retell AI\",\"url\":\"https://docs.retellai.com\",\"publisher\":{\"@id\":\"https://docs.retellai.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.retellai.com/build/conversation-flow/node#webpage\",\"url\":\"https://docs.retellai.com/build/conversation-flow/node\",\"name\":\"Nodes and edges\",\"description\":\"Nodes are the building blocks of Retell conversation flows. Learn every node type, how edges connect them, and how transition conditions advance calls.\",\"dateModified\":\"2026-10-27T22:11:51.940Z\",\"isPartOf\":{\"@id\":\"https://docs.retellai.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.retellai.com/build/conversation-flow/node#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.retellai.com/build/conversation-flow/node#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Build\",\"item\":\"https://docs.retellai.com/build/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Conversation flow agents\",\"item\":\"https://docs.retellai.com/build/conversation-flow/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Nodes and edges\",\"item\":\"https://docs.retellai.com/build/conversation-flow/node\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.retellai.com/build/conversation-flow/node#article\",\"headline\":\"Nodes and edges\",\"name\":\"Nodes and edges\",\"description\":\"Nodes are the building blocks of Retell conversation flows. Learn every node type, how edges connect them, and how transition conditions advance calls.\",\"url\":\"https://docs.retellai.com/build/conversation-flow/node\",\"mainEntityOfPage\":{\"@id\":\"https://docs.retellai.com/build/conversation-flow/node#webpage\"},\"dateModified\":\"2026-10-27T22:11:51.940Z\",\"keywords\":\"conversation flow nodes, node types, edges, transition conditions, add a node, voice agent builder\",\"publisher\":{\"@id\":\"https://docs.retellai.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.retellai.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Retell AI\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Retell AI","nav":{"global":null,"tabs":[{"tab":"Guides","icon":"book","groups":[{"group":" ","pages":[{"title":"Introduction to Retell","href":"/general/introduction"},{"title":"Build your first phone agent in 15 minutes","href":"/get-started/quick-start"}]},{"group":"Conductor (AI Assistant)","icon":"https://mintlify.s3.us-west-1.amazonaws.com/retellai/images/conductor/conductor-icon.svg","pages":[{"title":"Retell AI Conductor overview","sidebarTitle":"Overview","href":"/conductor/overview"},{"group":"Functionality","pages":[{"title":"Build and refine agents","href":"/conductor/build-and-refine"},{"title":"Test and improve agents","href":"/conductor/test-and-improve"},{"title":"Inspect knowledge bases","href":"/conductor/knowledge-base"},{"title":"Review calls and chats","href":"/conductor/call-and-chat-history"},{"title":"Build analytics dashboards","href":"/conductor/analytics-dashboards"},{"title":"Review QA results","href":"/conductor/ai-qa"},{"title":"Review contacts","href":"/conductor/contacts"}]},{"title":"Pricing","href":"/conductor/usage-and-billing"}]},{"group":"Build","icon":"bot","pages":[{"title":"Build a Retell agent: configuration overview","href":"/build/overview"},{"title":"Single prompt vs. conversation flow","href":"/build/choose-agent-type"},{"title":"General prompting principles","href":"/build/prompt-engineering-guide"},{"group":"Single prompt agents","pages":[{"title":"Single prompt best practices","href":"/build/single-multi-prompt/write-single-prompt"},{"title":"Configure basic settings","href":"/build/single-multi-prompt/configure-basic-settings"},{"group":"Functions","pages":[{"title":"Function calling for single and multi-prompt agents","href":"/build/single-multi-prompt/function-calling"},{"title":"End call","href":"/build/single-multi-prompt/end-call"},{"title":"Transfer call tool (single \u0026 multi-prompt agents)","href":"/build/single-multi-prompt/transfer-call"},{"title":"Send SMS","href":"/build/single-multi-prompt/send-sms"},{"title":"Press digit (IVR navigation)","href":"/build/single-multi-prompt/press-digit"},{"title":"Integrate any system with custom function","href":"/build/single-multi-prompt/custom-function"},{"title":"Integration tools","href":"/build/single-multi-prompt/integration-tools"},{"title":"Code tool: run JavaScript in a Retell agent","href":"/build/single-multi-prompt/code-tool"},{"title":"Extract Dynamic Variables","href":"/build/single-multi-prompt/extract-dv"},{"title":"Agent Transfer tool: hand a call to another AI agent","href":"/build/single-multi-prompt/transfer-agent"},{"title":"MCP tools for single and multi-prompt agents","href":"/build/single-multi-prompt/mcp"}]}]},{"group":"Conversation flow agents","pages":[{"title":"Conversation flow agents: structured voice AI call control","href":"/build/conversation-flow/overview"},{"title":"Conversation flow best practices","href":"/build/conversation-flow/best-practices"},{"title":"Configure global settings","description":"Find agent-wide voice, model, knowledge, speech, call, security, and webhook settings in the Retell conversation flow editor.","href":"/build/conversation-flow/global-setting"},{"group":"Nodes","pages":[{"title":"Nodes and edges","href":"/build/conversation-flow/node"},{"title":"Subagent node","description":"Subagent nodes let a Retell conversation flow combine dialogue with on-the-fly tool calls — the LLM decides whether and when to use each attached tool.","href":"/build/conversation-flow/subagent-node"},{"title":"Conversation node","href":"/build/conversation-flow/conversation-node"},{"group":"Function Node","pages":[{"title":"Call a function from a conversation flow node","href":"/build/conversation-flow/function-node"},{"title":"Custom function in conversation flow","href":"/build/conversation-flow/custom-function"},{"title":"Integration tools in conversation flow","href":"/build/conversation-flow/integration-tools"}]},{"title":"Code node: run JavaScript in a conversation flow","href":"/build/conversation-flow/code-node"},{"title":"Call transfer node in conversation flow","href":"/build/conversation-flow/call-transfer-node"},{"title":"Press Digit Node","href":"/build/conversation-flow/press-digit-node"},{"title":"End node","href":"/build/conversation-flow/end-node"},{"title":"Logic Split Node","href":"/build/conversation-flow/logic-split-node"},{"title":"SMS Node","href":"/build/conversation-flow/sms-node"},{"title":"Extract Dynamic Variable Node","href":"/build/conversation-flow/extract-dv-node"},{"title":"Agent Transfer Node","href":"/build/conversation-flow/transfer-agent-node"},{"title":"MCP node in conversation flow","href":"/build/conversation-flow/mcp-node"}]},{"title":"Transition conditions","href":"/build/conversation-flow/transition-condition"},{"title":"Reusable subflows for conversation flow agents","href":"/build/conversation-flow/components"},{"title":"Flex Mode: dynamic conversation flow execution","href":"/build/conversation-flow/flex-mode"},{"group":"Advanced features","pages":[{"title":"Global Node","href":"/build/conversation-flow/global-node"},{"title":"Finetune Examples","href":"/build/conversation-flow/finetune-examples"}]},{"title":"Debug guide","href":"/build/conversation-flow/debug-guide"}]},{"group":"Multi-prompt agents (legacy)","pages":[{"title":"Multi-prompt agents","href":"/build/single-multi-prompt/write-multi-prompt"}]},{"title":"Create chat agent","href":"/build/create-chat-agent"},{"title":"Agent workflow","href":"/agent/agent-workflow"},{"title":"Set language for your agent","href":"/agent/language"},{"title":"Configure a multilingual agent","href":"/agent/multilingual"},{"title":"Supported languages by provider","href":"/build/language-support"},{"group":"Understand user speech better","pages":[{"title":"Speech recognition providers","href":"/build/asr-providers"},{"title":"Transcription modes","href":"/build/transcription-mode"},{"title":"Handle background speech \u0026 noise","href":"/build/handle-background-noise"}]},{"group":"Generate better responses from LLM","pages":[{"title":"Agent Handbook","href":"/build/agent-handbook"},{"title":"Conversational Mode","href":"/build/conversational-mode"},{"title":"Pronunciation examples","href":"/build/prompt-situation-guide"},{"title":"LLM settings","href":"/build/llm-options"},{"title":"GPT Live voice model","href":"/build/gpt-live"}]},{"group":"Customize the synthesized speech","pages":[{"title":"Platform voices","href":"/build/platform-voices"},{"title":"Choose a custom provider","href":"/build/voice"},{"title":"Expressive Mode: add emotion and emphasis to agent speech","href":"/build/expressive-mode"},{"title":"Add custom pronunciation","href":"/build/add-pronunciation"},{"title":"Make the agent stay silent","href":"/build/no-response"},{"title":"Speech controls","href":"/build/speech-controls"},{"title":"Set up TTS fallback","href":"/build/tts-fallback"}]},{"group":"Integrate telephony features","pages":[{"title":"Handle voicemail and IVR","href":"/build/handle-voicemail"},{"title":"Capture DTMF input from user","href":"/build/user-dtmf"},{"title":"Set \u0026 parse custom SIP headers","href":"/build/telephony/sip-headers"}]},{"group":"Provide context to the agent","pages":[{"title":"Knowledge base setup and retrieval tuning","href":"/build/knowledge-base"},{"title":"Dynamic variables","href":"/build/dynamic-variables"}]},{"title":"Guardrails","href":"/build/guardrails"},{"title":"Do-not-call requests","href":"/build/do-not-call"}]},{"group":"Test","icon":"flask-conical","pages":[{"title":"Testing overview","href":"/test/test-overview"},{"group":"LLM Playground","pages":[{"title":"Manually test your agent","href":"/test/llm-playground"},{"title":"Debug your agent response","href":"/test/llm-playground-debug"}]},{"group":"LLM Simulation Testing","pages":[{"title":"Automatically test your agent","href":"/test/llm-simulation-testing"},{"title":"Batch test your agent","href":"/test/batch-test-simulation"}]},{"group":"Audio Testing","pages":[{"title":"Web call testing","href":"/test/test-web"},{"title":"Phone call testing","href":"/test/test-phone"}]},{"title":"Testing with Conductor","icon":"https://mintlify.s3.us-west-1.amazonaws.com/retellai/images/conductor/conductor-icon.svg","href":"/test/testing-with-conductor"},{"title":"Testing pricing","href":"/test/testing-pricing"}]},{"group":"Deploy","icon":"phone","pages":[{"title":"Purchase phone number","href":"/deploy/purchase-number"},{"title":"A/B Testing","href":"/deploy/ab-testing"},{"group":"Connect to custom telephony providers via SIP","pages":[{"title":"Connect Retell voice agents to custom telephony","href":"/deploy/custom-telephony"},{"group":"Connect via SIP trunking","pages":[{"title":"Connect a Twilio number to Retell with elastic SIP trunking","sidebarTitle":"Twilio","href":"/deploy/twilio"},{"title":"Telnyx","href":"/deploy/telnyx"},{"title":"Vonage","href":"/deploy/vonage"}]},{"group":"Connect to CCaaS","pages":[{"title":"Avaya","href":"/deploy/avaya"},{"title":"Connect Genesys Cloud to Retell","href":"/deploy/genesys"},{"title":"Connect Five9 to Retell","href":"/deploy/five9"},{"title":"Amazon Connect","href":"/deploy/amazon-connect"}]}]},{"group":"Make \u0026 receive phone calls","pages":[{"title":"Make outbound calls","href":"/deploy/outbound-call"},{"group":"Inbound calls","pages":[{"title":"Receive calls","href":"/deploy/inbound-call"},{"title":"Inbound call \u0026 SMS webhook","href":"/features/inbound-call-webhook"}]},{"title":"International calling","href":"/deploy/international-call"}]},{"title":"Implement chat with create chat completion","href":"/deploy/create-chat-completion"},{"title":"Website widget","href":"/deploy/chat-widget"},{"group":"Send \u0026 receive SMS","pages":[{"title":"Enable SMS","href":"/deploy/enable-sms"},{"title":"SMS campaign application","href":"/deploy/sms-campaign-application"}]},{"title":"Agent versions and tags","href":"/agent/version"},{"title":"Compare agent versions","href":"/agent/version-comparison"},{"title":"Create and schedule batch calls","href":"/deploy/make-batch-call"},{"group":"Dialer","pages":[{"title":"Outbound call campaigns","sidebarTitle":"Overview","href":"/dialer/overview"},{"title":"Choose contacts","href":"/dialer/contacts"},{"title":"Compliance checks","href":"/dialer/compliance-checks"},{"title":"Build a sequence","href":"/dialer/sequences"},{"title":"Caller ID and pacing","href":"/dialer/phone-numbers"}]},{"group":"Increase call pickup rate","pages":[{"title":"Spam likely overview","href":"/build/telephony/call_efficiency_overview"},{"title":"Add a business profile","href":"/build/telephony/business-profile"},{"title":"Apply for verified phone number","href":"/build/telephony/verified-phone"},{"title":"Apply for branded call","href":"/build/telephony/branded-call"},{"title":"Handle application rejection","href":"/build/telephony/branded-call-rejection"},{"title":"Stop caller ID service","href":"/build/telephony/delete-service"}]},{"title":"Make a web call","href":"/deploy/web-call"},{"title":"Web calls in native apps","href":"/deploy/native-web-call"},{"title":"Understand concurrency \u0026 limits","href":"/deploy/concurrency"}]},{"group":"Data","icon":"database","pages":[{"title":"Call \u0026 chat history","href":"/features/session-history"},{"title":"Contacts","href":"/features/contacts"},{"title":"Contact memory","href":"/features/contact-memory"}]},{"group":"Monitor","icon":"square-activity","pages":[{"title":"Monitor live calls","href":"/features/live-monitoring"},{"title":"Analytics dashboard","href":"/features/analytics-dashboard"},{"title":"Alert rules for call and chat metrics","href":"/features/alerting-overview"},{"group":"Register \u0026 handle webhooks","pages":[{"group":"Call Event Webhook","pages":[{"title":"Retell webhooks overview","href":"/features/webhook-overview"},{"title":"Register and set up a Retell webhook","href":"/features/register-webhook"}]},{"title":"Secure the webhook","href":"/features/secure-webhook"}]},{"group":"Post Call Extraction","pages":[{"title":"Post Call Extraction overview and categories","href":"/features/post-call-analysis-overview"},{"title":"Define the information you want to extract","href":"/features/post-call-analysis-create"},{"title":"Consume the analysis data","href":"/features/post-call-analysis-consumption"},{"title":"Rerun Post Call/Chat Extraction","href":"/features/rerun-call-analysis"}]},{"group":"AI Quality Assurance","pages":[{"title":"Automatically evaluate call quality with AI QA","sidebarTitle":"AI Quality Assurance","href":"/ai-qa/overview"},{"group":"Create QA","pages":[{"title":"Access AI QA","href":"/ai-qa/get-started"},{"title":"Define a QA cohort","href":"/ai-qa/create-cohort"},{"title":"Define resolution criteria","href":"/ai-qa/define-resolution-criteria"}]},{"title":"View QA results","href":"/ai-qa/view-qa-results"},{"title":"AI QA metrics","href":"/ai-qa/terminologies"},{"title":"Address metric issues","href":"/ai-qa/address-metric-issues"}]}]},{"group":"Reliability \u0026 Debugging","icon":"bug","pages":[{"title":"Reliability Overview","href":"/reliability/reliability-overview"},{"group":"Latency","pages":[{"title":"Check estimated latency","href":"/reliability/check-estimated-latency"},{"title":"Check actual latency","href":"/reliability/check-actual-latency"},{"title":"Troubleshoot high latency","href":"/reliability/troubleshoot-latency"}]},{"group":"Fix agent behaviors","pages":[{"title":"Transcription accuracy","href":"/reliability/wrong-transcript"},{"title":"Debug wrong response","href":"/reliability/wrong-response"}]},{"group":"Debug phone call issues","pages":[{"title":"Debug call transfer failure","href":"/reliability/call-performance"},{"title":"Debug call disconnection","href":"/reliability/debug-call-disconnect"},{"title":"Debug outbound connection issues","href":"/reliability/debug-outbound-call"},{"title":"Debug SIP calls using PCAP file","href":"/reliability/debug-calls-pcap"}]},{"title":"Agent paused or banned","href":"/reliability/agent-paused"},{"title":"Prevent abuse","href":"/reliability/prevent-abuse"},{"title":"Fraud Protection","href":"/reliability/fraud-protection"}]},{"group":"Accounts and Workspace","icon":"circle-user-round","pages":[{"title":"Create and manage Retell workspaces","href":"/accounts/workspace"},{"title":"Manage your Retell AI account","href":"/accounts/account"},{"title":"Use your business email","href":"/accounts/business-email"},{"title":"Access Control","href":"/accounts/access-control"},{"title":"KYC Verification","href":"/accounts/kyc"},{"group":"Billing","pages":[{"title":"Retell AI billing: credits, auto recharge, and invoices","href":"/accounts/billing"},{"title":"Exceptions to Our Per-Minute Pricing","href":"/accounts/billing-exceptions"},{"title":"Add payment methods","href":"/accounts/add-payment"},{"title":"Handle failed payments","href":"/accounts/fail-payment"}]},{"group":"Keys","pages":[{"title":"API Key Overview","href":"/accounts/api-keys-overview"},{"title":"Manage API keys and permission scopes","href":"/accounts/manage-api-keys"},{"title":"Public keys","href":"/accounts/public-keys"}]},{"group":"Privacy and Compliance","pages":[{"title":"Data Storage Settings","href":"/accounts/privacy-disable"},{"title":"Data Retention Policy","href":"/accounts/data-retention"},{"title":"Opt in to secure URL","href":"/accounts/signed-secure-url"},{"title":"Security and compliance","href":"/general/compliance"}]}]},{"group":"Integrations","icon":"unplug","pages":[{"title":"Connect CRMs, calendars, and knowledge sources to Retell","sidebarTitle":"Integrations overview","href":"/integrations/overview"},{"group":"CRM","pages":[{"title":"CRM integrations","href":"/integrations/crm-overview"},{"title":"CRM data mappings","href":"/integrations/crm-mappings"},{"group":"HubSpot","pages":[{"title":"Connect HubSpot","sidebarTitle":"Connect","href":"/integrations/hubspot"},{"title":"HubSpot contact sync","sidebarTitle":"Contact sync","href":"/integrations/hubspot-contact-sync"},{"title":"HubSpot agent functions","sidebarTitle":"Agent functions","href":"/integrations/hubspot-functions"}]},{"group":"Salesforce","pages":[{"title":"Connect Salesforce","sidebarTitle":"Connect","href":"/integrations/salesforce"},{"title":"Salesforce contact sync","sidebarTitle":"Contact sync","href":"/integrations/salesforce-contact-sync"},{"title":"Salesforce agent functions","sidebarTitle":"Agent functions","href":"/integrations/salesforce-functions"}]},{"group":"Microsoft Dynamics 365","pages":[{"title":"Connect Dynamics 365","sidebarTitle":"Connect","href":"/integrations/microsoft-dynamics"},{"title":"Dynamics 365 contact sync","sidebarTitle":"Contact sync","href":"/integrations/microsoft-dynamics-contact-sync"},{"title":"Dynamics 365 agent functions","sidebarTitle":"Agent functions","href":"/integrations/microsoft-dynamics-functions"}]},{"group":"GoHighLevel","pages":[{"title":"Connect GoHighLevel","sidebarTitle":"Connect","href":"/integrations/gohighlevel"},{"title":"GoHighLevel contact sync","sidebarTitle":"Contact sync","href":"/integrations/gohighlevel-contact-sync"},{"title":"GoHighLevel agent functions","sidebarTitle":"Agent functions","href":"/integrations/gohighlevel-functions"}]},{"group":"Zoho CRM","pages":[{"title":"Connect Zoho CRM","sidebarTitle":"Connect","href":"/integrations/zoho"},{"title":"Zoho contact sync","sidebarTitle":"Contact sync","href":"/integrations/zoho-contact-sync"},{"title":"Zoho agent functions","sidebarTitle":"Agent functions","href":"/integrations/zoho-functions"}]}]},{"group":"Helpdesk","pages":[{"group":"Zendesk","pages":[{"title":"Connect Zendesk","sidebarTitle":"Connect","href":"/integrations/zendesk"},{"title":"Zendesk agent functions","sidebarTitle":"Agent functions","href":"/integrations/zendesk-functions"}]}]},{"group":"Knowledge Base","pages":[{"group":"Google Drive","pages":[{"title":"Connect Google Drive","sidebarTitle":"Connect","href":"/integrations/google-drive"},{"title":"Google Drive knowledge base sync","sidebarTitle":"Knowledge base sync","href":"/integrations/google-drive-knowledge-base"}]},{"group":"Microsoft OneDrive","pages":[{"title":"Connect OneDrive","sidebarTitle":"Connect","href":"/integrations/microsoft-onedrive"},{"title":"OneDrive knowledge base sync","sidebarTitle":"Knowledge base sync","href":"/integrations/microsoft-onedrive-knowledge-base"}]},{"group":"Notion","pages":[{"title":"Connect Notion","sidebarTitle":"Connect","href":"/integrations/notion"},{"title":"Notion knowledge base sync","sidebarTitle":"Knowledge base sync","href":"/integrations/notion-knowledge-base"}]}]},{"group":"Calendar","pages":[{"group":"GoHighLevel","pages":[{"title":"GoHighLevel agent functions","sidebarTitle":"Agent functions","href":"/integrations/gohighlevel-functions"}]},{"group":"Calendly","pages":[{"title":"Connect Calendly","sidebarTitle":"Connect","href":"/integrations/calendly"},{"title":"Calendly agent functions","sidebarTitle":"Agent functions","href":"/integrations/calendly-functions"}]},{"group":"Cal.com","pages":[{"title":"Connect Cal.com","sidebarTitle":"Connect","href":"/integrations/cal-com"},{"title":"Cal.com agent functions","sidebarTitle":"Agent functions","href":"/integrations/cal-com-functions"}]}]}]},{"group":"Marketplace","icon":"store","pages":[{"title":"Trigger Retell calls from HubSpot workflows","href":"/integrations/hubspot-marketplace"},{"title":"Trigger Retell calls from Zoho CRM workflows","href":"/integrations/zoho-marketplace"},{"title":"Trigger Retell calls from Slack","href":"/integrations/slack-marketplace"},{"title":"Trigger Retell calls from Notion","href":"/integrations/notion-marketplace"},{"title":"Trigger Retell calls from Google Sheets","href":"/integrations/google-sheets-marketplace"}]},{"group":"Other Topics","pages":[{"group":"Custom LLM","pages":[{"title":"Custom LLM overview","href":"/integrate-llm/overview"},{"title":"Set up a custom LLM WebSocket server for your Retell agent","href":"/integrate-llm/setup-websocket-server"},{"title":"Connect your LLM","href":"/integrate-llm/integrate-llm"},{"title":"Add function calling","href":"/integrate-llm/integrate-function-calling"},{"title":"Troubleshooting","href":"/integrate-llm/troubleshooting"},{"title":"Best practices","href":"/integrate-llm/llm-best-practice"}]},{"title":"Audio Basics","href":"/knowledge/audio-basics"}]}]},{"tab":"API Reference","icon":"code-xml","pages":[{"title":"API Reference","href":"/api-references/overview"}]},{"tab":"SDK","icon":"package","pages":[{"title":"SDK","href":"/get-started/sdk"}]},{"tab":"MCP","icon":"plug-zap","pages":[{"title":"MCP","href":"/get-started/mcp-server"}]},{"tab":"CLI","icon":"terminal","pages":[{"title":"CLI","href":"/get-started/cli"}]},{"tab":"Deprecations","icon":"book-alert","pages":[{"title":"Deprecations","href":"/deprecation-notice/overview"}]}]},"basePath":"","title":"Conversation flow nodes and edges — pick the right node type","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-NdetNziF.js","DynamicMarkdown-CD8713Yy.js","zoom-image-lightbox-DMoL6lHz.js","lightbox-handle-r17bVUz3.js"]}