Skip to main content

Batch upsert: guia de uso

  • September 30, 2026
  • 0 replies
  • 26 views
vinicius.pereira
Community Manager

👤 Para usuários intermediários e avançados que configuram integrações com o conector Pipefy Piece.
🔐 Requer uma Service Account com acesso ao pipe ou à database de destino.
🎯 Para quem precisa criar ou atualizar cards e registros de databases a partir de um arquivo CSV ou JSON.

 

Atualizar registros um a um leva tempo quando as informações chegam em uma planilha ou em outro sistema. Com o conector Pipefy, você pode incorporar essas alterações à sua integração como uma operação em lote.

Ao terminar este artigo, você vai saber preparar o arquivo, configurar a ação Batch upsert, definir como os registros serão correspondidos, acompanhar o processamento e tratar as linhas que falharam.

 

 

📖 O que você vai entender aqui:

 

O que a ação Batch upsert faz

A ação Batch upsert cria ou atualiza vários cards em um pipe ou registros em uma database a partir de um único arquivo CSV ou JSON.

Nos bastidores, o conector Pipefy:

  1. Envia o arquivo para o armazenamento do Pipefy (você não precisa configurar isso manualmente).
  2. Submete o lote com o mapeamento de colunas e as opções que você definiu.
  3. Opcionalmente, aguarda até que o Pipefy termine de processar todas as linhas.

 

Antes de adicionar a etapa do Pipefy

  • Conexão do conector Pipefy usando uma Service Account, com acesso ao pipe ou à database de destino
  • Arquivo dentro dos limites de quantidade de linhas e tamanho (consulte a seção 12)
  • Definição de quando as linhas devem sempre criar itens, atualizar por chave ou ser ignoradas quando não houver correspondência
  • Definição de como a etapa Batch upsert aguardará a conclusão (visão geral)

 

Passo 1: conecte o Pipefy com uma Service Account

  1. No Pipefy, abra Members & permissions → Service accounts e crie uma Service Account (planos Business, Enterprise ou Unlimited).
  2. Copie o Client ID e o Client secret (exibido apenas uma vez, na criação).
  3. Conceda à conta acesso ao pipe ou à database que você usará na etapa de processamento em lote.
  4. Na integração, abra Connections para o conector Pipefy (ou conecte ao adicionar a etapa).
  5. Cole o Client ID e o Client secret e salve.

 

Dica: use uma Service Account dedicada para cada integração. Assim, você pode revogar o acesso sem afetar outras integrações.

 

Passo 2: prepare o arquivo CSV ou JSON

CSV

  • UTF-8, com valores separados por vírgulas.
  • O valor padrão de First data row é 2 (cabeçalho na linha 1).
  • Cada cabeçalho mapeado deve aparecer exatamente uma vez.
  • A correspondência dos cabeçalhos ignora maiúsculas, minúsculas e espaços no início e no fim (Email, email e EMAIL são equivalentes).

Exemplo:

Name,Email,Company,Deadline
Acme Corp,ops@acme.example,Acme Corp,2026-09-01
Beta Inc,hello@beta.example,Beta Inc,2026-09-15

 

JSON

  • A raiz deve ser um array de objetos.
  • As colunas mapeadas são chaves no nível superior de cada objeto.
  • First data row não se aplica a JSON.
  • Uma chave ausente é tratada como uma célula vazia, não como um erro.

Exemplo:

[
{ "Name": "Acme Corp", "Email": "ops@acme.example" },
{ "Name": "Beta Inc", "Email": "hello@beta.example" }
]

 

Regras de conteúdo para os dois formatos

Situação

Comportamento

Linha com todas as células mapeadas vazias

Ignorada

Célula mapeada vazia

Limpa o campo de destino (exceto quando a coluna de ID do registro está vazia: nesse caso, a linha é tratada como criação)

Coluna fora do mapeamento

Nunca é lida nem gravada

Valor inválido para um tipo de campo

Essa linha falha; as demais continuam sendo processadas

 

Erro comum: mapear uma coluna que você não pretendia atualizar. Uma célula vazia em uma coluna mapeada substitui os dados existentes por valores em branco.

 

As colunas dedicadas a etiquetas e responsáveis esperam IDs ou endereços de e-mail separados por vírgulas, e não nomes de exibição.

Passo 3: adicione a ação Batch upsert

  1. Na integração, adicione uma etapa → conector Pipefy → Batch upsert.
  2. Selecione a conexão do conector Pipefy e a organização.

 

 

Passo 4: configure destino, arquivo e mapeamento

Destino (Target)

Campo

O que selecionar

Target

Pipe (cards) ou Database (records)

Pipe / Database

O repositório que receberá os dados

 

 

Arquivo de origem (Source file)

Campo

O que selecionar

File format

CSV ou JSON (deve corresponder ao arquivo; não há detecção automática)

Source file

Arquivo de uma etapa anterior, uma URL pública ou uma data URI em base64

 

Padrões comuns:

  • Google Sheets / Excel: exporte para CSV em uma etapa anterior e, em seguida, passe o arquivo aqui.
  • Download HTTP: use uma etapa que busque o arquivo e mapeie Source file para a saída dessa etapa.

 

Source file mapeado a partir de uma etapa anterior

 

Source file como uma data URI em base64

 

Mapeamento de campos (Field mapping)

Em Field mapping, adicione linhas de Field to column:

Coluna na interface

Finalidade

Pipefy field

Campo de destino no pipe ou na database

Column in the file

Nome do cabeçalho (CSV) ou chave (JSON)

 

Você pode deixar Field mapping vazio se usar apenas colunas de atributos (título, data de vencimento, etiquetas, responsáveis e ID do registro), mas é obrigatório ter pelo menos um mapeamento ou uma coluna de atributo.

 

Limpeza de valores: uma coluna mapeada com uma célula vazia limpa esse campo no card ou registro correspondente. Deixe a coluna sem mapeamento para manter os valores existentes intactos.

 

Lista de Field mapping com duas linhas de correspondência entre campo e coluna]

 

Colunas de atributos (opcionais)

Use estas colunas quando o valor não for um campo personalizado:

Campo

Finalidade

Record id column

Coluna com o ID do card ou registro (usado para correspondência; não é gravado na atualização)

Title column

Texto do título

Due date column

Texto de data de vencimento que o Pipefy consiga interpretar

Labels column

IDs de etiquetas separados por vírgulas

Assignees column

IDs ou endereços de e-mail de membros separados por vírgulas

First data row

Somente CSV; padrão 2

 

Passo 5: correspondência, criação e efeitos adicionais

Correspondência de cards ou registros existentes (Match existing cards or records by)

Selecione até três chaves, combinadas com AND:

  • ID do registro ou card: requer Record id column
  • Título: requer Title column
  • Qualquer campo personalizado da lista suspensa

Deixe vazio para sempre criar novos cards ou registros.

Campos com múltiplos valores (etiquetas, responsáveis, checklists, conexões e anexos) não podem ser chaves de correspondência.

Criação quando não houver correspondência (Create when no match is found)

Configuração

Comportamento

Ativado (padrão)

Linhas sem correspondência criam novos itens (somente as colunas mapeadas são preenchidas)

Desativado

Linhas sem correspondência são ignoradas; você deve definir pelo menos uma chave de correspondência

 

Efeitos adicionais na gravação de cards

Estas caixas de seleção aparecem na etapa Batch upsert (os nomes correspondem às opções da API do Pipefy):

Configuração

Efeito

Suppress automations

O Pipefy não executa ações disparadas dentro do pipe para os cards que este lote cria ou atualiza (registros de databases não recebem essas ações via lote, independentemente da opção)

Suppress webhooks

O Pipefy não envia webhooks para essas gravações de cards

 

Com as duas opções ativadas, o limite de linhas aumenta de 5.000 para 10.000 (consulte os limites).

Chave de idempotência (Idempotency key, opcional)

Repetir a mesma chave no mesmo repositório retorna o lote existente em vez de criar um novo. Prefira uma chave exclusiva por execução (por exemplo, inclua o ID da execução do fluxo), para que novas tentativas não reutilizem um lote antigo sem aviso.

 

Passo 6: escolha como aguardar a conclusão

Consulte a visão geral: como aguardar um lote.

Observações específicas de Batch upsert:

Wait for batch completion

Callback URL

Ativado: o conector Pipefy registra um ponto de espera (waitpoint) para a execução; você não pode definir Callback URL na mesma etapa

Oculto (o Pipefy usa a URL do ponto de espera)

Desativado: a etapa termina após a submissão

URL HTTPS opcional para o Pipefy enviar um POST ao concluir

 

Passo 7: use os resultados nas próximas etapas

Imediatamente após a submissão (espera desativada)

Use batchId nas etapas seguintes, por exemplo, em Reprocess batch operation ou Get batch operations.

Após a conclusão (espera ativada)

A etapa retorna:

Saída

Use para

totalCount

Verificar a quantidade de linhas

itemCounts.failed

Decidir se deve reprocessar

resultFile

Baixar o relatório de erros (URL temporária)

hasFailedItems

Criar uma ramificação na integração quando algumas linhas falharem

status

completed, completed_with_errors ou failed

 

Se status for failed, o lote inteiro falhou, não apenas linhas individuais. Verifique o erro no log da execução.

Formato do relatório de erros:

  • Origem CSV: arquivo CSV com row, error e, em seguida, as colunas mapeadas.
  • Origem JSON: array JSON de { "row", "error", "data" }.

Corrija os dados e envie um arquivo corrigido em um novo lote, ou use Reprocess após corrigir as linhas que falharam por motivos transitórios.


 

Execução do fluxo mostrando as saídas de sucesso de Batch upsert

 

Get batch operations: consulte o status

Use quando Wait for batch completion estiver desativado e você precisar do status em uma etapa posterior.

  1. Adicione Pipefy → Get batch operations.
  2. Defina Target e Pipe ou Database (o mesmo repositório do lote).
  3. Opcionalmente, filtre por Status.
  4. Defina Page size (de 1 a 50; padrão 10).
  5. Para a próxima página, passe pageInfo.endCursor em After cursor quando hasNextPage for true.

Cada lote na resposta inclui isFinished quando o status é terminal.

Significado dos status:

Status

Significado

queued

Submetido; o arquivo ainda não foi lido

pending

Linhas carregadas; pronto para processar

processing

Em andamento

completed

Concluído; sem erros nas linhas

completed_with_errors

Concluído; algumas linhas falharam. Verifique resultFile

failed

O lote inteiro falhou

 

Os lotes são ordenados do mais recente para o mais antigo.

 

Etapa Get batch operations configurada para um pipe

 

Saída da etapa Get batch operations

 

Reprocess batch operation: tente novamente as linhas com falha

A ação Reprocess batch operation submete novamente apenas as linhas que falharam em um lote de upsert concluído. Não é necessário reenviar o arquivo.

  1. Adicione Pipefy → Reprocess batch operation.
  2. Defina Batch id com o batchId de Batch upsert (ou de Get batch operations).
  3. Execute a integração depois que o lote original atingir completed_with_errors (ou determinados casos de failed com falhas no nível das linhas).

Regras:

  • Linhas bem-sucedidas e ignoradas nunca são executadas novamente.
  • É seguro chamar a ação quando não houve falhas (o lote permanece inalterado).
  • Não se aplica a Batch export (a exportação não tem reprocessamento).
  • Erros determinísticos (por exemplo, duplicação em um campo único) falharão novamente até que você altere os dados ou o mapeamento.

Após a conclusão do reprocessamento, use Get batch operations ou aguarde um novo upsert com Wait for batch completion se tiver encadeado outra submissão.

 

Reprocess batch operation com Batch id mapeado a partir da etapa anterior

 

Limites e casos não suportados

Limites

Limite

Valor

Linhas (padrão)

5.000

Linhas (ambas as opções de supressão ativadas)

10.000

Tamanho do arquivo

50 MB

Chaves de correspondência

De 1 a 3

Idempotency key

Máximo de 100 caracteres

 

Não suportado via Batch upsert

Caso

Orientação

Campos de conexão

Não mapeie; os valores seriam armazenados como texto simples, não como vínculos

Campos de anexo

Não há envio de arquivo por linha no processamento em lote

Correspondência por etiqueta, responsável ou data de vencimento

Use apenas slugs de campos ou $record_id / $title

XLSX

Exporte primeiro para CSV ou JSON

 

Problemas comuns

Sintoma

O que verificar

Permissão negada

A Service Account é membro do pipe ou da database e tem acesso para criar e atualizar; o pipe correto está selecionado

A etapa é concluída com sucesso, mas nenhum dado mudou

A espera estava desativada e o lote ainda está sendo processado; consulte Get batch operations

Muitas linhas falharam

Baixe resultFile; as mensagens estão em inglês

Os dados foram apagados inesperadamente

Remova mapeamentos acidentais; células mapeadas vazias limpam os campos

O teste fica aguardando com a espera ativada

Comportamento esperado: use uma execução completa ou desative a espera para testar

Erros nas chaves de correspondência

Defina Record id column ou Title column ao usar correspondência por ID ou título

O lote falhou após ser aceito

Arquivo acima do limite de linhas ou cabeçalhos inválidos; consulte o erro do lote por meio de consultas de status

 

Antes de avançar, confirme que você entende

☐ Sei preparar o arquivo e mapear apenas os campos que pretendo alterar.

☐ Sei como a correspondência e as células mapeadas vazias afetam os registros existentes.

☐ Sei acompanhar o lote e revisar as linhas que falharam.