;(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

Restaurantes criam delivery próprio para fugir da dependência do iFood

São Paulo

05/02/2022 11h00

Se antes da pandemia o delivery representava um porcentual irrelevante das vendas de restaurantes, hoje a participação flutua entre 15% e 30% do faturamento total. Com o aumento da demanda, as empresas começam a criar sistemas próprios, em detrimento da utilização de aplicativos de entrega como iFood e Rappi. O objetivo é, entre outros motivos, fugir das taxas cobradas pelos aplicativos, que chegam a 30% do pedido, além de criar uma maior fidelização dos clientes.

Antes da pandemia, o Burger King vendia menos de 5% de seus pedidos por entregas. Agora, esse número ultraa os 15%, mesmo com a reabertura das lanchonetes. No mês ado, a rede lançou um sistema de entregas. Até agora 300 lojas da empresa já estão recebendo pedidos pela ferramenta, e a ideia é chegar a 700 até dezembro.

"Criamos um hub logístico que vai nos conectar com todas as etapas do pedido e que recebe automaticamente todos os cadastros e pedidos no País", diz Ariel Grunkraut, vice-presidente do Burger King.

Inteligência

Concorrente do Burger King, o Bob's tomou este caminho em 2020. De acordo com Antonio Detsi, diretor-geral da rede, com o delivery próprio, foi possível reter dados dos clientes que auxiliam na hora de criar promoções. "Não vou encher o cliente com promoções que não servem para ele. Se eu souber que no dia 23 acabou o vale-refeição dele, por exemplo, posso mandar sugestões de sanduíches mais baratos", diz Detsi.

Com estratégias como essa, o Bob's saltou de 7% para 22% na participação do delivery em seu faturamento, crescimento fundamental para manter a rede de pé - a receita caiu 18% em 2020 por causa da pandemia. No ano ado, a situação melhorou e a companhia voltou aos R$ 1,1 bilhão em faturamento e quer crescer cerca de 20% em 2022. A ideia é aumentar a participação do delivery próprio (hoje em cerca de 10%).

Sem debandada

Nenhuma das empresas, no entanto, planeja sair do cardápio de aplicativos como iFood e Rappi, considerados uma forma relevante na captação de clientes. O problema, porém, é que esse setor caminha para virar um monopólio: no mês ado, o Uber Eats anunciou que deixaria de operar no Brasil. Assim, o iFood, cuja participação de mercado é estimada em 80%, amplia seu domínio, não só do serviço em si, mas também dos dados dos clientes.

"As empresas estão ficando fora da jornada do cliente com os dados ficando apenas com as plataformas", diz Alberto Serrentino, fundador da consultoria Varese Retail.

E os pequenos também estão indo atrás desse modelo. É o caso do restaurante Espetos Ferreira, em São Paulo. Por causa dos efeitos da covid-19 nas vendas, a empresa precisou encerrar uma de suas duas unidades. Como compensação, o delivery ou a representar uma fatia de 30% do negócio. O restaurante atende a pedidos também pelo iFood, que representa 90% das vendas por delivery, mas está para colocar em prática um plano de marketing direcionado a migrar os clientes fiéis para o seu aplicativo. "A ideia é não ficar refém do iFood", diz a proprietária Adriana Ferreira.

As informações são do jornal O Estado de S. Paulo.