Utm

Pessoal não consigo de maneira nenhuma colocar UTM na vtex. alguem pode me explica ou mandar link de algum video ajudando. já pesquisei bastante eu não achei nada

Olá @Gomes1

Num geral, basta colocar ?utm_source=nomedautm na URL. Testando do meu lado, isso foi suficiente para que a UTM aparecesse na lista de tags no Checkout.

Minha recomendação seria validar nossa documentação sobre UTMS e utilizar a ferramenta Cartman no checkout (dentro do ambiente myvtex) para validar que as tags estão sendo adicionadas.

Se mesmo assim elas continuam não aparecendo, poderia compartilhar mais detalhes de sua dúvida?

Se a UTM não funciona no site é porque o layout está com problema.
Qual a URL da loja?

O seu site é VTEX.CMS.
Você precisa adicionar as utms no addtocart.

A navegação da VTEX grava as utms no cookie IPS.
Quando você usa um botão de adicionar ao carrinho, sendo o controle da VTEX, ele pega o IPS e coloca no orderForm do pedido. Porém, como o seu caso a inclusão no carrinho não é por controle VTEX e sim pelo vtexjs.checkout.addtocart(), vc precisa passar essas infos do IPS junto para que sejam adicionadas no carrinho.

Hoje, você está enviando isso:

const item = {
    id: config.skuSelected,
    quantity: document.querySelector('.qtd.pull-left').value,
    seller: '1'
};
vtexjs.checkout.addToCart([item], null, 1)
    .done(function(orderForm) {
        config.containerCartElement.classList.add('active');
    });

Você teria que enviar algo como isso:

addToCart: function (items, salesChannel) {
  salesChannel = salesChannel || jssalesChannel;
  items = (Array.isArray(items)) ? items : [items];
  return vtexjs.checkout.getOrderForm().then(function (orderForm) {
    return vtexjs.checkout.addToCart(items, null, salesChannel).done(function (orderForm) {
      let utms = xp_geral.Cookie.Get("IPS")
      let isici = xp_geral.Cookie.Get("ISICI")
      if (utms != "" || isici != "") {
        let marketingData = orderForm.marketingData || {};
        utms = utms.split("&");
        for (i = 0; i < utms.length; i++) {
          var opcao = utms[i].split("=");
          //formato para last-click: opcao[1] || marketingData.utmSource
          switch (opcao[0]) {
            case "Parceiro":
              marketingData.utmSource = (opcao[1] || marketingData.utmSource);
              break;
            case "Campanha":
              marketingData.utmCampaign = (opcao[1] || marketingData.utmCampaign);
              break;
            case "Midia":
              marketingData.utmMedium = (opcao[1] || marketingData.utmMedium);
              break;
            default:
              console.warn("xpFuncoes.checkout.methods.addToCart", "marketingData: utms => " + opcao[0] + "=" + opcao[1] + ", não reconhecido.");
              break;
          }
        }

        isici = isici.split("&");
        for (i = 0; i < isici.length; i++) {
          var opcao = isici[i].split("=");
          switch (opcao[0]) {
            case "InternalPart":
              marketingData.utmiPart = (marketingData.utmiPart || opcao[1]);
              break;
            case "InternalCampaign":
              marketingData.utmiCampaign = (marketingData.utmiCampaign || opcao[1]);
              break;
            case "InternalPage":
              marketingData.utmiPage = (marketingData.utmiPage || opcao[1]);
              break;
            default:
              console.warn("xpFuncoes.checkout.methods.addToCart", "marketingData: isici => " + opcao[0] + "=" + opcao[1] + ", não reconhecido.");
              break;
          }
        }
        return vtexjs.checkout.sendAttachment('marketingData', marketingData);
      }
    });
  });
},
1 Like

Fabio, uma duvida…

Eu consigo gravar as utms sem ser no ambiente de checkout?

Por exemplo: mando um email que o link manda pra home e está com utm (Keep Running Brasil). Abro o link e as utms estão lá…

No momento que eu clico em qualquer outra pagina (por exemplo nos mais vendidos, uma categoria especifica), a utm se perde e não sei mais se a venda veio desse email caso a pessoa chegue a finalizar a compra…