UTMs de marketing estão sendo passadas para o checkout

Olá bom dia,

através deste link: DOC VTEX

verifiquei que o checkout de uma loja que trabalho não está carregando marketingData (utm_source, utm_campaign e utm_medium)

O checkout foi personalizado, para ajudar o arquivo foi minificado e a empresa não possui o arquivo original.

Acredito que devo configurar esta parte pra isso…

addToCartFromShelf(t, e) {
            const n = this, r = [{id: t, quantity: e, seller: 1}];
            $(".loader-overlay").fadeIn(), vtexjs.checkout.getOrderForm().then(t => {
                vtexjs.checkout.addToCart(r, null, 2).done(t => {
                    console.log("added"), n.showItemsNotInCart()
                }).fail(t => {
                    $(".loader-overlay").fadeOut(), console.log("error")
                })
            })
        },

Alguém pode me mostrar como posso adicionar marketingData?

sei que tenho que usar a função vtexjs.checkout.sendAttachment mas estou em dúvida como coloca-la na função acima.

Desde já agradeço a atenção!

Olá @rsantos

Para você adicionar o UTM pode seguir o exemplo desta publicação feita aqui no community.

vtexjs.checkout.getOrderForm()
.then(function(orderForm) { 
		var marketingData = orderForm.marketingData; 
		marketingData = { 
			 'coupon': 'TESTCUPON',
			 'utmSource': 'TESTSOURCE',
			 'utmCampaign': 'TESTCAMPAIGN',
			 'utmMedium': 'TESTMEDIUM',
			 'utmiCampaign': 'INTERNO'
		}; 
		 
		return vtexjs.checkout.sendAttachment('marketingData', marketingData);
}).done(function(orderForm) {
	 console.log(orderForm); 
	 console.log(orderForm.marketingData); 
 });

Olá @bruno.araujo obrigado pelas orientações, você acha que da forma que fiz abaixo vai atender? Como está em produção tenho medo de dar problema no checkout.

      addToCartFromShelf(t, e) {
            const n = this, r = [{id: t, quantity: e, seller: 1}];
            $(".loader-overlay").fadeIn(), vtexjs.checkout.getOrderForm().then(t => {
                vtexjs.checkout.addToCart(r, null, 2).done(t => {
                    console.log("added"), n.showItemsNotInCart()
                }).fail(t => {
                    $(".loader-overlay").fadeOut(), console.log("error")
                })
            });

            this.addMarketingData()
        },

        addMarketingData() {
            var IPS = Cookies.get('IPS');
            var utms = {
                utmCampaign: (IPS.indexOf('Campanha') != -1 ? IPS.split('Campanha=')[1].split('&')[0] : ""),
                utmMedium: (IPS.indexOf('Midia') != -1 ? IPS.split('Midia=')[1].split('&')[0] : ""),
                utmSource: (IPS.indexOf('Parceiro') != -1 ? IPS.split('Parceiro=')[1].split('&')[0] : ""),
            }
            vtexjs.checkout.sendAttachment('marketingData', utms);


        },

Boa noite,

Fiz os testes e deu certo mas o código acima, funcionava apenas quando adicionava produto diretamente dentro do checkout. Quando eu estava na loja sem estar no checkout e clicava em add produto não funcionava então adicionei a seguinte função para solucionar o problema.

function addMarketingData() {
    var IPS = getIPS()
    var utms = {
        utmCampaign: (IPS.indexOf('Campanha') != -1 ? IPS.split('Campanha=')[1].split('&')[0] : ""),
        utmMedium: (IPS.indexOf('Midia') != -1 ? IPS.split('Midia=')[1].split('&')[0] : ""),
        utmSource: (IPS.indexOf('Parceiro') != -1 ? IPS.split('Parceiro=')[1].split('&')[0] : ""),
    }
    vtexjs.checkout.sendAttachment('marketingData', utms);
}

function getIPS() {
    var IPS;
    document.cookie.split(';').forEach(function (cookie) {
        if(cookie.includes("IPS")){
            IPS = cookie;
        }
    });

    return IPS;
}

Estou deixando aqui caso mais alguém esteja com dificuldade com o mesmo problema.

Obrigado @bruno.araujo

2 Likes

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.