Como corrigir o JetBooking que não processa reservas
O que é o JetBooking que não processa a reserva?
O JetBooking gera a funcionalidade de reservas conectando um formulário de booking a uma instância de reserva, que grava cada reserva numa tabela própria do plugin e bloqueia as datas ocupadas no calendário. Quando ele não processa a reserva, o visitante preenche o formulário e clica em reservar, mas a reserva não aparece em JetBooking -> Bookings, as datas continuam livres e, no modo WooCommerce, nenhum pedido é criado. O JetBooking depende do JetEngine ativo: ele usa o tipo de conteúdo do JetEngine para as unidades reserváveis e registra a reserva via uma ação do formulário. Se a instância, a tabela ou o fluxo de pagamento estiverem desalinhados, o envio acontece mas a reserva é descartada em silêncio.
Como identificar
- O formulário mostra a mensagem de sucesso, mas a reserva não aparece em JetBooking -> Bookings.
- As datas reservadas continuam disponíveis no calendário, permitindo reserva dupla na mesma unidade.
- No modo WooCommerce, o cliente reserva mas nenhum pedido é criado em WooCommerce -> Pedidos.
- O console do navegador mostra erro 400 ou 500 na chamada admin-ajax.php ou na REST do formulário ao enviar.
- Aviso do tipo Booking instance not found ou No available units ao submeter, mesmo com datas livres.
Como prevenir
- Mantenha JetEngine e JetBooking atualizados juntos e teste o formulário em staging antes de publicar mudanças na instância
- Após qualquer restore de banco, confirme que a tabela de reservas do plugin ainda existe antes de reabrir as reservas
- Faça uma reserva de teste ponta a ponta, incluindo o pagamento, sempre que trocar o gateway ou o status que confirma o booking
Causa
- A instância de booking em JetBooking -> Settings -> Booking aponta para um tipo de post ou coluna de preço diferente da unidade usada no formulário, então a reserva não casa com nenhuma unidade.
- A tabela de reservas do plugin não foi criada, porque a instalação não rodou ou foi apagada num restore de banco, e o JetBooking não tem onde gravar a reserva.
- O campo de check-in ou check-out do formulário não está mapeado para o campo de datas da instância, então o intervalo chega vazio e a reserva é rejeitada.
- No modo WooCommerce, o pedido fica em status pendente ou cancelado porque o gateway de pagamento não conclui, e o JetBooking só grava a reserva quando o pedido vira processando ou concluído.
- Uma regra de WAF ou mod_security bloqueia a requisição POST de envio do formulário para admin-ajax.php, cortando a ação que cria a reserva.
- O JetEngine está desatualizado ou inativo e a ação Apply Booking do formulário não é registrada, deixando o envio sem efeito.
Como resolver
- Confirme JetEngine ativo e atualizado: o JetBooking não funciona sem o JetEngine na versão compatível. Atualize os dois pela tela de plugins e confirme que a instância de booking carrega sem aviso.
Plugins -> Plugins instalados -> atualizar JetEngine e JetBooking wp plugin list --status=active | grep -i jet - Reinstale a tabela de reservas: verifique se a tabela do plugin existe e recrie-a pela própria tela do JetBooking, que tem o botão de instalar a base de dados. Sem a tabela, nenhuma reserva é gravada.
JetBooking -> Settings -> Database -> Install booking database tables wp db query "SHOW TABLES LIKE '%jet_apartment_bookings%';" - Realinhe a instância de booking: em JetBooking -> Settings -> Booking, garanta que o tipo de post da unidade, a coluna de preço e os campos de status batem exatamente com a unidade usada no formulário.
JetBooking -> Settings -> Booking -> Related Post Type JetBooking -> Settings -> Booking -> Price Field / Status Field - Mapeie os campos de data no formulário: no formulário, confirme que os campos de check-in e check-out estão ligados à ação de booking e que a unidade reservável é passada corretamente para a ação.
Editar formulário -> ação Apply Booking -> Fields Map -> check-in / check-out / unit - Acerte o fluxo WooCommerce: se a instância usa WooCommerce, teste um pedido até o fim e confirme que ao virar processando ou concluído a reserva é gravada. Ajuste o status que dispara a reserva se o seu gateway usa outro fluxo.
WooCommerce -> Pedidos -> mudar status para Processando JetBooking -> Settings -> WooCommerce -> Order status to confirm booking - Descarte WAF e cheque o log: abra o console do navegador ao enviar e veja o status da requisição. Erro 403 indica WAF cortando o POST do formulário, e nesse caso peça ao host uma exceção para a rota de envio.
DevTools -> Network -> filtrar admin-ajax.php ao enviar o formulário define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true );
<?php
// Loga no debug.log o disparo da reserva do JetBooking, p/ provar se a acao roda.
// Cole em functions.php do tema-filho. Veja o resultado em wp-content/debug.log.
add_action( 'jet-booking/db/after-insert-booking', function ( $booking_id, $booking ) {
error_log( '[JetBooking] reserva gravada id=' . $booking_id
. ' unidade=' . ( $booking['apartment_id'] ?? 'n/d' )
. ' check-in=' . ( $booking['check_in_date'] ?? 'n/d' )
. ' check-out=' . ( $booking['check_out_date'] ?? 'n/d' ) );
}, 10, 2 );














