PowerApps é a plataforma low-code da Microsoft para criar aplicações empresariais sem (ou com pouco) código, integrada ao ecossistema Microsoft 365. No contexto brasileiro, equipes de negócio usam o PowerApps para cadastros, atendimento ao cliente e processos de aprovação — e muitas dessas aplicações precisam validar CPF. Isso é possível com Custom Connectors que se conectam a APIs externas como a CPFHub.io, permitindo validação em tempo real com latência de ~300ms diretamente dentro do Power Fx.
Criando o Custom Connector
O Custom Connector é o componente que permite ao PowerApps se comunicar com a API da CPFHub.io. Ele define o endpoint, a autenticação e o formato da resposta.
Passo 1 — Acessar o criador de Custom Connectors
- Acesse make.powerapps.com.
- No menu lateral, vá em Dataverse > Custom Connectors.
- Clique em New custom connector > Create from blank.
- Nomeie como "CPFHub API".
Passo 2 — Configuração geral
- Host: api.cpfhub.io
- Base URL: /
- Scheme: HTTPS
Passo 3 — Autenticação
- Authentication type: API Key
- Parameter label: API Key
- Parameter name: x-api-key
- Parameter location: Header
Passo 4 — Definir a ação
Crie uma nova ação chamada "ConsultarCPF":
- Operation ID: ConsultarCPF
- Description: Consulta dados cadastrais de um CPF
- Visibility: important
Configure a requisição:
- Method: GET
- URL: /cpf/{cpfNumero}
Parâmetros:
| Nome | Tipo | Obrigatório | Localização |
|---|---|---|---|
| cpfNumero | string | Sim | Path |
Passo 5 — Definir resposta
Importe o seguinte schema de resposta:
{
"success": true,
"data": {
"cpf": "12345678901",
"name": "Joao da Silva",
"nameUpper": "JOAO DA SILVA",
"gender": "M",
"birthDate": "15/06/1990",
"day": 15,
"month": 6,
"year": 1990
}
}
Salve e teste o conector diretamente na interface de criação.
Construindo o app de validação
Com o Custom Connector pronto, crie o app no PowerApps:
Tela de consulta
Adicione os seguintes controles à tela:
- TextInput (txtCPF) — Campo de entrada do CPF.
- Button (btnConsultar) — Botão para disparar a consulta.
- Label (lblNome) — Exibe o nome retornado.
- Label (lblGenero) — Exibe o gênero.
- Label (lblNascimento) — Exibe a data de nascimento.
- Label (lblStatus) — Exibe status da consulta.
- Label (lblErro) — Exibe mensagens de erro.
Fórmulas Power Fx
Configure a propriedade OnSelect do botão de consulta:
// btnConsultar.OnSelect
UpdateContext({varCarregando: true, varErro: "", varResultado: Blank()});
Set(
varResultado,
CPFHubAPI.ConsultarCPF(
Substitute(
Substitute(
Substitute(txtCPF.Text, ".", ""),
"-", ""
),
" ", ""
)
)
);
If(
varResultado.success,
UpdateContext({varCarregando: false}),
UpdateContext({
varCarregando: false,
varErro: "CPF não encontrado na base de dados."
})
);
Configure as propriedades dos labels:
// lblNome.Text
If(
!IsBlank(varResultado) And varResultado.success,
varResultado.data.name,
""
)
// lblGenero.Text
If(
!IsBlank(varResultado) And varResultado.success,
If(varResultado.data.gender = "M", "Masculino", "Feminino"),
""
)
// lblNascimento.Text
If(
!IsBlank(varResultado) And varResultado.success,
varResultado.data.birthDate,
""
)
// lblStatus.Text
If(
varCarregando,
"Consultando...",
If(
!IsBlank(varResultado) And varResultado.success,
"CPF validado com sucesso",
""
)
)
// lblErro.Text
varErro
// lblErro.Visible
!IsBlank(varErro)
Validação local do CPF antes da consulta
Adicione validação de formato antes de chamar a API para economizar consultas:
// btnConsultar.OnSelect (versão com validação)
UpdateContext({varCarregando: false, varErro: "", varResultado: Blank()});
Set(
varCPFLimpo,
Substitute(
Substitute(
Substitute(txtCPF.Text, ".", ""),
"-", ""
),
" ", ""
)
);
If(
Len(varCPFLimpo) <> 11,
UpdateContext({varErro: "CPF deve conter 11 dígitos."}),
// CPF com todos os dígitos iguais
If(
Len(Distinct(Split(varCPFLimpo, ""), Result).Result) = 1,
UpdateContext({varErro: "CPF inválido."}),
// Consultar API
UpdateContext({varCarregando: true});
Set(
varResultado,
CPFHubAPI.ConsultarCPF(varCPFLimpo)
);
If(
varResultado.success,
UpdateContext({varCarregando: false}),
UpdateContext({
varCarregando: false,
varErro: "CPF não encontrado."
})
)
)
);
Integração com SharePoint
Salve os resultados de validação em uma lista SharePoint para histórico:
// Após validação bem-sucedida, adicionar ao SharePoint
If(
varResultado.success,
Patch(
'Validacoes CPF', // Nome da lista SharePoint
Defaults('Validacoes CPF'),
{
Title: varCPFLimpo,
NomeValidado: varResultado.data.name,
Genero: varResultado.data.gender,
DataNascimento: varResultado.data.birthDate,
ValidadoEm: Now(),
ValidadoPor: User().Email,
Status: "Validado"
}
)
);
Integração com Dataverse
Para organizações que utilizam Dataverse, crie uma tabela customizada:
| Coluna | Tipo | Descrição |
|---|---|---|
| CPF | Texto (11) | Número do CPF |
| Nome Validado | Texto (200) | Nome retornado pela API |
| Genero | Choice | Masculino / Feminino |
| Data Nascimento | Texto (10) | Data no formato DD/MM/AAAA |
| Status | Choice | Validado / Inválido / Erro |
| Validado Em | Date/Time | Timestamp da validação |
| Validado Por | Lookup (User) | Usuário que realizou |
A fórmula para salvar no Dataverse é similar à do SharePoint, usando Patch().
Fluxo Power Automate integrado
Para operações em lote ou automações mais complexas, conecte o PowerApp a um fluxo Power Automate:
// No PowerApp, chamar o fluxo
Set(
varResultadoFluxo,
FluxoValidarCPF.Run(varCPFLimpo)
);
O fluxo Power Automate pode incluir lógica adicional como:
- Verificar cache antes de chamar a API.
- Registrar auditoria detalhada.
- Enviar notificações condicionais.
- Processar lotes de CPFs de uma lista.
Boas práticas para PowerApps corporativo
- Delegation — Para grandes volumes de dados, use Dataverse em vez de SharePoint para evitar limites de delegação.
- Conexões compartilhadas — Configure o Custom Connector com a chave de API em nível de organização, não de usuário individual.
- Tratamento offline — PowerApps suporta modo offline. Armazene tentativas de validação localmente e sincronize quando a conexão retornar.
- Acessibilidade — Use labels descritivos e contraste adequado para conformidade com padrões de acessibilidade corporativa.
A documentação oficial do Microsoft PowerApps traz guias detalhados sobre Custom Connectors, incluindo segurança de autenticação e melhores práticas para ambientes corporativos.
Custos e licenciamento
| Componente | Custo |
|---|---|
| PowerApps por usuário | ~$20/usuário/mês |
| Custom Connectors | Incluso no plano Premium |
| CPFHub.io Gratuito | R$0 (50 consultas/mês) |
| CPFHub.io Pro | R$149 (1.000 consultas) |
Perguntas frequentes
O Custom Connector do PowerApps suporta autenticação via header?
Sim. Durante a criação do Custom Connector, selecione "API Key" como tipo de autenticação e configure o nome do parâmetro como x-api-key na localização "Header". Assim, o PowerApps injeta automaticamente sua chave da CPFHub.io em cada chamada, sem expô-la nas fórmulas Power Fx.
Como o rate limit da API afeta apps PowerApps em uso simultâneo?
A CPFHub.io impõe um limite de 1 requisição a cada 2 segundos no Plano Grátis e 1 req/s no Plano Pro — retornando HTTP 429 quando excedido. Para apps corporativos com múltiplos usuários simultâneos, o uso de cache no Power Automate (armazenando resultados no Dataverse por período de 24h) reduz drasticamente o número de chamadas à API.
O que acontece se minha cota mensal da CPFHub.io for atingida dentro do PowerApps?
A CPFHub.io não bloqueia as consultas ao atingir a cota — ela cobra R$0,15 por cada requisição excedente. Para ambientes corporativos com volume previsível, o Plano Pro (1.000 consultas/mês por R$149) costuma ser suficiente. Para picos sazonais, o modelo de excedente sob demanda garante continuidade sem interrupção do app.
É possível validar CPF em lote dentro do PowerApps via Power Automate?
Sim. Crie um fluxo no Power Automate que percorre uma lista SharePoint ou tabela Dataverse com CPFs pendentes e chama a CPFHub.io para cada um. O fluxo pode ser agendado (ex.: toda madrugada) ou disparado por botão no app. Respeite o intervalo entre requisições para não receber HTTP 429.
Conclusão
PowerApps democratiza a criação de apps empresariais de validação de CPF, permitindo que equipes de negócio construam soluções sem depender de desenvolvedores. O Custom Connector da CPFHub.io se integra nativamente ao ecossistema Microsoft — SharePoint, Dataverse e Power Automate — com latência de ~300ms por consulta e sem interrupção ao atingir a cota mensal.
Crie sua conta gratuitamente em cpfhub.io, gere sua API key e conecte ao PowerApps em menos de 30 minutos. O plano gratuito oferece 50 consultas/mês sem cartão — suficiente para validar a integração antes de levar ao ambiente de produção.
CPFHub.io
Pronto para integrar a API?
50 consultas gratuitas para testar agora. Sem cartão de crédito. Acesso imediato à documentação.




