Passar para o conteúdo principal

Sincronize o carrinho do Fin com sua vitrine Shopify

Como manter seu carrinho Shopify sincronizado quando Fin for Ecommerce adiciona ou altera itens, e corrigir temas que não atualizam automaticamente.

Escrito por Beth-Ann Sher

Quando Fin for Ecommerce adiciona ou altera um item, ele atualiza o carrinho na sua loja. Isso funciona por padrão na maioria dos temas. Se seu carrinho não atualizar, a solução está abaixo.


Temas suportados

Seu carrinho permanece sincronizado automaticamente nos temas Dawn, Horizon, Brooklyn, Flex, Flow, Venue, Sense, Craft, Refresh e nos temas baseados neles. Muitos outros, incluindo Focal, Prestige e Warehouse, também são suportados.

Nota: O suporte depende de como seu tema foi construído, não do nome, então um tema muito personalizado pode ainda precisar do passo abaixo.


Se o carrinho da sua vitrine não atualizar

Se as alterações do Fin nunca chegam ao seu carrinho, ou só aparecem quando o comprador recarrega a página, seu tema atualiza o carrinho de uma forma que o Intercom não consegue detectar. Isso é mais comum em temas personalizados.

Nota: Adicionar este trecho requer acesso ao admin do Shopify e familiaridade básica com edição de código do tema. Se não se sentir confortável editando arquivos do tema, compartilhe este artigo com seu desenvolvedor.

Para corrigir, adicione o trecho abaixo ao seu tema. Ele escuta um evento personalizado do navegador (intercom:cartUpdated) que o Fin dispara sempre que altera o carrinho, então busca novamente o carrinho no Shopify e dispara os eventos que seu tema usa para renderizá-lo novamente.

  1. No admin do Shopify, abra o editor de código do seu tema ativo.

  2. Abra o arquivo principal de layout, geralmente layout/theme.liquid.

  3. Cole o trecho logo antes da tag de fechamento </body> e salve.

  4. Teste pedindo para o Fin adicionar um produto. O carrinho da sua vitrine deve atualizar imediatamente, sem recarregar a página.

document.addEventListener('intercom:cartUpdated', async () => {
  try {
    const res = await fetch(`${window.Shopify.routes.root}cart.js`, {
      headers: { Accept: 'application/json' },
      cache: 'no-store',
    });
    if (!res.ok) return;
 
    const cart = await res.json();
 
    // Replace these with whatever your theme uses to re-render the cart.
    document.dispatchEvent(
      new CustomEvent('cart:live', { detail: cart, bubbles: true })
    );
    document.dispatchEvent(
      new CustomEvent('cart:reload', { bubbles: true })
    );
    document.documentElement.dispatchEvent(
      new CustomEvent('cart:refresh', { bubbles: true })
    );
  } catch {
    // Cart fetch failed. Leave the storefront cart as it is.
  }
});

Altere os três últimos disparos para chamar o que seu tema usa para renderizar o carrinho novamente.

Se o carrinho ainda não atualizar após adicionar o trecho, verifique se os nomes dos eventos personalizados nos três últimos disparos correspondem aos que seu tema escuta. Os arquivos JavaScript ou a documentação do seu tema mostrarão quais eventos ele usa para renderizar o carrinho. Se estiver em dúvida, compartilhe este artigo com seu desenvolvedor.

Respondeu à sua pergunta?