Nome descritivo do mapeamento. Aparece no modelador para identificar o que aquele bloco de mapeamento faz e, em Obter Informação, é o nome da variável que guarda o dado lido. O nome de uma variável de sistema, como {processName}, não é aceito; a lista está em Manipulação de Variáveis.
Mapeamento de Dados
Configure o que cada etapa captura, transforma ou calcula, qual ação ela executa em cada elemento e como isso vira variável do processo.
Conceito de Mapeamento
O painel de mapeamento muda de acordo com o tipo de ação da etapa: Preencher, Obter Informação, Navegar, Conectar Serviços e Chamar API Rest têm campos diferentes entre si, cada um com o que faz sentido para aquela ação. O que é comum a todos: cada mapeamento é adicionado e configurado um a um, de acordo com a especificidade daquele elemento ou campo.

De forma geral, cada mapeamento define:
- O que fazer: capturar um dado, clicar, digitar, ou alimentar um campo de conector/API. Depende do tipo de ação da etapa
- Onde e como: qual elemento ou campo, com qual transformação (OCR, conversão de tipo, expressões regulares, cálculos)
- Onde salvar: nome da variável que estará disponível nas etapas seguintes
Campos Gerais
Independente do tipo de ação, todo mapeamento tem:
Aparece em Preencher e em Obter Informação. Ligue quando o valor for um dado pessoal ou uma credencial que não deve ficar gravado: ele deixa de aparecer nos logs, no estado guardado pelo debug e no arquivo de teste de projetos de script, e as etapas seguintes continuam recebendo o valor real. Em Obter Informação, vale também para o texto reconhecido por OCR nesta linha. Não aparece quando o Objeto de Tela é Valor do Cofre, porque esse valor nunca vira variável. A evidência é uma imagem da tela e não é coberta por esta marca. Veja Dados Sensíveis.
Captura screenshot do estado da página no momento em que este mapeamento é executado. As evidências ficam disponíveis para download no Control Room.
Num mapeamento marcado como Dado sensível, o controle aparece como Bloqueada, e a imagem não é gerada.
Cria variáveis durante a sessão com as informações da captura da evidência.
Só aparece em Preencher, e só é capturado com Tipo de Evento Clicar (mais abaixo no painel) — é o clique que dispara o download no navegador. Ligado com Tipo de Evento Preencher, a tela avisa que a combinação não tem efeito. Quando ativado e o evento é Clicar, o arquivo baixado pelo browser (PDF, planilha, imagem) fica disponível em variáveis do processo: o nome do arquivo, o caminho dele em disco e o conteúdo binário, prontos para as etapas seguintes.
Segunda pergunta, só aparece com o download ligado. Desligada (padrão): o arquivo cai numa pasta interna da execução e é apagado automaticamente quando ela termina — exatamente como sempre funcionou, sem precisar informar caminho nenhum. Ligada: o arquivo precisa sobreviver à execução, e a Pasta de Destino do Download passa a ser obrigatória.
Só aparece (e só é obrigatória) com Manter o download após a execução? ligado. É um caminho real na máquina onde o agente roda — pode ser outra máquina, com outro sistema operacional, do que a que você está usando agora para desenhar o processo. Ex.: C:\Notas no Windows, /home/usuario/notas no Linux/Mac. É usado exatamente como você escreve, sem nenhum ajuste.
O campo aceita variável, então dá para separar os arquivos por execução: C:\Notas\{numeroNota}. Barra normal ou invertida tanto faz: o agente ajusta para o sistema de quem executa.
Para como o agente sabe que o download realmente terminou (em vez de um tempo chutado) e o que acontece quando ele nunca termina, veja Download.
Mapeamento em Preencher
O mapeamento de uma etapa Preencher define em qual elemento agir e o que fazer com ele:

O elemento da página a ser afetado. Alterne para Seleção Customizada para agir por código em vez de seletor. Veja o callout abaixo.
Diz com que tipo de elemento o agente está lidando:
| Opção | Quando usar |
|---|---|
| Campo Texto | O padrão, e sempre uma opção na lista. Caixa de texto comum: o agente digita o Valor nela. |
| Lista Dropdown | Lista suspensa. O Valor precisa ser o value interno da opção, não o texto que aparece na tela — veja o campo Valor logo abaixo. |
| Upload de Arquivo | Campo de anexo. O Valor é o caminho do arquivo na máquina em que o agente roda. |
| Valor do Cofre | O Valor é uma credencial. Ao escolher esta opção, o campo Valor vira uma lista das chaves do Cofre de Senhas, e o agente busca o valor já decifrado na hora de preencher, sem que ele apareça em log ou fique retido em variável do processo. Veja onde a credencial pode ser usada. |
| 🖱 Clicáveis (botão, link, checkbox, radio...) | Atalho: não é um objeto de tela de verdade, é um lembrete de que esses elementos não têm o que preencher — a interação com eles é o Tipo de Evento Clicar. Escolher esta opção já muda o Tipo de Evento pra Clicar e some com Objeto de Tela e Valor, porque nenhum dos dois se aplica. |
Só aparece em Preencher. Toda opção real da lista (Campo Texto, Lista Dropdown, Upload de Arquivo, Valor do Cofre) exige um evento de preenchimento: num clique nenhuma delas tem efeito, e por isso a tela SUGERE Preencher no Tipo de Evento assim que você escolhe uma delas. É só uma sugestão aplicada na troca da seleção: o campo continua livre depois disso, um mapeamento já salvo com outra combinação não é alterado sozinho ao reabrir a tela, e um aviso aparece se a combinação ficar sem efeito.
Preencher (coloca o Valor no elemento) ou Clicar (funciona em qualquer elemento clicável: botão, link, checkbox, radio, ou até um campo de texto — só focar nele). São só essas duas opções; para ações de mouse mais específicas (duplo clique, arrastar, scroll), use Navegar com Dispositivo e Interação.
Com Clicar, os campos Objeto de Tela e Valor somem da tela: o agente só precisa do Seletor, nenhum dos dois é lido nesse evento. Clicar é também o único evento que captura download: Esse mapeamento dispara download?, na seção Gestão de Arquivos, só tem efeito aqui.
O que inserir ou verificar no elemento, quando o Tipo de Evento é Preencher. O campo tem dois modos, alternados pelos botões Texto / Expressão logo abaixo do rótulo.
Modo texto é o padrão e serve para a maioria dos casos. Escreva o texto direto, e use o botão { } dentro do campo para inserir uma variável do processo. Texto e variável convivem na mesma frase:
Bem-vindo, {nome}!
Modo expressão serve quando o valor precisa ser calculado. Ali o conteúdo é JavaScript, com as variáveis entre chaves e o texto fixo entre aspas:
{CPF} != null ? {CPF} : parseInt({COD_Documento})
{tipo} == "PF" ? "CPF" : "CNPJ"
Ao trocar para o modo expressão, o que já estava escrito é convertido para a forma equivalente, então dá para começar no texto simples e só depois transformar em cálculo.
Com Objeto de Tela em Lista Dropdown, o que vai no Valor é o atributo value do <option> do HTML, não o texto que aparece na lista para quem usa a tela — se a lista mostra "CPF"/"CNPJ" mas o HTML tem value="1"/value="2", é 1 ou 2 que vai aqui. Inspecione o elemento (F12) para achar o value real. Com Upload de Arquivo, o Valor é o caminho do arquivo na máquina do agente.
Seletor do iframe, quando o elemento está dentro de um. Deixe em branco se o elemento está na página principal. Vale tanto para Preencher quanto para Obter Informação.
const resultado = await sessionPage[position].evaluate(() => {
return document.querySelector('#seletor').innerText;
});
globalData.set('{resultado}', resultado);
Modelos disponíveis: evaluate() (retornar valor ou passar variável), $$eval() (todos os elementos que casam) e $eval() (primeiro elemento). É o mesmo Puppeteer usado internamente. sessionPage[position] é a página ativa daquela instância.
Mapeamento em Obter Informação
O mapeamento de uma etapa Obter Informação usa o mesmo painel de Seletor / Seleção Customizada de Preencher (veja o callout de código nativo na seção anterior), mas sem Valor nem Tipo de Evento, só captura. O iFrame do Objeto continua valendo, para quando o elemento está dentro de um iframe. Especifique o que extrair em Ler a partir do atributo:

| Atributo | O que retorna |
|---|---|
textContent | Texto do elemento. É o valor padrão do campo. |
content | Conteúdo do elemento (uso geral) |
value | Valor do campo de formulário (<input>). É o que ler para saber a opção escolhida num <select>. |
href | URL do atributo href |
src | URL do atributo src |
checked | Estado booleano de checkbox/radio |
| outros | Qualquer outro atributo, informado livremente (ex.: data-id) |
Os três dizem respeito a escrever na tela, não a ler, e por isso vivem em Objeto de Tela, na etapa Preencher. Numa captura eles nunca tiveram efeito: o agente acabava lendo o texto do elemento de qualquer forma.
{nome_da_variavel}[0], {nome_da_variavel}[1] etc. para acessar cada item, e {nome_da_variavel}[] para o primeiro. Em um campo de texto comum, a variável entra inteira, como {nome_da_variavel}. nome_da_variavel é o Nome configurado nessa linha de mapeamento.
Coleção: Tabulação Automática
Quando o seletor de uma etapa Obter Informação casa com vários elementos ao mesmo tempo, o array capturado vem "achatado": item 1, item 2, item 3... na ordem em que aparecem no HTML, sem separar por coluna. Se o que você está lendo é uma tabela com várias colunas, isso mistura tudo numa lista só.
É pra isso que serve Varrer como Lista?: ative o toggle e, em Tabulação Automática da Lista, adicione um label para cada coluna, na mesma ordem em que elas aparecem no HTML. O runtime distribui o array capturado ciclicamente entre esses labels. O 1º item vai para o 1º label, o 2º para o 2º label, e assim por diante, voltando ao 1º label depois do último. Cada label vira automaticamente uma variável lista própria no processo, já separada por coluna.

Exemplo: uma tabela de fornecedores com 4 colunas: Empresa, CNPJ, Serviço e UF. Um seletor genérico (ex.: td) captura todas as células da tabela em sequência. Com Tabulação Automática da Lista = EMPRESA_LIST, CNPJ_LIST, SERVICO_LIST, UF_LIST, o runtime tabula automaticamente: a 1ª célula de cada linha cai em {EMPRESA_LIST}, a 2ª em {CNPJ_LIST}, e assim por diante. Cada lista termina com uma entrada por linha da tabela original.
Como a distribuição é pela posição do item capturado, use um seletor que alcance só as células das linhas de dados, com uma célula por label em cada linha, como #fornecedores tbody tr.dado td.
As listas da Tabulação Automática acumulam: cada vez que a etapa roda na mesma execução, os itens capturados entram no fim das listas, o que junta as páginas de uma paginação. A variável da própria linha de mapeamento é substituída a cada passagem.
{nome_da_variavel}). Varrer como Lista com Tabulação Automática é o passo a mais para reorganizar essa lista única em colunas.
Mapeamento em Navegar: dispositivo e Interação
Esta seção aparece no mapeamento de uma etapa Navegar. Ela é opcional. A grande maioria das automações não precisa dela, porque age em cima de um seletor normalmente. Ela existe para o caso em que não há seletor confiável para usar: telas em canvas/WebGL, componentes gráficos de terceiros, ou qualquer interface onde os elementos não formam um DOM navegável. Nesses casos, em vez de "clicar no elemento X" você faz "clicar na posição X,Y da tela".

| Dispositivo | Ações disponíveis |
|---|---|
| — nenhum — (padrão) | Nenhuma interação de dispositivo; a etapa apenas navega. |
| 🖱 Mouse | Click, Move, Up, Down, Drag, Drop, Drag n Drop, Scroll |
| ⌨ Keyboard | Type, Press, Down, Up |
| 📱 Touchscreen | Tap |
Campos adicionais, conforme o dispositivo/ação escolhidos:
- Botão do Mouse (Esquerdo/Direito) e Quantidade de Cliques, só para Mouse.
- Tecla (Enter, Tab, setas, etc.) para Press/Down/Up, ou Texto a digitar para Type. No Keyboard.
- Posição X / Posição Y. Coordenadas do clique ou toque, para Mouse e Touchscreen.
- Posição Final X / Posição Final Y, só para
Drag/Drag n Drop: a coordenada de destino do arraste. - Delay e Aguardar Após Executar. Pausa em milissegundos antes e depois da interação.
Mapeamento em Conectar Serviços
Em vez de seletor, o mapeamento de uma etapa Conectar Serviços mostra as entradas do conector escolhido. Os campos mudam conforme o conector e a ação selecionados. Cada entrada aceita um Valor Fixo (texto literal) ou uma variável do processo (ícone de tag):

No exemplo, um conector de e-mail (Comunicação Padrão): Para recebe a variável {matrix.area_responsavel}, Assunto é um valor fixo digitado, Corpo recebe outra variável, e CC/BCC ficam em branco (opcionais). Campos obrigatórios do conector vêm sinalizados.
Cada entrada é um campo de texto com um seletor de variáveis ao lado. A variável escolhida entra na posição do cursor, então o mesmo campo aceita texto fixo, uma variável, ou os dois juntos (/pedido/{id}/itens). O detalhe das três formas, com exemplos, está em Conectores → Preenchendo os valores na etapa.
O resultado da chamada, ou seja, o que o conector devolve, vira variável com o prefixo fixo connector.; veja Variáveis de Contexto.
Mapeamento em Chamar API Rest
Diferente das outras etapas, aqui não existe seletor: o mapeamento é a própria configuração da chamada HTTP, montada por formulário. Nada de escrever JSON à mão.

| Campo | Descrição |
|---|---|
| Método HTTP | Escolha entre os botões: GET, POST, PUT, PATCH ou DELETE. |
| URL do Endpoint | Endereço da API. Aceita uma variável do processo no lugar da URL inteira (útil quando o endereço vem de um cadastro ou de uma etapa anterior) e também variáveis no meio do endereço, como https://api.exemplo.com/v1/produto/{id}/itens. Espaço e acento no valor são escapados automaticamente; barra, & e = são preservados, então a variável pode carregar um caminho inteiro. |
| Headers | Lista de linhas Header/Valor. Clique em + Adicionar linha para cada cabeçalho (ex.: Content-Type / application/json). O Valor aceita variável sozinha, {session_token}, ou no meio do texto, Bearer {token}. Também aceita credencial do Cofre de Senhas, {vault.chave}, resolvida só no instante da chamada e mascarada no log. |
| Parâmetros de URL | Mesma lógica de linhas, para parâmetros embutidos na URL. O Valor aceita {variável} ocupando o campo inteiro. |
| Query Strings | Lista de linhas Chave/Valor anexadas à URL (ex.: processid / 1994). O Valor aceita {variável} ocupando o campo inteiro. Se a URL já tiver query própria, estas se somam a ela, e a ordem das linhas é a ordem que sai na URL. Escreva o Valor como texto normal: acento e espaço são codificados na hora do envio. Colar um valor já codificado (ag%C3%AAncias) faz ele ser codificado de novo e chegar errado na API. |
Body: o corpo que você envia
A seção Body monta o corpo da requisição, aquilo que o agente manda para a API. Ela não tem nada a ver com a resposta.
| Campo | Descrição |
|---|---|
| Root do Body | Formato em que o corpo é enviado, escolhido numa lista fechada: body (JSON), texto (corpo escrito à mão), form (urlencoded) ou formData (multipart). Deixe em sem corpo para GET e para APIs que não recebem body. Não é um envelope em volta do JSON: é como a requisição transporta o que você montou logo abaixo. |
| Objetos do Body | As linhas que compõem o JSON, com três colunas: Path (o grupo aninhado onde a chave entra), Chave (o nome do campo) e Valor (o conteúdo). Aparece nos formatos body, form e formData. |
| Corpo | Aparece no formato texto, no lugar da tabela. O que você escrever aqui vai para a API exatamente como está, o que atende XML, SOAP, CSV, NDJSON e texto puro. Variável do processo vale no meio do texto, <numero>{numero_pedido}</numero>, e credencial do Cofre de Senhas também, {vault.chave}. |
Content-Type: a etapa preenche, você troca se precisar
Ao escolher o formato do corpo, a linha Content-Type aparece sozinha na seção Headers, já com o valor certo: application/json no formato body, e no formato texto o tipo que o próprio conteúdo indica (texto começando com < vira application/xml, a=1&b=2 vira urlencoded, e assim por diante).
Essa linha é sua: edite o valor quando a API pedir outro tipo, como application/soap+xml, text/csv ou um tipo próprio do fornecedor. O que estiver escrito ali é o que vai para a API.
form e formData, não escreva essa linha. Nesses dois o rótulo é montado no instante do envio, e o multipart depende de um separador que só existe ali. Um valor escrito à mão substitui o certo por um incompleto, e a API do outro lado não consegue ler os campos.
Regras da coluna Chave
A Chave não é só um rótulo de tela: ela vira o nome do campo gravado. Uma regra vale em toda seção, as outras duas só no Body.
- Não pode ficar em branco, em nenhuma seção. Linha sem Chave não tem nome de campo. Preencha ou remova a linha.
- No Body, não aceita
.#$/[]. Para aninhar um campo, o lugar é a coluna Path, não um ponto dentro da Chave. - No Body,
pathé um nome reservado: é ele que identifica o grupo. Use outro nome para o seu campo.
Em Headers, Parâmetros de URL e Query Strings a Chave é livre. É o que permite escrever criteria[0][field], forcedisplay[0] ou filter[name], a notação de array que muitas APIs de busca exigem, e também repetir a mesma chave em duas linhas quando a API espera o parâmetro mais de uma vez.
O formulário confere isso ao salvar e diz qual seção e qual linha precisam de ajuste, apontando o campo em vermelho quando o caractere é o problema.
O que escrever na coluna Valor
O campo Valor tem um botão { } que abre a lista de variáveis disponíveis (mapeamentos anteriores, Matrix e retornos de conector), agrupadas por origem. Variáveis que carregam listas vêm marcadas com um badge. Ao escolher uma, ela é inserida na posição do cursor, então dá para combinar com o que você já digitou. Você também pode digitar tudo à mão, sem abrir a lista.
{variável} sozinha vai com o tipo que tem (lista e objeto em JSON, Moeda como número). O que não é expressão vale como texto, com as variáveis trocadas: aprovado, Ticket-{id}, https://site.com/pedido/{id}, Obs: {obs}.
| Você quer enviar | Escreva |
|---|---|
| O valor de uma variável | {status_nf} |
| Um texto fixo | 'aprovado' |
| Um número ou booleano | 100, true |
| Texto fixo junto com variável | 'PED-' + {numero} |
| Duas variáveis emendadas | {uf} + '-' + {cidade} |
| Uma lista ou um objeto, como JSON | {itens} (variável do tipo Lista ou Objeto) |
| Texto com dois-pontos ou endereço | https://site.com/pedido/{id}, 10:30 |
{a_variavel} aqui. Sem escrever código: na seção Variáveis do Fluxo dessa etapa, o modo Variável ou texto junta os pedaços e o modo Fórmula resolve condicionais e contas. O Body fica legível e você testa a montagem separado da chamada.
Resultados: onde a resposta é guardada
Quem lê a resposta da API é a seção Resultados. Cada linha liga um caminho do JSON retornado a uma variável do processo:
| Coluna | Descrição |
|---|---|
| Path | Caminho do valor dentro do JSON de resposta, em notação de ponto. Ex.: data.invoice.number, itens[0].sku. Um ponto no início é aceito e não muda nada. Use [*] para percorrer uma lista: itens[*].sku guarda o campo de todos os itens, itens[*] guarda a lista inteira, e aninhado funciona (pedidos[*].itens[*].sku). O nome do campo não precisa ser identificador: data[*].2 e content-range são caminhos válidos. |
| Variável | Nome que o dado terá no processo, usado como {nome} nas etapas seguintes. É o único campo que nomeia a variável, com ou sem [*] no caminho. O nome de uma variável de sistema não é aceito. |
Exemplo: para uma API que responde assim...
{
"data": {
"invoice": {
"number": "NF-2024-001",
"total": 1500.00,
"status": "approved"
}
}
}
...crie três linhas em Resultados:
data.invoice.number → numero_nf
data.invoice.total → valor_total
data.invoice.status → status_nf
Nas etapas seguintes, os valores ficam disponíveis como:
{numero_nf} → "NF-2024-001"
{valor_total} → 1500
{status_nf} → "approved"
Não há limite de linhas, e caminhos com e sem [*] convivem na mesma etapa: todos viram variável. Ser lista é consequência do [*] no caminho, não uma marcação à parte, então não há como a marcação discordar do que a etapa realmente entrega.
Testar a chamada antes de rodar
O botão Testar chamada, no fim da seção Resultados, dispara a requisição a partir da própria tela e mostra o status e a resposta. A chamada é montada exatamente como na execução, então o que funciona no teste funciona no processo.
Clicar num campo do JSON exibido cria a linha de Resultado com o Path já preenchido, o que dispensa digitar o caminho à mão. Em um campo dentro de uma lista, o atalho [*] todos escreve o caminho com [*], e a variável passa a receber o campo de todos os itens.
Se a etapa usa variáveis, o painel pede o valor de cada uma para o teste, já preenchendo as que são parâmetro do agente. Esses valores valem só para a chamada de teste e não alteram o processo. Referência ao Cofre de Senhas é resolvida no servidor, e o segredo não aparece na tela.
Quando o Path não encontra nada
A etapa não falha: a variável fica vazia e o log registra um aviso dizendo qual Path faltou e quais campos a resposta trouxe no primeiro nível. É por ali que se descobre se o caminho está errado ou se a API é que não devolveu o dado.
data[*].2 junta num campo só duas informações que a etapa espera separadas, e não é aceito no salvamento. O certo é data no Path, 2 em Nome e o nome que você quer usar em Variável. Em conector o [*] no Path é válido, porque lá quem resolve o caminho é outro mecanismo.
