O campo CEP é crítico para conversão
Em formulários de checkout, cadastro e endereço, o campo CEP costuma ser o primeiro de uma sequência longa. Se ele causar fricção — erro confuso, máscara agressiva, validação lenta — o usuário abandona antes de terminar. Pequenas decisões de UX nesse campo têm impacto direto na taxa de conversão.
Máscara: aplicar ou não?
A máscara XXXXX-XXX ajuda visualmente, mas pode causar problemas se mal implementada:
Faça:
- Aplique a máscara só após o usuário começar a digitar
- Aceite o CEP com ou sem hífen na submissão — normalize no backend
- Permita colar (
Ctrl+V) — muita gente copia o CEP de outro lugar Não faça: - Bloquear a tecla backspace ou dificultar a edição
- Rejeitar o formulário por causa do hífen (ou ausência dele)
- Aplicar máscara agressiva que move o cursor de forma inesperada
Quando disparar a busca automática
O momento ideal para consultar a API de CEP e preencher os campos é o evento blur — quando o usuário sai do campo — ou quando o campo atingir 8 dígitos numéricos.
Evite:
- Disparar a busca a cada tecla digitada (requisições desnecessárias)
- Aguardar o clique em "Buscar" (etapa extra desnecessária)
input.addEventListener('input', () => {
const digits = input.value.replace(/\D/g, '');
if (digits.length === 8) buscarEPreencher(digits);
});
Feedback visual durante a busca
O usuário precisa saber que algo está acontecendo. Use um indicador de carregamento discreto no próprio campo ou nos campos que serão preenchidos:
- Ícone de loading ao lado do campo CEP
- Campos de endereço com
opacity: 0.5enquanto aguardam - Mensagem de sucesso discreta quando o preenchimento completar
Mensagens de erro úteis
Evite mensagens genéricas. Seja específico:
| Situação | Mensagem ruim | Mensagem boa |
|---|---|---|
| CEP incompleto | "CEP inválido" | "Digite os 8 dígitos do CEP" |
| CEP não encontrado | "Erro ao buscar CEP" | "CEP não encontrado. Preencha o endereço manualmente." |
| Falha na API | "Erro interno" | "Não foi possível buscar o CEP agora. Preencha os campos abaixo." |
Sempre permita preenchimento manual
O autofill é uma conveniência — nunca uma exigência. Se a API falhar ou o CEP não existir na base, o usuário deve conseguir preencher rua, bairro e cidade manualmente sem impedimentos. Campos preenchidos automaticamente devem ser editáveis. Muitas vezes o complemento ou o nome do bairro virá diferente do que o usuário conhece.
Mobile: atenção ao teclado
Em dispositivos móveis, use inputmode="numeric" no campo CEP para abrir o teclado numérico automaticamente:
<input type="text" name="cep" inputmode="numeric" maxlength="9" placeholder="00000-000">
Evite type="number" — ele remove o hífen e causa comportamentos estranhos em alguns browsers.
Acessibilidade
- Use
<label>associado ao campo viafor/id - Adicione
autocomplete="postal-code"para que gerenciadores de senha e o preenchimento automático do browser funcionem - Anuncie o resultado do autofill para leitores de tela com
aria-live="polite"na região de feedback
Consulte qualquer CEP gratuitamente
Rua, bairro, cidade — todos os dados do endereço em segundos.
Buscar CEP agora