🎉 USE O CUPOM DESCONTO.FULL | 20% OFF acima de R$ 50,00

Como corrigir o JetBooking que não processa reservas

Time Full Services Time Full Services
Tipo Page Builders
Nome do erro JetBooking não processa reservas EN: JetBooking not processing reservations
Severidade Grave
Descrição Quando o JetBooking não processa a reserva, o formulário de booking é enviado mas nenhuma reserva é gravada na tabela e as datas não ficam bloqueadas. A causa quase sempre é a instância de booking mal configurada, a tabela do plugin não instalada, ou o pedido WooCommerce que nunca chega a um status pago.

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.
Antes de começar: Antes de recriar a tabela de reservas ou rodar comandos de banco, faça um backup completo do banco de dados. Reinstalar a base do JetBooking sobre reservas existentes pode apagar registros se a tabela estiver corrompida.

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

  1. 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
  2. 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%';"
  3. 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
  4. 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
  5. 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
  6. 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
<?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 );

Perguntas frequentes

Por que o formulário diz sucesso mas a reserva não aparece?
A ação de booking não casou a submissão com uma unidade reservável. Em geral a instância aponta para um tipo de post diferente do usado no formulário, ou os campos de check-in e check-out não estão mapeados. Realinhe a instância e o mapeamento de campos.
O JetBooking funciona sem o JetEngine?
Não. O JetBooking depende do JetEngine ativo e atualizado, porque usa o tipo de conteúdo do JetEngine para as unidades reserváveis e registra a ação Apply Booking do formulário. Com o JetEngine inativo, o envio do formulário não cria reserva.
As datas não ficam bloqueadas após reservar. Por quê?
A reserva não foi gravada na tabela do plugin, então o calendário não vê o intervalo como ocupado. Verifique se a tabela de reservas existe e se a reserva aparece em JetBooking -> Bookings. Sem o registro, o sistema permite reserva dupla.
No modo WooCommerce a reserva não é criada. O que falta?
No modo WooCommerce a reserva só é confirmada quando o pedido atinge o status configurado, normalmente processando ou concluído. Se o gateway deixa o pedido pendente, a reserva não grava. Ajuste o status que confirma o booking nas configurações.
Como sei se a tabela de reservas existe no banco?
Em JetBooking -> Settings há a opção de instalar as tabelas de banco do plugin, que recria a estrutura se ela sumiu. Você também pode listar a tabela no banco pelo nome que contém jet_apartment_bookings para confirmar que ela está presente.
Um firewall pode impedir o JetBooking de reservar?
Pode. Uma regra de WAF ou mod_security às vezes interpreta o POST do formulário como ataque e retorna 403 na chamada admin-ajax.php, cortando a ação que cria a reserva. Confirme no console do navegador e peça ao host uma exceção para a rota de envio.
O que muda entre o modo manual e o modo WooCommerce?
No modo manual o JetBooking grava a reserva direto ao enviar o formulário. No modo WooCommerce ele cria um pedido e só confirma a reserva quando o pedido chega ao status pago. Diagnósticos diferentes: no manual olhe a instância e a tabela, no WooCommerce olhe o status do pedido.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes