Manual do usuárioFluxos de trabalhoImportar envios de formulários

Importar envios de formulários para o Vecta Desk

Trate a carga útil de webhook de uma ferramenta de formulários externa para criar leads a partir de envios de formulários.

Para a configuração padrão de webhook, consulte Configurar um gatilho de webhook. Este artigo aborda o tratamento específico necessário quando o serviço de formulários envia uma estrutura de carga útil personalizada.

Etapa 1: criar um fluxo de trabalho de webhook

  1. Vá para Configurações → Fluxos de trabalho.
  2. Clique em + Novo fluxo de trabalho.
  3. Selecione Webhook como o gatilho.
  4. Copie a URL do webhook.

Etapa 2: configurar o serviço de formulários

  1. No seu serviço de formulários, abra o formulário.
  2. Vá para a seção de webhooks/integrações.
  3. Cole a URL do webhook do Vecta Desk.
  4. Salve.

Etapa 3: entender a carga útil

Muitos serviços de formulários enviam uma estrutura JSON aninhada. Aqui está um exemplo simplificado:

{
  "event_type": "form_response",
  "form_response": {
    "form_id": "abc123",
    "submitted_at": "2025-01-15T10:30:00Z",
    "answers": [
      {
        "text": "Joana",
        "type": "text",
        "field": { "id": "field1", "type": "short_text", "title": "Nome" }
      },
      {
        "text": "Andrade",
        "type": "text",
        "field": { "id": "field2", "type": "short_text", "title": "Sobrenome" }
      },
      {
        "text": "Comércio Andrade",
        "type": "text",
        "field": { "id": "field3", "type": "short_text", "title": "Empresa" }
      },
      {
        "email": "joana@andrade.com.br",
        "type": "email",
        "field": { "id": "field4", "type": "email", "title": "E-mail" }
      },
      {
        "type": "choice",
        "field": { "id": "field5", "type": "dropdown", "title": "Tamanho da equipe" },
        "choice": { "label": "10-50" }
      }
    ]
  }
}

Pontos importantes a observar:

  • Os dados do formulário estão aninhados em form_response.
  • As respostas são retornadas como um array, não como campos nomeados.
  • Cada resposta inclui o tipo e o título do campo para referência.

Etapa 4: extrair campos do array de respostas

Como answers é um array, você só pode selecionar o array inteiro nas etapas subsequentes — não campos individuais. Adicione uma ação de Código para extrair os campos necessários:

export const main = async (params: {
  answers: any;
}): Promise<object> => {
  const { answers } = params;
 
  // Lida com entrada que pode vir como string ou array
  const answersFormatted = typeof answers === "string"
    ? JSON.parse(answers)
    : answers;
 
  // Extrai campos por posição ou encontrando o tipo do campo
  const firstName = answersFormatted[0]?.text || "";
  const lastName = answersFormatted[1]?.text || "";
  const company = answersFormatted[2]?.text || "";
  const email = answersFormatted.find(a => a.type === "email")?.email || "";
  const teamSize = answersFormatted.find(a => a.type === "choice")?.choice?.label || "";
 
  return {
    contact: {
      firstName,
      lastName,
      company,
      email,
      teamSize
    }
  };
};

Nas etapas subsequentes, agora você pode selecionar campos individuais como contact.firstName e contact.email no seletor de variáveis.

Para mais detalhes sobre como lidar com arrays, consulte Tratar arrays em ações de código.

Etapa 5: criar o registro

Adicione a ação Criar registro:

CampoValor
ObjetoPessoas
Nome{{code.contact.firstName}}
Sobrenome{{code.contact.lastName}}
E-mail{{code.contact.email}}
EmpresaPesquisar ou criar com base em {{code.contact.company}}

Etapa 6: testar e ativar

  1. Envie uma resposta de teste no seu formulário.
  2. Verifique a execução do fluxo de trabalho para confirmar que os dados foram capturados.
  3. Ative o fluxo de trabalho.

Relacionados