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
- Vá para Configurações → Fluxos de trabalho.
- Clique em + Novo fluxo de trabalho.
- Selecione Webhook como o gatilho.
- Copie a URL do webhook.
Etapa 2: configurar o serviço de formulários
- No seu serviço de formulários, abra o formulário.
- Vá para a seção de webhooks/integrações.
- Cole a URL do webhook do Vecta Desk.
- 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:
| Campo | Valor |
|---|---|
| Objeto | Pessoas |
| Nome | {{code.contact.firstName}} |
| Sobrenome | {{code.contact.lastName}} |
{{code.contact.email}} | |
| Empresa | Pesquisar ou criar com base em {{code.contact.company}} |
Etapa 6: testar e ativar
- Envie uma resposta de teste no seu formulário.
- Verifique a execução do fluxo de trabalho para confirmar que os dados foram capturados.
- Ative o fluxo de trabalho.