Sign inGet started

Recebendo localizações WhatsApp

Um pin que um contato compartilha chega como uma mensagem recebida carregando location. O mesmo braço responde a uma solicitação de localização que você enviou, que é o único tipo interativo cuja resposta chega aqui em vez de em interactive_reply.

O que uma localização recebida carrega

Exemplo de código
{
  "id": "wam_01kyf8u2shzx0v6m9q3bag8tje",
  "direction": "inbound",
  "from": { "phone_number": "+14155550100" },
  "to": { "phone_number": "+13124495569" },
  "status": "received",
  "in_reply_to_message_id": "wam_01kya19eknftrs2s6p82asmvnh",
  "location": {
    "latitude": 37.7793,
    "longitude": -122.4193,
    "name": "Embarcadero Plaza",
    "address": "1 Market St, San Francisco, CA 94105"
  },
  "created_at": "2026-08-25T09:23:14Z"
}
CampoO que carrega
latitudeLatitude em graus decimais
longitudeLongitude em graus decimais
nameO nome do lugar; ausente quando o contato compartilhou um pin simples
addressO endereço, que WhatsApp envia apenas junto com um name
urlUm link para o lugar, principalmente em uma localização comercial, quando o cliente do remetente forneceu um
Um pin simples colocado no mapa carrega apenas as duas coordenadas e nada mais, então trate name, address e url como decoração que você exibe quando presente, e não como campos para usar como chave. Leia as coordenadas como números JSON e espere valores negativos nos hemisférios sul e oeste.

Uma localização que responde a uma solicitação de localização

Quando o pin responde a uma solicitação de localização que você enviou, WhatsApp reporta a solicitação como alvo da resposta e in_reply_to_message_id identifica a mensagem que carregou o botão. É isso que liga uma resposta a uma pergunta, e é a diferença em relação a uma solicitação de informações de contato, cuja resposta não carrega esse vínculo.
Nada mais marca o pin como uma resposta. Um contato que compartilha sua localização espontaneamente produz o mesmo braço sem in_reply_to_message_id, então uma integração que espera uma resposta verifica esse campo em vez do braço. O campo não é garantia na direção oposta: WhatsApp não marca toda resposta, e a resolução pode falhar, então uma resposta genuína pode chegar sem ele. A seção de respostas citadas do hub cobre quando isso acontece e o que fazer onde a classificação precisa se manter.

O payload do webhook

whatsapp.received carrega o braço location no envelope do evento:
Exemplo de código
{
  "type": "whatsapp.received",
  "timestamp": "2026-08-25T09:23:14.507Z",
  "data": {
    "whatsapp_id": "wam_01kyf8u2shzx0v6m9q3bag8tje",
    "workspace_id": "ws_01ky7m235keycbnwyajabe1a6b",
    "direction": "inbound",
    "from": { "phone_number": "+14155550100" },
    "to": { "phone_number": "+13124495569" },
    "in_reply_to_message_id": "wam_01kya19eknftrs2s6p82asmvnh",
    "location": {
      "latitude": 37.7793,
      "longitude": -122.4193,
      "name": "Embarcadero Plaza",
      "address": "1 Market St, San Francisco, CA 94105"
    },
    "tags": null,
    "metadata": null
  }
}

Pontos de atenção

  • Compartilhamento de localização em tempo real não é modelado como conteúdo. O que chega é uma localização fixa em um momento, então uma visualização de rastreamento não tem o que atualizar. Não construa uma com base nesse campo.
  • Uma integração que monitora apenas interactive_reply não captura isso. A resposta de uma solicitação de localização chega aqui, e a resposta de uma solicitação de informações de contato chega em contact_cards, então um handler que lê apenas toques perde ambas.
  • As coordenadas são o que o dispositivo do contato reportou. Elas não incluem raio de precisão nem altitude, e um pin que o contato arrastou está onde ele o arrastou. Confirme o endereço por escrito quando ele precisa estar correto.

Próximos passos