;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Logo Pagbenk Seu dinheiro rende mais
Topo

Álvaro Garcia, CMO da Mondelez: Inovação e tradição devem andar lado a lado

Renato Pezzotti

Colaboração para o UOL, em São Paulo

19/11/2020 04h01

Álvaro Garcia, CMO da Mondelez Brasil, é o entrevistado desta semana do podcast Mídia e Marketing. Para o executivo, que lidera o marketing de marcas como Lacta, Bis, Trident, Halls e Tang, o departamento precisa atuar como peça chave no desenvolvimento da empresa.

Hoje, ele comanda uma equipe de cerca de 70 pessoas —que ele chama de "marketing estendido", porque envolve profissionais de outras áreas, como financeiro, jurídico e compras.

"A visão tem que ser comum, compartilhada com todos. Todo mundo tem que entender aonde queremos chegar tanto no curto quando no longo prazo. Temos que ter clareza do nosso papel. O papel do marketing é liderar o crescimento da empresa. Esse time tem que garantir que isso funcione", afirma (no arquivo acima, este trecho está a partir de 21:44).

O executivo também fala como a empresa refez toda sua comunicação para a Páscoa deste ano, que aconteceu logo após a chegada da pandemia no país.

"O lockdown aconteceu na véspera da Páscoa, que, para nós, é muito importante. Nós fizemos um 'war room' para garantir que 'vai ter Páscoa'. Isso acabou virando uma hashtag, que serviu como mote para a gente se reinventar. Conseguimos colocar o e-commerce no ar em três dias, fizemos uma parceria com todos os apps de delivery e chegamos num resultado praticamente igual ao do ano ado, muito melhor do que a gente esperava", afirma (a partir de 3:41).

Um plano: aumentar o consumo de chocolate no país

Segundo Álvaro, um dos objetivos da empresa é aumentar o consumo per capita de chocolate no mercado nacional. O brasileiro come, em média, 1,2 quilos de chocolate por ano —muito abaixo da Austrália (4 quilos) e do Reino Unido (7,5 quilos), por exemplo.

"Temos um potencial enorme de crescimento. Como a gente acredita na forma de aumentar isso? Primeiro, com qualidade e inovação. Nós, como consumidores, estamos aprendendo, sendo exigente com o que a gente consome. A segunda coisa é entender melhor os micro-momentos (do consumidor), com formatos diferentes, em diferentes canais. Em terceiro lugar, é a marca. As pessoas compram de marcas que elas confiam. A Lacta tem mais de 100 anos de Brasil, cresceu com a gente e temos hoje a maior fábrica de chocolates da Mondelez no mundo. Isso dá credibilidade" (a partir de 9:27).

Mas como é mexer em marcas conhecidas do público? "Antes de uma responsabilidade, é uma delícia. As pessoas têm relação emocional com essas marcas. Precisamos garantir que elas evoluam, sem perder a essência. Inovação e tradição têm que andar lado a lado também. Precisamos surpreender positivamente as pessoas" (a partir de 12:25).

Como exemplo, ele fala sobre o lançamento de uma nova embalagem do bombom Sonho de Valsa, mudada em 2018. "Aquilo era característico do Sonho de Valsa. A mudança de um ícone foi bem recebida porque a qualidade melhorou. As pessoas estão abertas. Boas inovações caem bem" (a partir de 13:33).