---
title: Chamar Subfluxo e Desvio (Goto)
description: Chame outro fluxo — inline, com retorno ou assíncrono — ou desvie a execução para outro ponto do mesmo fluxo.
---

<NoCard kind="call_subflow_inline" categoria="Lógica" />

# Chamar Subfluxo e Desvio (Goto)

<Secao icon="info">Para que serve</Secao>

Quando um fluxo cresce demais ou você quer reaproveitar uma sequência de passos em vários fluxos, os nós de subfluxo permitem **chamar outro fluxo a partir do atual** — como pedir ajuda para um colega especialista em vez de fazer tudo sozinho. Cada tipo de chamada tem um comportamento diferente quanto ao compartilhamento de dados, à espera e ao retorno de valores. O Goto, por sua vez, desvia a execução para outro ponto dentro do mesmo fluxo, sem envolver nenhum fluxo externo.

<Secao icon="clock">Quando usar</Secao>

- **Subfluxo Inline** — quando você quer executar outro fluxo **no mesmo contexto** e continuar logo após, com as variáveis mescladas de volta ao fluxo pai.
- **Subfluxo com Retorno** — quando o subfluxo precisa **devolver valores** mapeados de volta para variáveis do fluxo pai, rodando de forma isolada.
- **Subfluxo Assíncrono** — quando você quer **disparar outro fluxo em paralelo** sem esperar ele terminar.
- **Goto** — quando você quer pular para outro nó dentro do mesmo fluxo sem criar um subfluxo.

---

## Pré-requisito: subfluxo reusável e publicado

Para aparecer na lista de escolha de qualquer nó de chamada, o subfluxo alvo precisa estar:

1. **Publicado** no workspace.
2. **Marcado como reusável** (disponível para chamada por outros fluxos).
3. Com o **modo de execução correto** (definido no nó **Start** do Fluxo de Trabalho via toggle **"Modo de execução"**):
   - **Síncrono** — para Subfluxo Inline e Subfluxo com Retorno.
   - **Assíncrono** — para Subfluxo Assíncrono.

Fluxos que não atendem esses critérios não aparecem na lista. Consulte [Categorias, pastas e projetos](/guia/flow-builder/organizacao) para entender como criar e configurar subfluxos reusáveis.

---

## Tipos disponíveis

### Subfluxo Inline

> Chama um subfluxo e **continua no mesmo contexto**. As variáveis do subfluxo são mescladas de volta ao fluxo pai ao fim da execução. Exige um subfluxo alvo em modo síncrono.

**Comportamento:** contexto compartilhado — o subfluxo enxerga e pode alterar as variáveis do fluxo pai. Ao terminar, a execução volta automaticamente ao ponto de saída do nó.

**Quando usar:** reaproveitar uma sequência de passos (ex.: validar CPF, formatar endereço) que não precisa de isolamento e cujo resultado deve estar imediatamente disponível no fluxo pai.

**Como configurar:**

<Passos>
  <Passo>Arraste o bloco **Subfluxo Inline** para o canvas a partir da categoria **Lógica**.</Passo>
  <Passo>Clique no bloco para abrir o painel de configuração.</Passo>
  <Passo>No campo **Subfluxo**, selecione o subfluxo alvo na lista. Ela mostra apenas fluxos publicados, reusáveis e em modo síncrono.</Passo>
  <Passo>Ao selecionar, o painel exibe os **campos de entrada** esperados pelo subfluxo. Para cada parâmetro, informe um valor fixo, uma referência a variável (`{{variavel}}`) ou uma expressão.</Passo>
  <Passo>Conecte a saída do nó ao próximo bloco do fluxo principal.</Passo>
</Passos>

---

### Subfluxo com Retorno

> Chama um subfluxo de forma **isolada**, aguarda ele terminar e **mapeia as saídas** de volta para variáveis do fluxo pai. Exige um subfluxo alvo em modo síncrono.

**Comportamento:** contexto isolado — o subfluxo não enxerga diretamente as variáveis do fluxo pai. Os valores de retorno (definidos no subfluxo) são mapeados explicitamente para variáveis do fluxo pai no painel de saídas.

**Quando usar:** o subfluxo realiza uma coleta ou cálculo (ex.: coletar endereço em vários passos, consultar uma API) e precisa devolver valores estruturados para o fluxo pai usar.

**Como configurar:**

<Passos>
  <Passo>Arraste o bloco **Subfluxo com Retorno** para o canvas.</Passo>
  <Passo>No painel, selecione o subfluxo alvo (publicado, reusável e em modo síncrono).</Passo>
  <Passo>Preencha os **campos de entrada** esperados pelo subfluxo, com valores fixos, variáveis ou expressões.</Passo>
  <Passo>Configure as **saídas**: para cada valor que o subfluxo devolve, escolha a variável do fluxo pai que vai recebê-lo.</Passo>
  <Passo>Conecte a saída do nó ao próximo bloco.</Passo>
</Passos>

---

### Subfluxo Assíncrono

> **Dispara** outro fluxo em paralelo e **não espera** ele terminar. A execução do fluxo atual segue imediatamente. Exige um subfluxo alvo em modo assíncrono.

**Comportamento:** o subfluxo é despachado e roda de forma completamente independente. O fluxo pai não aguarda resultado nem recebe valores de retorno — apenas envia os dados de entrada e segue em frente. Por rodar em paralelo sem espera, não há configuração de saída disponível neste nó.

**Quando usar:** tarefas secundárias que não devem travar a conversa — notificar a equipe interna, criar um ticket, registrar um log — enquanto o contato já avança para a próxima mensagem.

**Alvo precisa estar em modo Assíncrono:** no editor do Fluxo de Trabalho alvo, selecione o nó **Start** e ative o toggle **"Modo de execução: Assíncrono"**. Somente então o fluxo fica disponível nesta lista. Em modo Assíncrono, a seção "Saídas do subfluxo" não aparece no editor do alvo — um fluxo assíncrono não retorna valores.

**Como configurar:**

<Passos>
  <Passo>Arraste o bloco **Subfluxo Assíncrono** para o canvas.</Passo>
  <Passo>Selecione o alvo. Apenas Fluxos de Trabalho em modo **Assíncrono**, publicados e reusáveis aparecem na lista.</Passo>
  <Passo>Preencha os **campos de entrada** esperados pelo subfluxo alvo. Não há configuração de saída — o fluxo pai não recebe retorno.</Passo>
  <Passo>Conecte a saída do nó ao próximo bloco. O fluxo pai continua imediatamente, sem aguardar o término do subfluxo.</Passo>
</Passos>

<Cuidado>
O modo de execução de um Fluxo de Trabalho não pode ser trocado se houver fluxos chamando-o de forma incompatível. Por exemplo: se um **Subfluxo com Retorno** já aponta para este workflow, não é possível alterá-lo para modo Assíncrono até que essa chamada seja removida ou substituída.
</Cuidado>

---

### Goto (Desvio)

> **Desvia a execução** diretamente para outro nó dentro do mesmo fluxo — sem chamar nenhum fluxo externo.

<Captura legenda="Fluxo de exemplo no canvas, com os blocos conectados em sequência do Início ao Fim" src="/img/flow-exemplo-canvas.png" />

**Quando usar:** criar atalhos dentro de um fluxo complexo, voltar para um ponto anterior sem criar um loop formal, ou pular etapas condicionalmente.

---

## Comparativo rápido

| | Inline | Com Retorno | Assíncrono | Goto |
|---|---|---|---|---|
| **Modo exigido do alvo** | Síncrono | Síncrono | Assíncrono | — (mesmo fluxo) |
| **Contexto** | Compartilhado | Isolado | Isolado | — |
| **Aguarda término** | Sim | Sim | Não | — |
| **Devolve valores** | Não | Sim | Não | — |
| **Recebe entradas** | Sim | Sim | Sim | Não |

---

<Secao icon="sliders-horizontal">Campos do inspector</Secao>

| Campo | Tipos | O que faz |
|-------|-------|-----------|
| Subfluxo (picker) | Inline, Retorno, Assíncrono | Seleciona o subfluxo alvo na lista de reusáveis publicados do workspace |
| Campos de entrada | Inline, Retorno, Assíncrono | Mapeia cada parâmetro esperado pelo subfluxo para um valor fixo, variável ou expressão |
| Saídas | Retorno | Mapeia cada valor devolvido pelo subfluxo para uma variável do fluxo pai |
| Nó de destino | Goto | Qual nó do fluxo atual receberá a execução |
| Título | Todos | Nome interno do nó no canvas |

---

<Secao icon="circle-check">Exemplo</Secao>

Um escritório tem três fluxos de atendimento (consulta, processo, financeiro). Todos precisam validar o CPF do cliente antes de continuar. Em vez de repetir essa lógica, cria-se um fluxo separado "Validar CPF" (publicado, reusável, em modo síncrono) e usa-se **Subfluxo Inline** em cada um dos três fluxos para chamá-lo. O campo `cpf_digitado` é passado como entrada; após a execução, a variável `cpf_valido` já está disponível no contexto do fluxo pai.

<Captura legenda="Fluxo de exemplo no canvas, com os blocos conectados em sequência do Início ao Fim" src="/img/flow-exemplo-canvas.png" />

<Dica>
Use **Subfluxo Assíncrono** para operações de "notificação interna" que não devem fazer o contato esperar — registrar um log, notificar um atendente ou criar um ticket — enquanto o contato já recebe a próxima mensagem.
</Dica>

<Cuidado>
O **Goto** é poderoso mas pode tornar o fluxo difícil de ler se usado em excesso. Um desvio para um ponto muito distante no canvas dificulta a manutenção. Se precisar de muitos Gotos, considere reorganizar em subfluxos separados.
</Cuidado>

## Saiba mais

- [Categorias, pastas e projetos](/guia/flow-builder/organizacao) — categoria Fluxo de Trabalho e modo de execução síncrono/assíncrono
- [Testar e Publicar](/guia/flow-builder/testar-e-publicar) — publicar o subfluxo para que ele apareça na lista de chamada
- [Exportar e importar fluxos (.adflow)](/guia/flow-builder/portabilidade) — como subfluxos viajam entre workspaces
