Webhook para parceiros iFood

Thales Gaddini
ifood-developer
Published in
3 min readFeb 14, 2024

Finalmente o tão aguardado webhook de eventos de pedido do iFood será disponibilizado para as integradoras a partir do dia 19/02/2024.

O que é o Webhook

O webhook é um mecanismo de entrega de eventos server-server em tempo real. É a solução recomendada em situações onde a integradora tem acesso a vários merchants e faz o gerenciamento dos pedidos de forma centralizada. Com isso podemos evitar a limitação de múltiplos pollings para integrações com muitos merchants, evitando cenários de unauthorized durante a revogação de permissão de merchants, e também evitar o desperdício do polling contínuo (muito deles se retornar novos eventos, desperdiçando recursos).

O conceito do webhook é muito simples: ao invés das integrações fazerem requests periódicas buscando os eventos na plataforma, a integração registra uma url a ser chamada pelos nossos serviços quando nossa plataforma de eventos receber um evento de interesse da integração.

Acesse nossa documentação com um overview sobre o webhook e nossa documentação sobre a request que nosso webhook envia para saber mais.

Configurando seu Webhook

O processo de configuração do webhook se dá pelo developer portal do iFood na sessão “Meus apps” em uma aba específica para o gerenciamento do seu webhook. Cada app pode ter apenas um webhook configurado.

Configuração do webhook

Acesse nossa documentação para saber mais sobre o processo de configuração.

Presença

Presença é um novo conceito que vem para as integrações junto com o webhook. Para saber mais o porque presença é importante no iFood vale a pena ler sobre status de conexão no iFood.

Presença sempre foi um tema presente no iFood (ba-dum-tss). Esse tema só é um pouco obscuro para as integradoras pois cada request de polling hoje gera um evento de heartbeat que mantém os merchants “online” sem que a integração tenha que fazer nada além do polling de eventos.

No webhook, como os eventos são bastante espaçados, isso não é possível. Por isso são feitas requests periódicas de ping (ou keepalive) para checar o status da integração e seus merchants.

Acesse nossa documentação para saber mais sobre a request de presença.

Leitura Complementar

Seguem links que recomendamos ler antes de começar a utilizar o webhook do iFood:

FAQ — Polling vs Webhook

A pergunta que mais recebemos durante o piloto é se o webhook substituí o polling, e a resposta, como muitas em desenvolvimento de software, é: depende.

O webhook é um serviço totalmente independente do polling, e tem as mesmas capacidades do polling de entrega de eventos e presença. O fator determinante para decidir se a integração deve abandonar 100% o polling depende da própria integração.

Diferente do polling, o webhook não possui um mecanismo de acknowledgment, e embora tenha um mecanismo de retry, caso o envio falhe um número predeterminado de vezes definido pelo iFood, um evento pode ser descartado sem ser recebido pela integradora. Hoje não é possível recuperar estes eventos de forma automática, sendo necessário recorrer ao mecanismo de polling como fallback caso a integradora venha a ter alguma instabilidade por um período longo de tempo. Esse fluxo de fallback não precisa acontecer em paralelo do webhook e pode ser ligado conforme a necessidade da integração.

Hoje o polling e o webhook são sistemas totalmente independentes para entrega de eventos, então caso tenha interesse em utilizar o polling como fallback ou sistema de conciliação, é necessário enviar requests de acknowledgment para o sistema de polling.

Extra — Plataforma de Eventos (Firefly)

O webhook faz parte de nossa plataforma genérica de entrega de eventos. Deixamos o webhook compatível com o endpoint de polling de eventos de pedidos disponível no escopo de order da merchant API, mas estamos trabalhando para disponibilizar a plataforma genérica de entrega de eventos na merchant API.

--

--