> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chargefy.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Eventos de webhook

> Formato dos eventos de webhook.

Um `event` representa uma mudança relevante em um recurso público da Chargefy.
Ele é enviado por `POST` para os endpoints de webhook configurados no dashboard.

O recurso alterado fica sempre em `data.object`. Esse objeto usa o mesmo DTO
público documentado na API: por exemplo, um `customer.created` carrega um
objeto `customer`, e um `payment.intent.succeeded` carrega um objeto
`payment_intent`.

## Data Object

Toda entrega de webhook usa este envelope. O recurso alterado vive em
`data.object`, no mesmo formato da resposta de consulta daquele recurso; eventos
de atualização trazem `data.previous_attributes` com o diff dos campos alterados.

```json theme={}
{
  "id": "evt_123",
  "object": "event",
  "created_at": "2026-05-19T14:09:27Z",
  "data": {
    "object": {
      "id": "cus_123",
      "object": "customer",
      "billing_address": null,
      "billing_name": null,
      "created_at": "2026-05-16T14:09:27Z",
      "document": "12345678901",
      "document_type": "cpf",
      "email": "novo@email.com",
      "livemode": true,
      "metadata": {
        "reference_id": "ref_456"
      },
      "name": "Cliente Exemplo",
      "phone": "+5511999990000",
      "updated_at": "2026-05-19T14:09:27Z"
    },
    "previous_attributes": {
      "email": "antigo@email.com"
    }
  },
  "livemode": true,
  "organization": "org_123",
  "request": {
    "id": "req_123"
  },
  "type": "customer.updated"
}
```

<ResponseField name="id" type="string">
  ID único do evento (`evt_*`). É o mesmo valor enviado no header
  `webhook-id`.
</ResponseField>

<ResponseField name="object" type="string">
  Sempre `event`.
</ResponseField>

<ResponseField name="created_at" type="string">
  Data e hora em que o evento foi criado, em ISO 8601.
</ResponseField>

<ResponseField name="data" type="object">
  Container do payload do evento.
</ResponseField>

<ResponseField name="data.object" type="object">
  Objeto público completo do recurso no estado atual. O shape é o mesmo da
  resposta de consulta do recurso correspondente.
</ResponseField>

<ResponseField name="data.previous_attributes" type="object">
  Presente quando o evento representa uma atualização. Contém apenas os campos
  alterados, com os valores anteriores.
</ResponseField>

<ResponseField name="livemode" type="boolean">
  Indica se o evento pertence ao modo live.
</ResponseField>

<ResponseField name="organization" type="string">
  Organização que originou o evento. Em entregas para plataformas, esse campo
  continua apontando para a organização conectada que gerou o evento.
</ResponseField>

<ResponseField name="request" type="object">
  Request que originou o evento, quando disponível.
</ResponseField>

<ResponseField name="request.id" type="string | null">
  ID do request (`req_*`) que originou o evento. Eventos de sistema podem trazer
  `null`.
</ResponseField>

<ResponseField name="type" type="string">
  Tipo do evento no formato `<recurso>.<ação>`, como `customer.created`,
  `payment.intent.succeeded` ou `onboarding.session.submitted`.
</ResponseField>

## Observações

Eventos de criação normalmente não incluem `data.previous_attributes`.
Eventos de atualização incluem `data.object` com o estado completo atual e
`data.previous_attributes` com o diff anterior.

Os payloads ficam disponíveis para reentrega manual enquanto estiverem retidos.
Após a janela de retenção, a Chargefy mantém os metadados do evento e das
entregas, mas remove o corpo completo do payload.
