Para validar CPF de leads diretamente no HubSpot, crie um workflow baseado em contatos com uma custom code action em Node.js que chama a API da CPFHub.io e grava os dados retornados — nome, data de nascimento e gênero — nas propriedades customizadas do contato. O processo é automatizado e não requer intervenção manual após a configuração.
Introdução
O HubSpot é uma das plataformas de CRM e automação de marketing mais completas do mercado. Para empresas brasileiras que usam HubSpot, validar o CPF de leads e contatos diretamente nos workflows automatiza processos de qualificação, compliance e prevenção de fraudes. A documentação oficial do HubSpot detalha todas as opções disponíveis para atualizar propriedades de contato via API — incluindo o endpoint PATCH usado no exemplo de webhook deste artigo.
1. Pré-requisitos
-
HubSpot com plano Professional ou Enterprise (necessário para custom code em workflows).
-
Propriedades customizadas de contato criadas no HubSpot para CPF e dados de validação.
-
Uma conta na CPFHub.io com a API key gerada no painel.
2. Crie as propriedades customizadas
No HubSpot, acesse Settings > Properties e crie as seguintes propriedades de contato:
-
cpf_numero — Single-line text — CPF do contato.
-
cpf_nome_validado — Single-line text — Nome retornado pela validação.
-
cpf_genero — Dropdown select — Masculino / Feminino.
-
cpf_data_nascimento — Single-line text — Data de nascimento retornada.
-
cpf_status — Dropdown select — Pendente / Validado / Erro.
3. Crie o workflow
Em Automation > Workflows, crie um novo workflow baseado em contatos:
-
Trigger — "Contact property value is known" para a propriedade
cpf_numero. Isso dispara o workflow quando um CPF é preenchido. -
Filtro adicional —
cpf_statusis "Pendente" ou is unknown (para evitar reprocessamento).
4. Adicione a custom code action
No workflow, adicione uma ação do tipo Custom code. Selecione Node.js 18 como runtime e insira o seguinte código:
const axios = require('axios');
exports.main = async (event, callback) => {
const cpf = event.inputFields['cpf_numero']?.replace(/\D/g, '');
if (!cpf || cpf.length !== 11) {
callback({
outputFields: {
cpf_status: 'Erro',
cpf_nome_validado: '',
cpf_data_nascimento: '',
cpf_genero: ''
}
});
return;
}
try {
const response = await axios.get(`https://api.cpfhub.io/cpf/${cpf}`, {
headers: {
'x-api-key': process.env.CPFHUB_API_KEY || 'SUA_CHAVE_DE_API',
'Accept': 'application/json'
},
timeout: 5000
});
const dados = response.data;
if (dados.success) {
callback({
outputFields: {
cpf_status: 'Validado',
cpf_nome_validado: dados.data.name,
cpf_data_nascimento: dados.data.birthDate,
cpf_genero: dados.data.gender === 'M' ? 'Masculino' : 'Feminino'
}
});
} else {
callback({
outputFields: {
cpf_status: 'Erro',
cpf_nome_validado: '',
cpf_data_nascimento: '',
cpf_genero: ''
}
});
}
} catch (error) {
callback({
outputFields: {
cpf_status: 'Erro',
cpf_nome_validado: '',
cpf_data_nascimento: '',
cpf_genero: ''
}
});
}
};
Configuração dos campos
Na aba Inputs da custom code action, mapeie:
cpf_numero— propriedade de contatocpf_numero.
Na aba Outputs, defina:
cpf_status— Stringcpf_nome_validado— Stringcpf_data_nascimento— Stringcpf_genero— String
5. Atualize as propriedades do contato
Após a custom code action, adicione ações de Set contact property para gravar os outputs:
cpf_status= outputcpf_statuscpf_nome_validado= outputcpf_nome_validadocpf_data_nascimento= outputcpf_data_nascimentocpf_genero= outputcpf_genero
6. Exemplo de resposta da API
Quando a validação é bem-sucedida, a API da CPFHub.io retorna o seguinte JSON, que o código da custom code action mapeia diretamente para as propriedades do contato no HubSpot:
{
"success": true,
"data": {
"cpf": "12345678900",
"name": "João da Silva",
"nameUpper": "JOÃO DA SILVA",
"gender": "M",
"birthDate": "15/06/1990",
"day": 15,
"month": 6,
"year": 1990
}
}
7. Alternativa com webhook externo
Se seu plano HubSpot não suporta custom code, use a ação Webhook do workflow:
-
Method — POST
-
URL — Endpoint do seu servidor intermediário.
-
Body — Envie o CPF do contato.
O servidor recebe o webhook, consulta a CPFHub.io e atualiza o contato via API do HubSpot:
const express = require('express');
const app = express();
app.use(express.json());
app.post('/webhook/hubspot', async (req, res) => {
const { contactId, cpf } = req.body;
const cpfLimpo = cpf.replace(/\D/g, '');
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), 5000);
try {
const cpfResponse = await fetch(`https://api.cpfhub.io/cpf/${cpfLimpo}`, {
method: 'GET',
headers: {
'x-api-key': process.env.CPFHUB_API_KEY,
'Accept': 'application/json'
},
signal: controller.signal
});
clearTimeout(timeoutId);
const dados = await cpfResponse.json();
if (dados.success) {
await fetch(`https://api.hubapi.com/crm/v3/objects/contacts/${contactId}`, {
method: 'PATCH',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${process.env.HUBSPOT_TOKEN}`
},
body: JSON.stringify({
properties: {
cpf_nome_validado: dados.data.name,
cpf_status: 'Validado',
cpf_data_nascimento: dados.data.birthDate
}
})
});
}
res.json({ success: true });
} catch (error) {
clearTimeout(timeoutId);
res.status(500).json({ error: error.message });
}
});
app.listen(3000);
8. Boas práticas
-
Timeout — O exemplo usa
timeout: 5000no axios para evitar que a custom code action exceda o limite de execução do HubSpot. A API CPFHub.io responde em ~900ms, mas o timeout protege contra instabilidades de rede. -
Secrets — Armazene a chave de API da CPFHub.io nos secrets do workflow (disponível em custom code actions).
-
Volume — Em workflows com alto volume, monitore o consumo de cota. Para mais de 50 validações por mês, o plano Pro (1.000 consultas/mês por R$149) é mais econômico do que pagar R$0,15 por consulta excedente a partir da 51ª.
-
Branching — Adicione uma branch no workflow após a validação: se
cpf_status= "Validado", continue o pipeline; se "Erro", envie notificação ao time. -
Logs — Use o histórico de execução do workflow para auditar consultas realizadas.
Perguntas frequentes
Qual plano do HubSpot é necessário para usar custom code actions em workflows?
É necessário o plano Professional ou Enterprise do HubSpot. Planos Starter não incluem a ação de custom code. Se sua empresa usa um plano mais básico, a alternativa é o webhook externo descrito na seção 7, que funciona com qualquer plano que suporte webhooks.
A API CPFHub.io bloqueia quando o limite de consultas gratuitas é atingido?
Não. Ao atingir as 50 consultas mensais do plano gratuito, a API continua respondendo normalmente e cobra R$0,15 por consulta adicional. Não há bloqueio nem interrupção do workflow — o HubSpot nunca recebe um erro por limite de cota.
Como evitar que um contato passe pelo workflow de validação mais de uma vez?
Adicione o filtro cpf_status is "Pendente" ou is unknown como condição de entrada no workflow. Após a validação, o campo é atualizado para "Validado" ou "Erro", impedindo que o contato seja processado novamente em execuções futuras.
É possível usar a validação de CPF no HubSpot para qualificar leads automaticamente?
Sim. Após a validação, adicione uma branch no workflow: leads com cpf_status = "Validado" recebem uma pontuação maior no lead scoring ou são movidos automaticamente para o pipeline de vendas. Leads com status "Erro" podem ser encaminhados para revisão manual ou receber um e-mail solicitando os dados corretos.
Conclusão
Integrar a validação de CPF da CPFHub.io no HubSpot via workflows customizados transforma um processo manual de conferência de dados em um fluxo automático: assim que o lead preenche o CPF, o workflow dispara, consulta a API e grava os dados validados nas propriedades do contato — sem intervenção humana.
O resultado prático é um pipeline mais limpo, com leads qualificados por dados verificados, e menos retrabalho do time de vendas com contatos incorretos ou fraudulentos. Comece agora com o plano gratuito: crie sua conta em cpfhub.io e tenha 50 consultas mensais disponíveis, sem cartão de crédito, para testar a integração com seu workflow HubSpot.
CPFHub.io
Pronto para integrar a API?
50 consultas gratuitas para testar agora. Sem cartão de crédito. Acesso imediato à documentação.
Sobre a redação
Redação CPFHub.io
Time editorial especializado em APIs de CPF, identidade digital e compliance no mercado brasileiro. Produzimos guias técnicos, análises regulatórias e tutoriais sobre LGPD e KYC para desenvolvedores e líderes de produto.



