Evento `ORDER_STATUS_CHANGE`

Webhook disparado a cada mudança de status de um pedido (CREATED → DISPATCHED → COLLECTED → SUCCESSFUL etc.).

Evento enviado ao seller a cada mudança de status do pedido. A página de Status & Substatus descreve cada estado e suas transições.

Estrutura base

Todo evento ORDER_STATUS_CHANGE chega com este envelope base. Os cards mais abaixo (CREATED, DISPATCHED, IN_TRANSIT…) mostram só o delta — o que muda ou aparece a mais em cada status.

{
  "order_id": "33595136-bf9d-4a07-89ff-8fca22166a0d",
  "order_number": "26007537",
  "order_type": "DELIVERY",
  "external_order_id": "26025007537_25044",
  "invoice_number": "46631",
  "access_key": "33260500285753002800651010000466311001978900",
  "invoice_created_timestamp": "2026-05-28T13:53:29.000Z",
  "tracking": "W9GR58BEU10A",
  "seller_identifier": "00285753002800",
  "seller_document_number": "00285753002800",
  "seller_trading_name": "Loja XYZ",
  "seller_id": "d40466d4-8cbf-431a-ae71-a11913965d80",
  "seller_group_id": "1d967918-f877-49a3-95a0-673cdcab0ab8",
  "customer_name": "João Silva",
  "customer_phone": "21999999999",
  "customer_email": "joao@email.com",
  "customer_document_number": "00000000000",
  "event_type": "ORDER_STATUS_CHANGE",
  "event_at": "2026-05-28T21:14:10.494Z",
  "timestamp": 1780002850946,
  "event_observation": null,
  "delivery_type": "CARRIER",
  "status": "CREATED",
  "sub_status": null,
  "expected_delivery_price": null,
  "expected_delivery_date": null,
  "final_delivery_price": null,
  "delivery_eta": null
}

order_type define o caminho: DELIVERY (entrega ao cliente), TAKEOUT (retirada na loja) ou RETURN (logística reversa).

delivery_type identifica quem está executando a entrega: CARRIER, PRIVATE-FLEET, TAKEOUT, ou o slug da transportadora (AGILE-GO, UBER, 99-ENTREGAS, etc.).

Glossário de campos

CampoTipoNotas
statusstring (enum)sempre presente — ver Status & Substatus
sub_statusstring | nullvaria conforme o status
delivery_typestringsempre — CARRIER, PRIVATE-FLEET, TAKEOUT, ou o slug da transportadora
event_observationstring | nullobservação textual associada ao evento (motivo de falha, cancelamento, etc.)
driver_namestring | nullnome do motorista após atribuição (DISPATCHED em diante, quando há motorista)
carrier_namestring | nullnome da transportadora quando aplicável (CARRIER ou nome do parceiro)
expected_delivery_priceinteger (centavos) | nullpreço estimado pela transportadora — populado a partir de PENDING/DISPATCHED
expected_delivery_dateISO datetime | nullprazo combinado com a transportadora
delivery_etaISO datetime | nullETA dinâmica enviada por carriers que suportam (Uber, 99, etc.)
final_delivery_priceinteger (centavos) | nullpreço efetivo da entrega — só populado em SUCCESSFUL
failure_codeintegersó em FAILED — ver Códigos de falha
failure_messagestringsó em FAILED
failure_driver_messagestringsó em FAILED — relato do motorista
receiver_namestringsó em SUCCESSFUL — nome de quem recebeu a entrega
attachmentsArray<{ url, type? }>só em SUCCESSFUL.DELIVERED quando há POD. type: "image" ou "signature"

Exemplos por status

Cada card mostra apenas o delta sobre o envelope base. Os campos que aparecem aqui são os que mudam ou se somam ao envelope.

CREATEDPedido recém-criado — só o envelope base, sem nada alémver detalhes →
{
  "status": "CREATED",
  "sub_status": null
}
PENDINGWAITING_FOR_CARRIEREsperando aceite da transportadoraver detalhes →
{
  "status": "PENDING",
  "sub_status": "WAITING_FOR_CARRIER",
  "carrier_name": "AGILE-GO",
  "expected_delivery_price": 2500,
  "expected_delivery_date": "2026-03-01T02:59:00.000Z",
  "delivery_eta": "2026-03-02T14:59:00.000Z"
}
DISPATCHEDROUTE_PLANNEDTransportadora aceitou e tem motorista atribuídover detalhes →
{
  "status": "DISPATCHED",
  "sub_status": "ROUTE_PLANNED",
  "driver_name": "João",
  "carrier_name": "AGILE-GO"
}
IN_TRANSITCOLLECTINGMotorista indo coletar na lojaver detalhes →
{
  "status": "IN_TRANSIT",
  "sub_status": "COLLECTING",
  "driver_name": "João",
  "carrier_name": "AGILE-GO"
}
COLLECTEDPacote coletado na lojaver detalhes →
{
  "status": "COLLECTED",
  "sub_status": null,
  "driver_name": "João",
  "carrier_name": "AGILE-GO"
}
START_DELIVERYMotorista saiu pra entregar — última milhaver detalhes →
{
  "status": "START_DELIVERY",
  "sub_status": null,
  "driver_name": "João",
  "carrier_name": "AGILE-GO",
  "delivery_eta": "2026-05-28T23:59:00.000Z"
}
HANDLINGTRANSFER_COMPLETEDManuseio interno na transportadora (transferência entre filiais)ver detalhes →
{
  "status": "HANDLING",
  "sub_status": "TRANSFER_COMPLETED",
  "carrier_name": "AGILE-GO"
}
SUCCESSFULDELIVEREDEntrega concluída — terminal feliz, com POD se disponívelver detalhes →
{
  "status": "SUCCESSFUL",
  "sub_status": "DELIVERED",
  "driver_name": "João",
  "carrier_name": "AGILE-GO",
  "receiver_name": "Maria Silva",
  "final_delivery_price": 952,
  "expected_delivery_price": 1200,
  "delivery_eta": "2026-05-28T23:59:00.000Z",
  "attachments": [
    { "url": "https://attachments.abbiamolog.com/...jpeg", "type": "image" },
    { "url": "https://attachments.abbiamolog.com/...jpeg", "type": "signature" }
  ]
}
FAILEDCOLLECT_FAILEDFalha pontual — a tentativa pode ser refeitaver detalhes →
{
  "status": "FAILED",
  "sub_status": "COLLECT_FAILED",
  "driver_name": "João",
  "carrier_name": "AGILE-GO",
  "failure_code": 17,
  "failure_message": "Outro",
  "failure_driver_message": "Loja fechada quando cheguei"
}
ORDER_FAILEDCARRIER_TIMEOUTTentativas esgotadas — pedido falhou em definitivover detalhes →
{
  "status": "ORDER_FAILED",
  "sub_status": "CARRIER_TIMEOUT"
}
CANCELEDRETURNED_TO_SELLERCancelado depois da coleta — pacote voltou pra filialver detalhes →
{
  "status": "CANCELED",
  "sub_status": "RETURNED_TO_SELLER",
  "event_observation": "Cliente solicitou cancelamento após coleta"
}
RETURNINGPacote voltando à filialver detalhes →
{
  "status": "RETURNING",
  "sub_status": null,
  "driver_name": "João",
  "carrier_name": "AGILE-GO"
}
RETURNEDPacote devolvido à filial — terminal infelizver detalhes →
{
  "status": "RETURNED",
  "sub_status": null,
  "carrier_name": "AGILE-GO"
}
MANUAL_HANDLETratamento manual — finalizado fora do fluxo padrãover detalhes →
{
  "status": "MANUAL_HANDLE",
  "sub_status": null
}

Nesta página