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

# post_created

> Disparado quando um novo post é publicado na comunidade — feed principal ou dentro de um grupo.

Esse evento é disparado **toda vez que um post é publicado** com sucesso, seja no feed da comunidade ou dentro de um grupo específico. Use-o para indexar conteúdo em sistemas externos, alimentar buscadores ou disparar moderação adicional.

<Note>
  O nome interno do evento (usado nos cadastros de webhook do Console) é `post_created`.
</Note>

## Quando dispara

* Usuário publica um post no feed principal da comunidade
* Usuário publica um post dentro de um grupo
* Você cria um post via API

## Quando NÃO dispara

* Edição de um post existente
* Comentário em um post (esse é um evento separado)
* Reação (like) em um post
* Post rejeitado pela moderação automática antes de ser publicado
* Usuário não encontrado no enriquecimento do payload (entrega é pulada)
* Falha na criação (validação, grupo bloqueado, usuário banido, etc.)

## Payload

O payload é serializado em **PascalCase** e enviado no body do `POST` com `Content-Type: application/json`:

```json theme={null}
{
  "CustomerId": "01HQ0ABCDEF1234567890XYZ",
  "PostId": "01HQ8POST1234567890ABCDEFG",
  "GroupId": "01HQ2GROUP1234567890XYZAB",
  "User": {
    "Id": "01HQ7Z3X4Y5Z6A7B8C9D0E1F2G",
    "Email": "maria@exemplo.com",
    "FirstName": "Maria",
    "LastName": "Silva",
    "DisplayName": "Maria Silva",
    "Username": "maria.silva",
    "PhoneNumber": "+5511999998888",
    "CreatedAt": "2026-04-12T14:32:01Z",
    "BadgeId": "01HQ4ABCDEF1234567890XYZ",
    "Badges": [
      "01HQ4ABCDEF1234567890XYZ"
    ]
  },
  "Content": "Acabei de terminar o módulo 3 do curso — recomendo demais!",
  "ImageUrl": "https://cdn.cativalab.digital/posts/01HQ8POST.../original.jpg",
  "CreatedAt": "2026-05-08T14:32:01Z"
}
```

### Campos do payload

| Campo              | Tipo           | Descrição                                                                                                                                                                 |
| ------------------ | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CustomerId`       | GUID           | ID do tenant que originou o evento. Use para rotear quando seu endpoint recebe webhooks de múltiplos tenants.                                                             |
| `PostId`           | GUID           | ID do post recém-criado.                                                                                                                                                  |
| `GroupId`          | GUID \| null   | ID do grupo onde o post foi publicado. Quando `null`, o post foi publicado no feed principal da comunidade (fora de qualquer grupo).                                      |
| `User.Id`          | GUID           | ID do autor do post.                                                                                                                                                      |
| `User.Email`       | string         | Email do autor.                                                                                                                                                           |
| `User.FirstName`   | string         | Primeiro nome.                                                                                                                                                            |
| `User.LastName`    | string         | Sobrenome.                                                                                                                                                                |
| `User.DisplayName` | string         | Nome de exibição.                                                                                                                                                         |
| `User.Username`    | string         | Nome de usuário.                                                                                                                                                          |
| `User.PhoneNumber` | string         | Telefone, quando informado.                                                                                                                                               |
| `User.CreatedAt`   | ISO 8601       | Quando o autor foi criado no tenant.                                                                                                                                      |
| `User.BadgeId`     | GUID \| null   | Badge principal do autor no momento do post.                                                                                                                              |
| `User.Badges`      | GUID\[]        | Lista completa de badges do autor no momento do post.                                                                                                                     |
| `Content`          | string \| null | Texto do post. Pode ser `null` em posts que tem só mídia (imagem ou vídeo).                                                                                               |
| `ImageUrl`         | string \| null | URL da **primeira imagem** anexada ao post (resolução original). `null` quando o post não tem imagens. Posts com vídeo ou outros tipos de mídia não preenchem esse campo. |
| `CreatedAt`        | ISO 8601       | Momento em que o post foi criado.                                                                                                                                         |

## Headers do request

| Header                   | Descrição                                                                                                       |
| ------------------------ | --------------------------------------------------------------------------------------------------------------- |
| `X-Cativa-Signature`     | Assinatura HMAC-SHA256 do disparo, no formato `t=<unixTs>,v1=<hex>`. **Verifique antes de processar o evento.** |
| `X-Cativa-Execution-Id`  | ID único deste evento. Estável entre retries — use como chave de idempotência.                                  |
| `X-Cativa-Automation-Id` | ID do listener configurado no Console (mesmo valor para todos os disparos do mesmo cadastro).                   |

A explicação completa de como verificar `X-Cativa-Signature`, lidar com retries e garantir idempotência (com exemplos em Node, Python, Go e C#) está em [Cadastrando e verificando webhooks](/pt-BR/webhooks/subscribing-and-verifying).

## Casos de uso

* **Indexar em uma busca externa** — enviar `PostId` + `Content` para um índice (Algolia, Elasticsearch, Meilisearch) para busca cross-grupo no seu próprio app.
* **Notificar canal de moderação** — repassar posts em grupos sensíveis para um canal interno (Slack, Discord) onde a equipe de moderação revisa em paralelo.
* **Sincronizar com newsletter / mídias sociais** — pegar `Content` + `ImageUrl` e republicar automaticamente em LinkedIn, Twitter ou numa newsletter, atribuindo a autoria pelo `User.DisplayName`.

## Eventos relacionados

<CardGroup cols={2}>
  <Card title="user_joined_group" icon="users" href="/pt-BR/webhooks/events/user-joined-group">
    Disparado quando um usuário entra num grupo — bom complemento para entender o contexto de quem está postando.
  </Card>

  <Card title="user_received_badge" icon="shield-check" href="/pt-BR/webhooks/events/user-received-badge">
    Disparado quando o usuário ganha um badge — útil para correlacionar engajamento (post) com permissão.
  </Card>

  <Card title="Cadastrando webhooks" icon="webhook" href="/pt-BR/webhooks/subscribing-and-verifying">
    Como cadastrar listeners, verificar HMAC e lidar com retries.
  </Card>

  <Card title="Webhooks (visão geral)" icon="rectangle-history" href="/pt-BR/concepts/webhooks">
    Por que webhooks, garantias de entrega e formato dos payloads.
  </Card>
</CardGroup>
