Dicas e Soluções

Carrinho esvazia sozinho no Magento 2? Faça estes 8 testes antes de perder pedidos

Especialista investigando perda de sessão do carrinho em servidores de e-commerce

Carrinho esvazia sozinho no Magento 2? Faça estes 8 testes antes de perder pedidos

Quando o carrinho esvazia no Magento 2, o cliente pode perder todos os produtos ao atualizar a página, entrar no checkout, fazer login ou navegar entre domínios. O sintoma parece simples, mas pode nascer em diferentes camadas: cookies, sessões, Redis, balanceamento de carga, cache, extensões ou configuração incorreta da URL da loja.

Limpar todos os caches raramente esclarece a causa e ainda pode esconder evidências importantes. O caminho mais seguro é reproduzir a falha, observar quando o identificador da sessão muda e verificar se todos os servidores conseguem acessar o mesmo carrinho.

Por que o carrinho esvazia no Magento 2?

Em uma compra como convidado, o Magento precisa associar o navegador a uma sessão e a um carrinho ativo. Se o navegador deixa de enviar o cookie correto, a aplicação cria ou recupera outra sessão. Para o cliente, o resultado é um minicarrinho zerado, mesmo que o registro anterior ainda exista no banco.

O problema também pode acontecer depois do login. Nesse momento, o Magento precisa tratar o carrinho do visitante e o carrinho associado à conta. Uma extensão de checkout, personalização ou integração pode interferir nessa operação.

Antes de alterar qualquer configuração, registre em qual evento os itens desaparecem:

  • ao atualizar a mesma página;
  • ao abrir outra página de produto;
  • na transição do carrinho para o checkout;
  • depois do login ou da criação de conta;
  • ao trocar de HTTP para HTTPS;
  • ao mudar entre domínio principal, subdomínio ou store view;
  • apenas em um navegador, dispositivo ou canal específico.

1. Confirme se o produto sumiu ou se apenas o minicarrinho não atualizou

Adicione um item, abra a página completa do carrinho e compare-a com o minicarrinho. Se a página mantém o produto, mas o contador do cabeçalho aparece zerado, o problema pode estar na atualização das seções privadas do frontend, e não na perda real da sessão.

Abra as ferramentas de desenvolvedor do navegador e procure erros JavaScript e requisições com falha. Temas e módulos podem interromper a atualização do conteúdo privado depois da inclusão de um produto. Faça também o teste em uma janela anônima, sem extensões do navegador.

Se páginas personalizadas estiverem sendo entregues como públicas, revise a estratégia de cache. O roteiro sobre HIT e MISS no Varnish para Magento 2 ajuda a separar páginas cacheáveis de carrinho, checkout e conta do cliente.

2. Observe o cookie antes e depois da falha

Na aba de armazenamento do navegador, acompanhe os cookies da loja antes de adicionar o item e depois de reproduzir o esvaziamento. Verifique se o cookie de sessão desaparece, muda inesperadamente ou deixa de ser enviado em alguma requisição.

Compare domínio, caminho, expiração e marcação de segurança. Uma loja acessada por mais de um host pode apresentar comportamento intermitente quando o cookie é válido para um endereço, mas não para o outro. Políticas de privacidade do navegador e regras de SameSite também merecem atenção quando o checkout depende de redirecionamentos ou conteúdo entre sites.

Não publique capturas contendo valores completos de cookies. Eles podem ser dados sensíveis de autenticação ou sessão.

3. Verifique URLs, domínio e HTTPS

Redirecionamentos entre versões diferentes do endereço são causas frequentes de perda aparente do carrinho. Confira se a navegação começa em um domínio e termina em outro, como uma alternância entre endereço com e sem www, ou entre domínio próprio e subdomínio.

No servidor, consulte as configurações sem modificá-las:

php bin/magento config:show web/unsecure/base_url
php bin/magento config:show web/secure/base_url
php bin/magento config:show web/cookie/cookie_domain
php bin/magento config:show web/cookie/cookie_path

Considere também valores definidos por ambiente ou escopo. Uma configuração vazia não é automaticamente um erro; ela precisa ser interpretada conforme o domínio e a arquitetura da loja. Confirme ainda se proxy, CDN e balanceador informam corretamente ao Magento que a conexão original utiliza HTTPS.

4. Teste o armazenamento das sessões

Consulte o arquivo app/etc/env.php no servidor e identifique o mecanismo configurado para as sessões. Não copie senhas ou credenciais para chamados públicos. Se a loja usa arquivos, confirme permissões, espaço em disco e consistência entre os nós. Se usa Redis, verifique conectividade, memória, expiração e reinicializações.

Com acesso autorizado, informações de diagnóstico do Redis podem ser consultadas com comandos somente de leitura:

redis-cli -h HOST -p PORT -n DB INFO memory
redis-cli -h HOST -p PORT -n DB INFO stats
redis-cli -h HOST -p PORT -n DB INFO keyspace

Substitua os parâmetros pelos valores do ambiente e utilize autenticação de maneira segura. Procure sinais de chaves removidas por pressão de memória, falhas de conexão ou banco lógico diferente do esperado. Não execute FLUSHALL, FLUSHDB ou exclusões em massa: isso pode derrubar sessões, caches e outras aplicações que compartilhem o serviço.

5. Compare os nós do balanceador

Em uma infraestrutura com mais de um servidor de aplicação, todos os nós precisam ler o estado necessário para atender o mesmo cliente. Se cada nó grava sessões localmente, o carrinho pode existir quando a requisição chega ao servidor A e desaparecer quando a próxima chega ao servidor B.

Registre o nó que respondeu a cada requisição por meio dos logs ou de um cabeçalho temporário controlado pela equipe de infraestrutura. Se a falha acompanha a troca de nó, revise o backend compartilhado de sessões e a igualdade das configurações implantadas. Afinidade no balanceador pode reduzir o sintoma, mas não substitui a correção da arquitetura.

6. Analise logs no minuto exato em que o carrinho some

Anote horário, produto, URL, tipo de cliente e sequência de ações. Em seguida, correlacione os registros da aplicação, PHP, servidor web, proxy e armazenamento de sessões. No Magento, comece por:

tail -f var/log/system.log var/log/exception.log

Os arquivos disponíveis variam conforme a configuração. Procure exceções relacionadas a sessão, quote, cookies, checkout, Redis e módulos personalizados. Respostas HTTP 401, 403, 404, 500 ou redirecionamentos em sequência também ajudam a localizar a camada responsável.

Se o desaparecimento ocorrer somente quando o cliente entra no checkout, siga também este diagnóstico de requisições no checkout de convidado.

7. Isole tema, checkout e módulos que alteram o carrinho

Extensões de checkout, promoções, frete, login social, recuperação de carrinho e personalizações de quote podem executar lógica durante a inclusão, atualização ou mesclagem dos itens. O fato de o módulo estar habilitado há meses não elimina essa hipótese: uma mudança de configuração, navegador ou dependência pode revelar um conflito anterior.

Reproduza o cenário em homologação com cópia sanitizada dos dados e a mesma configuração relevante. Compare o comportamento com o tema base e desative módulos suspeitos apenas nesse ambiente, um por vez. Não faça desativações aleatórias em produção, pois isso pode afetar pedidos, banco de dados e contratos de API.

8. Teste separadamente visitante, cliente autenticado e APIs

Monte uma matriz curta de testes: convidado novo, cliente sem carrinho anterior, cliente com carrinho salvo e compra por uma store view diferente. Repita os fluxos em desktop e celular. Se houver frontend headless ou aplicativo, verifique se o identificador do carrinho continua sendo enviado após login, renovação de token e troca de rota.

Quando a falha acontece apenas no login, investigue a mesclagem entre o carrinho do visitante e o carrinho da conta. Se o próprio painel também perde autenticação, cookies e sessões ganham ainda mais relevância; consulte o guia para loop de login no Admin do Magento 2.

O que evitar durante a correção

  • editar registros de quote ou sessão diretamente no banco;
  • apagar o diretório de sessões sem avaliar clientes conectados;
  • limpar todo o Redis para testar uma hipótese;
  • alterar domínio de cookie diretamente em produção;
  • ativar logs excessivos por tempo indeterminado;
  • atribuir a falha ao cache sem reproduzir a perda real do carrinho.

Conclusão

Quando o carrinho esvazia no Magento 2, a investigação deve seguir a jornada do cliente: frontend, cookie, domínio, sessão, infraestrutura e lógica de quote. Descobrir o instante exato em que a identidade da sessão muda costuma ser mais eficaz do que limpar caches ou reindexar toda a loja.

Se a falha for intermitente ou envolver múltiplos servidores, reúna um caso reproduzível, horários e logs antes de alterar o ambiente. A equipe do SuporteMagento.com.br pode ajudar a diagnosticar sessões, Redis, cache, checkout e extensões com foco na causa do problema.

Perguntas frequentes

Por que o carrinho do Magento 2 some ao atualizar a página?

Isso pode ocorrer quando o cookie de sessão não é preservado, o servidor não encontra a sessão anterior ou o frontend exibe conteúdo privado desatualizado. Compare a página completa do carrinho, os cookies e os logs antes de limpar o cache.

Redis pode fazer o carrinho do Magento esvaziar?

Sim. Falhas de conexão, reinicializações, pressão de memória, remoção de chaves ou uso de bancos lógicos diferentes entre servidores podem interromper a continuidade da sessão. O diagnóstico deve usar consultas de leitura e nunca uma limpeza global em produção.

Limpar o cache recupera os produtos do carrinho?

Normalmente não. A limpeza pode corrigir uma apresentação desatualizada, mas não restaura uma sessão perdida. Se o carrinho real ainda existe, é necessário descobrir por que o navegador ou a aplicação deixou de acessá-lo.

Por que o carrinho some somente depois do login?

O problema pode estar na mesclagem do carrinho de convidado com o carrinho da conta, em uma troca de domínio ou sessão, ou em uma extensão que intercepta o login. Reproduza com contas novas e com clientes que já possuam carrinho salvo.