Como corrigir entradas que não salvam no banco de dados no WPForms
O que é as entradas (entries) do WPForms que não salvam?
As entradas (entries) do WPForms são os registros de cada envio de formulário, guardados nas tabelas do banco de dados do WordPress e exibidos em WPForms -> Entries no painel. Quando elas não salvam, o visitante envia o formulário, a notificação por e-mail até chega, mas o painel de Entries fica vazio ou não lista aquele envio. Na grande maioria dos casos não é bug do plugin. O motivo costuma ser a versão Lite (gratuita), que por design só entrega o envio por e-mail e não grava no banco, ou a opção ‘Disable storing entry information in WordPress’ ligada nas configurações do formulário. Outras causas são as tabelas wp_wpforms_entries ausentes ou corrompidas e o usuário do banco sem permissão de escrita. O conserto é confirmar a licença, a opção de armazenamento e a saúde das tabelas.
Como identificar
- O formulário envia normalmente e a notificação por e-mail chega, mas em WPForms -> Entries não aparece nenhum registro do envio.
- O menu WPForms -> Entries existe mas mostra ‘No entries found’ ou uma lista vazia mesmo depois de vários testes de envio.
- Em sites com WPForms Lite (gratuito), não há sequer o submenu de Entries, apenas a mensagem para fazer upgrade e ativar o armazenamento.
- Um formulário específico não grava entradas, enquanto outros formulários do mesmo site continuam salvando normalmente.
- As entradas pararam de ser gravadas depois de uma migração de banco, restauração de backup ou troca de servidor.
- No log de erros do WordPress aparece falha de INSERT do MySQL ou referência a uma tabela wp_wpforms_entries inexistente quando o formulário é enviado.
Como prevenir
- Em sites que precisam do histórico de envios no painel, use um plano pago do WPForms ou mantenha o Lite Connect ligado desde o início, em vez de descobrir a perda depois.
- Ao criar cada formulário, confira que a opção ‘Disable storing entry information in WordPress’ está desmarcada antes de publicar, salvo quando o objetivo é realmente não guardar dados.
- Em migrações e restaurações de backup, exporte e importe o banco inteiro, não só as tabelas do core, para não deixar as tabelas wp_wpforms_entries para trás.
- Depois de qualquer mudança de servidor ou de credenciais de banco, faça um envio de teste e confirme que a entrada aparece em WPForms -> Entries antes de considerar a migração concluída.
Causa
- O site usa WPForms Lite (versão gratuita), que por design entrega cada envio só por e-mail e não grava entradas no banco de dados; o armazenamento de entries exige um plano pago (Basic ou superior) ou o backup via Lite Connect.
- A opção 'Disable storing entry information in WordPress' está marcada no formulário, em Settings -> General -> Advanced, fazendo o WPForms entregar o envio apenas por notificação e descartar a entrada.
- A configuração global 'Disable User Details' ou 'Disable User Cookies' está ligada em WPForms -> Settings -> General -> GDPR, suprimindo dados do visitante e mascarando entradas que parecem vazias no painel.
- Uma das tabelas wp_wpforms_entries, wp_wpforms_entry_meta ou wp_wpforms_entry_fields não foi criada na ativação do plugin (instalação interrompida) ou foi perdida numa migração que exportou só as tabelas do core.
- O usuário MySQL configurado no wp-config.php não tem a permissão de INSERT na tabela de entradas, então o envio falha silenciosamente na hora de gravar e só a notificação por e-mail conclui.
- Um plugin de cache ou de otimização serviu o JavaScript antigo do WPForms e a submissão via AJAX não foi concluída, então o backend nem chega a processar a entrada para gravar.
- O envio caiu como spam: o WPForms marcou a entrada com o filtro anti-spam, reCAPTCHA ou Akismet, e ela está no filtro de spam de Entries em vez da lista principal.
Como resolver
- Confirme a versão e a licença do WPForms: o armazenamento de entradas no banco só existe em planos pagos. Veja em WPForms -> Settings se a licença é Lite (gratuita) ou paga. Se for Lite e você precisa do histórico no painel, ative o Lite Connect para guardar os envios ou faça upgrade.
WPForms -> Settings -> General -> ver License Key e plano Lite sem entries: WPForms -> Settings -> Lite Connect -> Enable Entry Backups - Desligue a opção que impede o armazenamento da entrada: abra o formulário no construtor e confirme que a opção de não armazenar a entrada está desmarcada. Com ela ligada, o WPForms só envia o e-mail e descarta a entrada.
WPForms -> Todos os formulários -> editar formulário Settings -> General -> Advanced -> desmarcar 'Disable storing entry information in WordPress' - Revise as opções de privacidade globais (GDPR): as opções globais de GDPR podem suprimir dados do visitante e fazer a entrada parecer vazia. Se você precisa dos detalhes do envio no painel, desligue essas opções no nível do site.
WPForms -> Settings -> General -> GDPR Enhancements Avaliar desligar 'Disable User Details' e 'Disable User Cookies' - Verifique se as tabelas de entradas existem no banco: abra o phpMyAdmin do seu painel de hospedagem e confirme que as tabelas de entradas do WPForms existem. Se faltar alguma, desative e reative o plugin para recriá-las, ou rode o reparo pelo construtor.
phpMyAdmin -> selecionar o banco do site -> procurar as tabelas wp_wpforms_entries wp_wpforms_entry_meta wp_wpforms_entry_fields - Cheque a permissão de escrita do usuário do banco: se as tabelas existem mas nada é gravado, o usuário do MySQL pode estar sem permissão de INSERT. Confirme as credenciais no wp-config.php e, no painel da hospedagem, garanta que o usuário tem todos os privilégios sobre o banco.
Conferir DB_USER e DB_NAME no wp-config.php GRANT ALL PRIVILEGES ON nome_do_banco.* TO 'usuário_do_banco'@'localhost'; FLUSH PRIVILEGES; - Limpe o cache, cheque o spam e teste um envio: salve o formulário, limpe o cache do site e do CDN e faça um envio de teste numa janela anônima. Depois confira tanto a lista principal quanto o filtro de spam em Entries para ver onde a entrada caiu.
Salvar formulário -> limpar cache do site, do plugin de cache e do CDN Enviar um teste em janela anônima WPForms -> Entries -> abrir o formulário -> conferir 'Spam'
// functions.php do tema filho — DIAGNOSTICO: registra no log se o WordPress
// consegue de fato gravar na tabela de entradas do WPForms apos cada envio.
// Separa 'configurado para nao salvar' de 'falha de escrita no banco'.
// Veja o resultado em wp-content/debug.log (com WP_DEBUG_LOG ativo).
add_action( 'wpforms_process_complete', function ( $fields, $entry, $form_data, $entry_id ) {
if ( empty( $entry_id ) ) {
error_log( 'WPForms: envio do form ' . $form_data['id'] . ' NAO gerou entry_id (armazenamento desligado ou falha de INSERT).' );
return;
}
global $wpdb;
$tabela = $wpdb->prefix . 'wpforms_entries';
$existe = $wpdb->get_var( $wpdb->prepare( "SELECT entry_id FROM {$tabela} WHERE entry_id = %d", $entry_id ) );
error_log( $existe ? 'WPForms: entry ' . $entry_id . ' gravada com sucesso na tabela.' : 'WPForms: entry_id ' . $entry_id . ' retornado mas ausente da tabela ' . $tabela );
}, 10, 4 );














