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

# Changelog

*Acompanhe o que mudou na plataforma, lançamentos, melhorias e avisos que podem afetar sua integração. Cada dia está organizado por tipo de mudança para você entender rápido o que importa.*

<Update label="26/07/2026" description="Mensagens recebidas, assinatura e grupos WhatsApp em GA">
  ### Melhorias

  **Configurações do workspace**

  Aba **Canais** nas configurações do workspace passa a se chamar **Mensagens recebidas**. Transações de cobrança ficam em **Assinatura**. Trust Factor e personalização do painel ficam em **Configurações**.

  **Grupos WhatsApp em GA**

  Recursos de grupos deixam de ser experimentais. Não é mais necessário ativar flag no workspace. Continua valendo: instância **não oficial** + escopo `whatsapp:groups` (e `allowGroupChats` para inbound).
</Update>

<Update label="25/07/2026" description="Link compartilhável, WhatsApp e templates por canal">
  *Onboarding remoto nos canais, API WhatsApp mais clara e envio de template direto na rota de cada canal.*

  ### Novidades

  **Link compartilhável para conectar instâncias**

  * WhatsApp, Telegram (modo usuário) e Instagram: `generateShareableLink: true` na criação devolve um link para o cliente finalizar a conexão no navegador, sem QR ou login Meta no seu servidor.
  * Telegram (modo usuário): o create já inicia o QR e devolve `connection.base64` / `loginUrl`.
  * Instagram: sem `auth` no create, gera rascunho `PENDING` + link para login remoto.
  * Gestão do link via API: `GET/POST .../instances/{id}/connect-page` (status, ativar, rotacionar secret, desativar).

  **Envio por template na rota do canal**

  * Em WhatsApp, SMS, e-mail, push, Telegram, Instagram, RCS e voz: `type: "template"` + `payload.templateId` envia só aquele canal do template.
  * WhatsApp oficial: exige template aprovado pela Meta; conexão por QR: conteúdo simples na sessão (sem header ou botões Meta).
  * Fan-out multicanal continua em `POST /v1/templates/send`.

  ### Melhorias

  **WhatsApp**

  * Campo **`mode`** em instâncias: `UNOFFICIAL` (QR) ou `OFFICIAL` (Embedded Signup). Listagem, consulta e criação devolvem `mode`.
  * Oficial com link compartilhável: omita os campos Meta no payload e use o flag para criar rascunho; o cliente conclui no link.
  * Envio oficial: validações de token, template e mídia **antes** de enfileirar, com erros claros (`META_TOKEN_EXPIRED`, `META_PERMISSION_DENIED`, `TEMPLATE_NOT_ALLOWED_FOR_INSTANCE`).
  * Campo **`metaName`** nos templates oficiais: nome usado no envio (o sync preenche automaticamente).
  * Sandbox (`sk_test_`): envios WhatsApp e templates **não** chamam a Meta nem marcam a linha real como desconectada.
  * Reconexão Embedded: `ALREADY_CONNECTED` só quando a linha está ativa com token válido.
  * Rotação do secret do link invalida o link anterior.

  Docs: [Quick Start WhatsApp](/whatsapp-api/como-funciona/quick-start), [Modos de conexão](/whatsapp-api/como-funciona/modos-de-conexao), [Templates oficiais](/whatsapp-api/como-funciona/templates-oficiais-meta), [Quick Start Telegram](/telegram-api/como-funciona/quick-start), [Quick Start Instagram](/instagram-api/como-funciona/quick-start), [Sandbox](/guides/sandbox/index).
</Update>

<Update label="24/07/2026" description="WhatsApp oficial (Cloud API) e detalhe de mensagens">
  *Chegou a conexão **oficial** do WhatsApp (Cloud API via Tech Provider), com Embedded Signup no painel. No mesmo ciclo: configurações por canal, transcrição de áudio inbound e um detalhe de mensagem mais claro (abas + preview estruturado).*

  ### Novidades

  **WhatsApp oficial, Embedded Signup (`OFFICIAL`)**

  *No wizard de instância você escolhe **Oficial** ou **Não oficial (QR)**. Na oficial, o número entra pela Meta (login no painel), sem colar token.*

  * Criação no painel: WhatsApp → Nova instância → **Oficial** → Embedded Signup (WABA + número).
  * Na API: `mode: "OFFICIAL"` em `POST /v1/whatsapp/instances` (Embedded Signup; quando o recurso estiver habilitado no ambiente).
  * A **Meta** cobra as conversas na conta do cliente; a Notifique cobra só a **taxa de software** da plataforma (ver tabela de cobrança nos docs).
  * É obrigatório ter **cartão ativo no WhatsApp Manager**. Sem pagamento, o envio bloqueia com `META_PAYMENT_METHOD_REQUIRED`.
  * Fora da **janela de 24h**, só template oficial aprovado; dentro da janela, texto/mídia de sessão.
  * Credenciais manuais (`OFFICIAL_BYOK`) ficaram em segundo plano no onboarding, prefira Embedded Signup (`OFFICIAL`).

  Docs: [Modos de conexão](/whatsapp-api/como-funciona/modos-de-conexao), [Quick Start oficial](/whatsapp-api/como-funciona/quick-start), [Templates oficiais Meta](/whatsapp-api/como-funciona/templates-oficiais-meta).

  **Templates oficiais (WABA)**

  * Catálogo na **WABA** (vários números da mesma conta compartilham templates).
  * Sync pull/push com a Meta; status por webhook (`APPROVED`, `PENDING`, `REJECTED`, …).
  * Templates internos Notifique continuam com `source: ZENVIO`; oficiais usam `source: WHATSAPP_OFFICIAL`.
  * Template **APPROVED** na Meta: limite de edição **1× a cada 24h** e **10× a cada 30 dias** (regra da Meta).

  **Configurações de canal**

  * Atalho de **Configurações do canal** no WhatsApp (e demais canais): resumo das instâncias e ajustes de mensagens recebidas (receber / salvar / webhook) no mesmo espírito da aba Mensagens recebidas do workspace.

  **Transcrição de áudio inbound**

  * No Inbox e no detalhe da mensagem recebida: transcrever áudio (WhatsApp, Telegram, Instagram) sob demanda, com cobrança em crédito.
  * Opção de **transcrever automaticamente** nos ajustes de inbound do usuário.

  ### Melhorias

  **Detalhe da mensagem (WhatsApp, Telegram, Instagram, SMS, e-mail, push, RCS e voz)**

  * Abaixo da timeline: abas **Mensagem / Metadata / Eventos** (segmented control compacto, sem card envolvendo tudo).
  * **Mensagem**, conteúdo e histórico de edições/respostas.
  * **Metadata**, metadata da requisição (e payload do provedor, quando houver).
  * **Eventos**, entregas de webhook que aquela mensagem acionou (com link para a chamada).
  * Preview de mensagens estruturadas (template, botões, lista, respostas interativas) no detalhe WhatsApp enviado e recebido.

  **Linha oficial, operação no dia a dia**

  * Token Meta expirado ou inválido: a instância passa a **DISCONNECTED** e o painel pede reconexão.
  * Link compartilhado de conexão respeita o **mesmo modo** de reconexão da linha (Embedded Signup ou token legado).
  * Cloud API **não** edita nem apaga mensagem já enviada: API responde `META_MESSAGE_EDIT_UNSUPPORTED` / `META_MESSAGE_DELETE_UNSUPPORTED`; o painel esconde Editar/Excluir na linha oficial.
</Update>

<Update label="23/07/2026" description="Mídia inbound, WhatsApp, Telegram e Instagram">
  *Download de mídia recebida no inbox, na tela de detalhe e na API v1, com paridade entre canais. O arquivo continua on-demand no provider (sem storage permanente).*

  ### Melhorias

  **WhatsApp**

  * Download inbound agora inclui **video** e **sticker** (além de image/audio/document), via instância QR / não oficial.
  * Endpoints: `POST /v1/whatsapp/messages/inbound/{id}/media` e `GET .../media/download`.

  **Telegram (Bot + User/QR)**

  * Novos endpoints: `POST /v1/telegram/messages/inbound/{id}/media` e `GET .../media/download` (escopo `telegram:read`).
  * `GET .../inbound/{id}` passa a retornar `contentPreview` e `mediaFetch`.
  * Tipos: image, audio, video, document, sticker. Bot usa `getFile`; User usa MTProto `downloadMedia`.

  **Instagram**

  * Novos endpoints: `POST /v1/instagram/messages/inbound/{id}/media` e `GET .../media/download` (escopo `instagram:read`).
  * `GET .../inbound/{id}` com `contentPreview` e `mediaFetch`.
  * Tipos: image, video e audio/voice (URL no payload; voice com fallback aiograpi).
</Update>

<Update label="21/07/2026" description="E-mail, RFC 8058 one-click unsubscribe">
  *Envios de marketing passam a incluir headers `List-Unsubscribe` / `List-Unsubscribe-Post` (Gmail/Yahoo). O descadastro one-click é honrado no POST (padrão de mercado).*

  ### Melhorias

  **RFC 8058 por padrão**

  * Templates **MARKETING** (sempre headers; rodapé HTML continua opcional via `appendPreferencesLink`), campanhas e automações.
  * `POST /v1/email/messages`: ligado por padrão quando o destinatário é um contato; use `listUnsubscribe: false` em transacional.
  * Endpoint público: **GET** só confirma (sem mutar, evita scanners); **POST** aplica opt-out (`List-Unsubscribe=One-Click` ou formulário).
  * Tópico inválido na URL **não** faz fallback para opt-out global; `listUnsubscribeTopicId` inválido na API retorna **400** `INVALID_LIST_UNSUBSCRIBE_TOPIC`.
  * Guia: [One-click unsubscribe (RFC 8058)](/emails-api/como-funciona/one-click-unsubscribe-rfc-8058). Erro: [Respostas de erro](/guides/conceitos/resposta-de-erros).
</Update>

<Update label="21/07/2026" description="API v1, erros padronizados em todos os endpoints">
  *Todas as rotas da API v1 passam a responder erros com **`error`**, **`message`** e **`code`** (enum estável). Mensagens podem ser localizadas via `Accept-Language` ou `x-locale`. Não há breaking change em rotas de sucesso, apenas respostas de erro ficaram mais previsíveis.*

  ### Melhorias

  **Erros uniformes em toda a API v1**

  * **\~1.150** respostas `success: false` revisadas em WhatsApp, Instagram, SMS, e-mail, Telegram, push, RCS, voz, webhooks, CRM, contatos, templates, automações, links curtos e mais.
  * Campos obrigatórios em erro: `error` (rótulo HTTP), `message` (texto legível), `code` (enum).
  * Middleware global: `UNAUTHORIZED`, `API_KEY_EXPIRED`, `API_KEY_REVOKED`, `RATE_LIMIT_EXCEEDED`, `ONBOARDING_REQUIRED`, `WORKSPACE_HEADER_NOT_ALLOWED`.
  * Novos códigos de negócio comuns: `WEBHOOK_NOT_FOUND`, `EMAIL_DOMAIN_NOT_FOUND`, `INSTANCE_CAPACITY_FULL`, `VOICE_*`, `NO_MEDIA`, `DOWNLOAD_FAILED`, etc.
  * **POST /v1/report** (denúncias FELCA) e download de mídia WhatsApp inbound passam a incluir `code` em todos os erros.

  **E-mail, verify de domínio (`POST /v1/email/domains/:id/verify`)**

  * DNS pendente: HTTP **200**, `success: true`, `verified: false`, `code`: **`EMAIL_DOMAIN_DNS_PENDING`**
  * Verificado: **`EMAIL_DOMAIN_VERIFIED`**
  * Falha DNS: **`EMAIL_DOMAIN_VERIFY_FAILED`**
  * Erros HTTP com `message` localizada e `code` específico

  ```json theme={null}
  {
    "success": true,
    "verified": false,
    "code": "EMAIL_DOMAIN_DNS_PENDING",
    "message": "Os registros DNS ainda não foram verificados. Confira no seu provedor DNS e tente novamente em alguns minutos.",
    "data": { "id": "clxx...", "domain": "seudominio.com", "status": "PENDING" }
  }
  ```

  ```json theme={null}
  {
    "success": false,
    "error": "Forbidden",
    "message": "Escopo ausente: whatsapp:send",
    "code": "FORBIDDEN"
  }
  ```

  Docs: [Respostas de erro](/guides/conceitos/resposta-de-erros) (lista com **208** códigos públicos), [Welcome](/welcome/welcome), OpenAPI de cada canal (schema `ErrorResponse` com `code` obrigatório).
</Update>

<Update label="21/07/2026" description="E-mail e WhatsApp, API v1">
  *Neste dia entrou uma novidade no WhatsApp (baixar mídia recebida pela API) e uma melhoria no cadastro de domínio de e-mail (mensagens de erro mais claras). Nada quebra no que já funciona, em caso de falha, use o campo `code` para decidir o próximo passo.*

  ### Novidades

  **WhatsApp, download de mídia em mensagens recebidas**

  *Agora dá para baixar imagem, áudio ou documento de uma mensagem inbound pela API, o mesmo fluxo do painel (Inbox e detalhe da mensagem).*

  * `GET /v1/whatsapp/messages/inbound/{id}/media/download`, retorna o **arquivo binário** com `Content-Type` e `Content-Disposition` (ideal para `curl -o` e scripts).
  * `POST /v1/whatsapp/messages/inbound/{id}/media`, body vazio; retorna JSON com `data.base64` (ideal para integrações que já decodificam em memória).
  * O tipo (`image` | `audio` | `document`) é inferido no servidor a partir do `contentPreview`.
  * Escopo: **whatsapp:read** (respeita `instanceIds` da API Key).
  * Requer instância **não oficial (QR)** ativa.

  ```bash theme={null}
  curl -L -H "Authorization: Bearer sk_live_..." \
    -o recebido.ogg \
    "https://api.notifique.dev/v1/whatsapp/messages/inbound/clxxinbound001/media/download"
  ```

  ```json theme={null}
  {
    "success": true,
    "data": {
      "contentType": "audio/ogg",
      "fileName": "audio.ogg",
      "base64": "..."
    }
  }
  ```

  *Fluxo sugerido:* confira `mediaFetch.fetchable` em `GET /v1/whatsapp/messages/inbound/{id}`, depois use GET (arquivo) ou POST (base64). URLs em `contentPreview.mediaUrl` são efêmeras e não substituem estes endpoints.

  Docs: [Introdução WhatsApp](/whatsapp-api/como-funciona/introducao), [Escopos da API Key](/whatsapp-api/como-funciona/escopos-api-key), [OpenAPI](/whatsapp-api/api-reference/openapi-whatsapp.json).

  ### Melhorias

  **E-mail, erros mais claros ao registrar domínio**

  *Antes, uma falha do provedor (ZeptoMail / SES) podia aparecer só como **502** genérico. Agora a resposta traz `message` legível, `code` e HTTP mais adequado, no idioma do cliente (`Accept-Language` / `x-locale`).*

  * Sucesso **(200)** e o corpo com registros DNS **não mudaram**.
  * Em erro, prefira tratar pelo **`code`** (use `message` para exibir ao usuário final).
  * Bloqueio antispam do provedor passa a retornar **422** em vez de 502.

  | `code`                              | HTTP      | Quando                                    |
  | ----------------------------------- | --------- | ----------------------------------------- |
  | `EMAIL_DOMAIN_ALREADY_REGISTERED`   | 409       | Domínio já ativo neste workspace          |
  | `EMAIL_DOMAIN_PROVIDER_ANTISPAM`    | 422       | Provedor bloqueou o domínio (antispam)    |
  | `EMAIL_DOMAIN_PROVIDER_REJECTED`    | 422       | Provedor recusou o domínio                |
  | `EMAIL_DOMAIN_PROVIDER_UNAVAILABLE` | 502 / 503 | Provedor indisponível ou falha temporária |
  | `EMAIL_DOMAIN_CREATE_BUSY`          | 429       | Cadastro do mesmo domínio já em andamento |

  Códigos já existentes (`PLAN_LIMIT_EMAIL_DOMAINS`, `WORKSPACE_BLOCKED`) continuam iguais.

  Docs: [E-mail API](/emails-api/como-funciona/introducao), [OpenAPI](/emails-api/api-reference/openapi-email.json), [Respostas de erro](/guides/conceitos/resposta-de-erros).
</Update>

<Update label="20/07/2026" description="Instagram, proteções anti-suspensão">
  *Novas regras para instâncias Instagram de conexão não oficial: ajudam a evitar suspensão por reconexão em loop ou volume alto em conta nova. Rotas e respostas de sucesso continuam iguais, só entram campos e códigos novos em caso de bloqueio.*

  ### Melhorias

  **Proteções anti-suspensão (conexão não oficial)**

  * **`expectedUsername`** (opcional) em **POST /v1/instagram/instances**
  * **GET /v1/instagram/instances/:id** expõe `lockedUsername`, `lockedIgUserPk`, `reconnectBlockedUntil`, `abusePausedUntil`, `firstConnectedAt` e objeto **`warmup`** (`active`, `dailyLimit`, `sentToday`, `daysRemaining`)
  * **Lock de conta:** uma instância = um username após o primeiro login. Troque de conta criando nova instância.
  * **Cooldown de 12 h** após disconnect involuntário + máx. **3 logins/hora**. Desconexão manual via API **não** aplica cooldown.
  * **Pause por abuso** quando o Instagram sinaliza rate-limit / restrição.
  * **Warm-up:** até **15 DMs/dia** nos **primeiros 5 dias** (instâncias novas).

  ### Avisos para integrações

  *Em erro, trate pelo `code` (e use `retryAfterSec` quando vier 429). Não reconecte em loop após queda: espere o cooldown ou crie uma nova instância.*

  | `code`                         | HTTP | Onde                                                   |
  | ------------------------------ | ---- | ------------------------------------------------------ |
  | `INSTAGRAM_ACCOUNT_MISMATCH`   | 409  | Login com conta diferente do lock/expected             |
  | `INSTAGRAM_RECONNECT_COOLDOWN` | 429  | Connect / challenge durante cooldown (`retryAfterSec`) |
  | `INSTAGRAM_ABUSE_PAUSE`        | 429  | Conta pausada após sinal de abuso                      |
  | `INSTAGRAM_WARMUP_DAILY_LIMIT` | 429  | **POST /v1/instagram/messages** no warm-up             |

  Docs: [Política anti-suspensão](/instagram-api/como-funciona/politica-anti-banimento), [Quick Start](/instagram-api/como-funciona/quick-start), [Respostas de erro](/guides/conceitos/resposta-de-erros).
</Update>

<Update label="19/07/2026" description="WhatsApp, proteções anti-banimento">
  *Mesma lógica do Instagram, agora no WhatsApp (conexão não oficial via QR): menos risco de ban por reconexão agressiva ou chip trocado na mesma instância. Sem quebra de rotas, campos e códigos aditivos.*

  ### Melhorias

  **Proteções anti-banimento (conexão não oficial)**

  * **`expectedPhoneNumber`** (opcional) em **POST /v1/whatsapp/instances**, valida o número no primeiro pareamento.
  * **GET /v1/whatsapp/instances/:id** expõe `lockedPhoneNumber`, `reconnectBlockedUntil` e objeto **`warmup`** (`active`, `dailyLimit`, `sentToday`, `daysRemaining`).
  * **Vínculo permanente:** uma instância = um número após a primeira conexão. Troque de chip criando nova instância.
  * **Cooldown de 6 h** após desconexão involuntária (ban, sessão derrubada). Desconexão manual via API não aplica cooldown.
  * **Warm-up:** até **20 mensagens/dia** nos **primeiros 3 dias** após `firstConnectedAt` (instâncias novas).

  ### Avisos para integrações

  | `code`                  | HTTP | Onde                                           |
  | ----------------------- | ---- | ---------------------------------------------- |
  | `PHONE_NUMBER_MISMATCH` | 409  | Pareamento com número errado                   |
  | `RECONNECT_COOLDOWN`    | 429  | **GET /qr** durante cooldown (`retryAfterSec`) |
  | `WARMUP_DAILY_LIMIT`    | 429  | **POST /v1/whatsapp/messages** no warm-up      |

  Docs: [Política anti-banimento](/whatsapp-api/como-funciona/politica-anti-banimento), [Quick Start](/whatsapp-api/como-funciona/quick-start), [Respostas de erro](/guides/conceitos/resposta-de-erros).
</Update>

<Update label="14/07/2026" description="Contrato canônico de envio unificado">
  *Padronizamos o formato de envio em todos os canais para quem integra mais de um ao mesmo tempo. Formatos antigos continuam funcionando, mas vale migrar para o contrato canônico quando puder.*

  ### Melhorias

  **Contrato canônico de envio**

  ```json theme={null}
  {
    "to": ["..."],
    "type": "text",
    "payload": { "message": "..." },
    "schedule": { "sendAt": "ISO" }
  }
  ```

  **Resposta 202:**

  ```json theme={null}
  { "success": true, "data": { "messageIds": ["..."], "status": "QUEUED", "count": 1 } }
  ```

  * **`to` é sempre array**, nunca string. Máximo **100** destinatários por requisição.
  * **`status` sempre MAIÚSCULO**, `QUEUED`, `SCHEDULED`, `SENT`, `DELIVERED`, `FAILED`.
  * **`messageIds`** é o campo canônico na resposta. Aliases por canal (`smsIds`, `emailIds`, etc.) continuam por compatibilidade.

  ### Novidades

  * **GET /v1/rcs/messages**, listagem de mensagens RCS.
  * **POST /v1/notify**, envio multi-canal em uma chamada (inclui Instagram).
  * **POST /v1/templates/send**, suporte ao canal Instagram (`instagram.instanceId`).
  * **MCP Notifique**, novas tools para RCS, Voz e Instagram Direct.

  ### Compatibilidade

  *Formatos anteriores ainda são aceitos: campos flat em SMS/E-mail/Push, `messageType` em RCS, `speak`/`playAudioUrl` em Voz.*

  Documentação atualizada: quick-starts de todos os canais, template-api, guides/webhooks e mcp-notifique.
</Update>

<Update label="08/07/2026" description="Instagram Direct e escopos de API Key">
  *Dia de lançamento grande: o canal Instagram Direct entrou na plataforma. No mesmo dia, a tela de API Keys passou a mostrar escopos que antes ficavam escondidos (RCS, conversões, grupos).*

  ### Novidades

  **Instagram Direct, novo canal**

  *Conecte uma conta, envie DMs pelo painel ou API, edite texto enviado, gerencie comentários e receba webhooks `instagram.*`.*

  * Login com usuário e senha (2FA / desafio quando o Instagram pedir); `acceptInstagramTerms` obrigatório.
  * Conteúdo: texto e mídia por URL HTTPS (imagem, vídeo, áudio, documento).
  * Editar mensagem (até 1000 caracteres, 15 min, 5 edições) e unsend quando permitido.
  * Comentários: listar, responder e apagar (`instagram:comments:reply`, `instagram:comments:moderate`).
  * Escopos: `instagram:send`, `instagram:read`, `instagram:cancel`, `instagram:update`, `instagram:delete` e instâncias.

  Docs: [Introdução Instagram](/instagram-api/como-funciona/introducao), [Quick Start](/instagram-api/como-funciona/quick-start), [Eventos dos webhooks](/instagram-api/como-funciona/eventos-do-webhooks).

  ### Melhorias

  **API Keys, escopos RCS, conversões e grupos**

  *Se sua integração usa RCS ou Smart Links, revise a chave e adicione os escopos abaixo para evitar 403.*

  * **RCS:** `rcs:send`, `rcs:read`, `rcs:cancel`
  * **Conversões (Smart Links):** `conversions:manage`
  * **WhatsApp grupos:** `whatsapp:groups` (com add-on ativo)
  * **Instagram:** `instagram:update` junto aos demais escopos do canal

  Docs: [Chaves de API](/guides/api-key/index), [RCS](/rcs-api/como-funciona/introducao), [Smart Links](/short-links-api/como-funciona/smart-links-e-conversoes).
</Update>

<Update label="28/06/2026" description="Segmentos: campos de plataforma, tópicos e ops tipados">
  ## Segmentos mais poderosos

  A DSL de **segmentos** ganhou regras novas e operadores tipados. Você continua com `version: 1`, `match` e até 32 regras, mas o conjunto de filtros aumentou.

  ### Novos tipos de regra

  * **`contactField`**: campos de plataforma (`name`, `phone`, `email`, `url`, `telegramPeer`, `languages`, `hasPhone`, `hasEmail`, `hasUrl`, `hasTelegram`)
  * **`topic`**: inscrito ou não em um tópico (`topicId` + `subscribed`)
  * Mantidos: `tag`, `property` (campos personalizados) e `receiveMarketing`

  ### Operadores tipados (`op`)

  Em `property`, use `op` conforme o tipo do campo (STRING, NUMBER, BOOLEAN, DATE), incluindo **`containsOneOf`** para várias cidades/valores numa regra só.

  `valueMatch: "exact" | "contains"` continua válido como legado; preferimos `op` nas integrações novas.

  ### Preview

  O preview do segmento segue paginado (máx. 500 por página) e pode indicar `totalCapped` quando o total estimado atinge o teto interno.

  Documentação: [Segmentos na audiência](/contacts-api/como-funciona/segmentos-na-audiencia).
</Update>

<Update label="11/06/2026" description="Números de telefone e Voice API">
  ## Novo canal: voz e números de telefone

  Lançamos **Números de Telefone** e a **Voice API** no Notifique: contrate números no painel, faça e receba ligações, e integre discadores, URAs e confirmações por telefone à sua stack.

  ### Números de telefone

  * **Contratação pelo painel**: busque números disponíveis por país/DDD, reserve e pague a mensalidade recorrente
  * **API v1**: `GET /v1/phone-numbers`, `GET /v1/phone-numbers/available`, `GET /v1/phone-numbers/{id}` e `PATCH /v1/phone-numbers/{id}` para consultar e configurar voz de entrada
  * **Comportamento inbound**: encaminhar (`FORWARD`), TTS e desligar (`TTS_HANGUP`), rejeitar, caixa postal ou controle via webhook (`WEBHOOK_CONTROL`)
  * **Escopos:** `phone_numbers:read`, `phone_numbers:update`

  ### Voice API

  * **Originar chamadas**: `POST /v1/voice/calls` com TTS, áudio por URL, coleta DTMF, gravação e detecção de caixa postal
  * **Acompanhar**: `GET /v1/voice/calls` e `GET /v1/voice/calls/{id}` (com `includeEvents=true`)
  * **Controlar sessão**: `POST /v1/voice/calls/{id}/actions/{action}` (`speak`, `play`, `gather`, `transfer`, `record-start`, `record-stop`, `dtmf`, `hangup`)
  * **Gravações**: download via `GET /v1/voice/calls/{id}/recordings/{recordingId}/download`
  * **Escopos:** `voice:call`, `voice:read`, `voice:control`
  * **Cobrança:** por minuto de voz (pague pelo uso ou créditos do plano)

  ### Webhooks

  Novos eventos disponíveis no painel:

  * **Chamadas:** `voice.call.initiated`, `voice.call.received`, `voice.call.ringing`, `voice.call.answered`, `voice.call.completed`, `voice.call.failed`, `voice.call.dtmf`, `voice.call.gather.ended`, `voice.call.recording.ready`, `voice.call.machine.detected`
  * **Números:** `phone_number.activated`, `phone_number.past_due`, `phone_number.suspended`, `phone_number.released`

  Documentação: [Números de Telefone, Quick Start](/phone-numbers-api/como-funciona/quick-start), [Voice API, Quick Start](/voice-api/como-funciona/quick-start) e [Eventos dos Webhooks (Voice)](/voice-api/como-funciona/eventos-do-webhooks).
</Update>

<Update label="10/06/2026" description="Inbox unificado e escopos obrigatórios em API Keys">
  *Dois temas no mesmo dia: o Inbox virou central de atendimento de verdade, e as API Keys novas passam a exigir escopos explícitos (com prazo para migrar chaves antigas).*

  ### Novidades

  **Inbox unificado com gestão de atendimento**

  *Uma caixa de entrada para WhatsApp, SMS, Telegram e Widget IA, com fila, responsável, métricas e resumo por IA. E-mail continua fora do Inbox (foco em conversa em tempo real).*

  * Fila única com status (Aberta, Pendente, Resolvida), responsável e filtros por canal
  * Atribuir conversa manual ou automaticamente; resolver e reabrir
  * Roteamento: automação/IA, aguardando colega ou humano ativo
  * Métricas: primeira resposta, resolução, conversas sem responsável
  * Responder com texto, template ou imagem por URL; painel lateral com resumo IA e link ao contato

  ### Melhorias

  **API Keys, escopos obrigatórios na criação**

  *Novas chaves exigem pelo menos um escopo (ex.: `whatsapp:read`, `sms:send`). Não dá mais criar chave “em branco” com acesso total pelo painel.*

  ### Avisos

  *Chaves antigas sem escopos (lista vazia = acesso total) continuam até **1º de julho de 2026** (horário de Brasília). Depois disso, retornam **403**. Crie uma chave nova com escopos mínimos ou edite a existente.*

  1. **Configurações → API Keys** → nova chave com escopos necessários.
  2. Troque na aplicação e revogue a antiga quando estável.
  3. Ou **Editar** a chave atual e definir escopos explicitamente.

  Docs: [Chaves de API](/guides/api-key/index).
</Update>

<Update label="09/06/2026" description="Indicação, campanhas e Smart Links">
  *Dia focado em crescimento e CRM: programa de indicação, campanhas mais completas, cupons no checkout, instâncias extras e rastreamento de conversão nos links.*

  ### Novidades

  **Programa de indicação**

  *Indique e ganhe 15% de comissão por 12 meses; quem entra pelo seu link ganha 10% nas 3 primeiras mensalidades. Painel em Configurações → Cobrança (`/dashboard/affiliate`).*

  **Instâncias extras (add-on)**

  *Precisa de mais WhatsApp ou Telegram? R\$ 7,90/mês por slot (+1 de cada canal), até 20 slots. Add-ons → Instâncias extras.*

  **Smart Links e conversões**

  *Links curtos evoluíram: UTMs automáticos no redirect, pixel de conversão e API `POST /v1/conversions` para fechar o ciclo mensagem → clique → venda.*

  ### Melhorias

  **Campanhas no CRM**

  * Agendar envio (`scheduledFor`) e cancelar agendamento
  * Lista com status legíveis e mini-resumo enviados · entregues · falhas
  * KPIs, funil por canal, timeline e lista de destinatários (painel e API)
  * UTMs automáticos (`utm_campaign`, `utm_content`) em links da campanha

  **Cupons no checkout**

  *Campo “Tem um cupom?” na página de Planos, desconto percentual ou fixo por N ciclos.*

  Docs: [Campanhas](/contacts-api/como-funciona/campanhas-no-painel), [Smart Links](/short-links-api/como-funciona/smart-links-e-conversoes), [Links curtos, Introdução](/short-links-api/como-funciona/introducao).
</Update>

<Update label="26/05/2026" description="Sending Pools no WhatsApp">
  ## Vários números trabalhando juntos

  Para operações com **volume alto** no WhatsApp, você pode agrupar instâncias num **pool de envio** e distribuir mensagens entre os números: reduzindo risco de bloqueio e equilibrando carga.

  * **Estratégias de distribuição:** rodízio, por **peso** (números “mais fortes” mandam mais) ou **menor uso** (quem enviou menos hoje é o próximo)
  * **Proteções automáticas:** pausa por falhas consecutivas (circuit breaker), **cooldown** entre lotes, **limite diário** por número e monitoramento de saúde no painel
  * **Retrocompatível:** se você escolher `instanceId` ou número específico na API ou no painel, nada muda; sem número definido, usa o **pool padrão** do workspace
  * **Campanhas:** escolha um pool no editor para distribuir todos os destinatários entre os números do grupo

  Crie e gerencie pools no painel com o wizard (nome → estratégia → ajustes). Documentação: [Sending Pools](/whatsapp-api/como-funciona/sending-pools).
</Update>

<Update label="21/05/2026" description="CRM enterprise e funil (kanban)">
  ## Ficha do contato mais completa

  A página de **detalhe do contato** ganhou abas dedicadas para operação de vendas e atendimento:

  * **Visão geral**: dados, tags, tópicos, segmentos e inteligência operacional
  * **Timeline**: histórico cronológico unificado: envios e recebidas (WhatsApp, SMS, e-mail, Telegram, widget web), automações, notas, tarefas, mudanças no funil e insights de IA
  * **Notas**: anotações internas da equipe, com opção de **fixar** as mais importantes
  * **Tarefas**: follow-ups com título, prazo, responsável e status (aberta/concluída)
  * **Conversas**: todas as threads do inbox ligadas ao contato, com link direto para cada uma

  ## Perfil IA de relacionamento

  Gere um **snapshot narrativo** do contato com botão **“Atualizar perfil IA”**: saúde do relacionamento, estágio do ciclo de vida (Novo, Ativo, Em risco, Inativo, Campeão), satisfação, comportamentos, tendências, **melhores horários para contatar** e recomendações práticas. Há também **chat de IA** sobre o contato (“próximo passo?”, “risco de churn?”).

  ## Funil kanban (pipeline)

  Novo módulo em **Funil** (`/dashboard/pipeline`): quadros de **vendas**, **suporte** ou **personalizados** com colunas editáveis (arrastar cards). Cada card é uma **oportunidade** ligada a um contato, com título, valor, prazo e responsável. O painel lateral mostra o contato, tarefas e notas; mudanças de estágio ficam registradas na timeline do contato. Dá para criar oportunidade a partir da ficha do contato.
</Update>

<Update label="15/05/2026" description="Integrações MCP para o assistente">
  ## Conecte Gmail, Outlook, Drive e mais ao assistente

  Na aba **MCP** (em Automações), você conecta serviços externos sem programar:

  * **Gmail, Google Calendar, Google Drive** (OAuth)
  * **Outlook** (e-mail e calendário), **SharePoint**, **Microsoft Teams**, **Dropbox**
  * **Servidor MCP customizado** (HTTPS) com token ou headers próprios

  Ao editar um **assistente**, vincule conexões MCP e **ferramentas HTTP** (chamadas a APIs que você define). Pode restringir quais ferramentas remotas o assistente pode usar (allowlist). O assistente passa a consultar e-mail, calendário, arquivos e outros sistemas conforme os escopos autorizados: em **automações**, **teste no painel** e, se habilitado, no **chat do site**.

  ## Checkpoint de aprovação nos fluxos

  Novo passo no editor de automações para marcar no fluxo que **antes de ramos com ferramentas que alteram dados externos** a equipe deve aprovar manualmente. É um **marco documental** (com nota interna opcional) para processos aprovados fora da plataforma: não pausa a execução nem pede clique de aprovação dentro do produto.

  Documentação: [Introdução, Automações](/automations-api/como-funciona/introducao) e [Assistentes](/automations-api/como-funciona/assistentes).
</Update>

<Update label="11/05/2026" description="Widget de IA para o seu site">
  ## Chat com IA no canto do seu site

  Novo add-on **Chat com IA** (Add-ons → Chat com IA): um **widget embeddável** que responde visitantes com base no assistente e na base de conhecimento que você configurou.

  * **Instalação simples**: copie o snippet `<script>` do painel e cole no site; **preview ao vivo** enquanto personaliza cores, posição, textos de boas-vindas e perguntas sugeridas
  * **Domínios autorizados**: o widget só funciona nos hosts que você permitir
  * **Identificação do visitante**: modos **anônimo**, **opcional** (nome/e-mail/telefone) ou **obrigatório**; quem preenche vira **contato no CRM** automaticamente
  * **Verificação por código OTP**: opcional: envia código de 6 dígitos por e-mail, SMS ou WhatsApp antes de liberar a conversa (consome créditos de envio)
  * **Login no site (HMAC)**: se o visitante já está logado no seu site, o backend pode assinar a identidade sem formulário nem OTP
  * **Handoff humano**: conversas entram no **Inbox** como canal Widget IA; pode transferir para atendente; visitante pode disparar automações

  Documentação: [Widget de IA](/ai-web-widget/index) e [Configuração](/ai-web-widget/configuracao).
</Update>

<Update label="08/05/2026" description="Onboarding inteligente e regras de plano">
  ## Onboarding que entende o seu negócio

  Novo passo **“Sobre o negócio”** no onboarding: informe nome da empresa, site e descrição (ou pule). A **IA analisa** o site/descrição e gera um perfil com resumo, tipo de negócio e **sugestões de templates e automações**: atalhos prontos para começar rápido.

  Na **central do dashboard**, o widget **“Sugestões para o seu negócio”** mantém essas recomendações visíveis enquanto o workspace está em fase inicial.

  ## Limites de instâncias e expiração de plano mais claros

  * **Limites por canal**: WhatsApp e Telegram têm cotas **separadas** (ex.: Pro = 2 de cada); o wizard de criação de instância e a página de planos deixam isso explícito
  * **Expiração automática**: quando a assinatura paga expira, o workspace é rebaixado automaticamente (sem depender de ação manual)
  * **Data de expiração visível**: `planExpiresAt` aparece na assinatura e nas configurações do workspace, com mensagens de trial/período de teste na página de assinatura
  * Ao tentar exceder o limite do plano, o bloqueio é **claro** na API e no painel
</Update>

<Update label="07/05/2026" description="Inbox WhatsApp, extrato de consumo e ferramentas WA">
  ## Sincronize o histórico do WhatsApp

  No **Inbox**, em conversas WhatsApp, o botão **“Sincronizar conversa”** importa até **\~30 mensagens recentes** da conexão, inclusive mensagens enviadas **pelo celular**, que não passaram pela plataforma. Mensagens importadas aparecem com origem **“Do celular”**. Dá para **carregar mídia** sob demanda (imagem, áudio, documento, vídeo) quando o preview não veio completo.

  ## Responder com mais recursos no inbox

  * **Templates** (WhatsApp, SMS, Telegram) com preview de variáveis: enviar direto ou colocar no campo de texto
  * **Imagem por URL** (WhatsApp e Telegram)
  * **Tags IA padronizadas** no painel lateral (ex.: “cliente frustrado”, “alta intenção”)

  ## Extrato detalhado de créditos e saldo

  Substituímos a visão antiga de “uso de créditos” por um **extrato completo** (`workspace credit ledger`): cada envio e consumo registrado com **canal**, **valor** e se foi cobrado em **créditos de plano** ou **saldo pré-pago**: mais transparência para entender onde o orçamento vai.

  ## Ferramentas WhatsApp Link

  Ferramentas extras no painel para instâncias WhatsApp compatíveis:

  * Ajustar **privacidade** da conta (último visto, foto, grupos etc.)
  * **Importar contatos da agenda WhatsApp** para o CRM
</Update>

<Update label="06/05/2026" description="Automações: webhooks, sinais e condições numéricas">
  ## Webhook por automação

  Cada fluxo pode ter um **URL público** e um **segredo** próprios. Sistemas externos (CRM, e-commerce, ClickUp etc.) enviam um POST com o JSON deles; você **mapeia campos** do payload (ex.: `task.status`) para usar em condições e passos seguintes. Opcionalmente mapeia contato por ID, e-mail ou telefone.

  ## Esperar sinal e condições mais ricas

  * **Esperar sinal**: o fluxo pausa até acontecer algo: **e-mail aberto**, **recibo de leitura no WhatsApp** ou **evento registrado da automação**, com ramo de **timeout** opcional (ex.: “mandou e-mail → espera abrir → manda follow-up”)
  * **Condições numéricas**: além de “igual” e “contém”, compare números com **maior que, menor que, maior ou igual, menor ou igual** (valores de pedido, quantidades, scores)
  * **Gatilho por mensagem recebida**: automações disparam quando chega mensagem inbound (WhatsApp, Telegram etc.), não só por eventos internos

  Documentação: \[Webhooks de integração]\(/guides/simples assim/automacoes-webhooks-de-integracao).
</Update>

<Update label="29/04/2026" description="CRM: filtros avançados e propriedades">
  ## Encontre contatos com precisão

  A página de **Contatos** e a **API v1** ganharam filtros avançados:

  * Por **tópicos** (`topicIds`), **segmento** (`segmentId`) e **propriedades customizadas** (`propertyFilters`)
  * Filtros por marketing, presença de URL/Telegram e combinações de regras
  * **UI de filtros avançados** no painel com busca segmentada, feedback visual de carregamento e colunas configuráveis

  No CRM, dá para **pré-visualizar contatos** associados a cada **tag** e a cada **tópico** antes de disparar. O fluxo de **propriedades customizadas** de contato foi aprimorado na criação e edição.

  ## Editor de e-mail mais fiel ao HTML original

  O editor de templates de e-mail passou a **preservar o HTML original** de campanhas de marketing: imagens inline, estilos e estrutura mantidos com melhor compatibilidade.
</Update>

<Update label="27/04/2026" description="IA por workspace: bases de conhecimento e assistentes">
  ## Bases de conhecimento (RAG) por workspace

  Crie **bases de conhecimento**, faça **upload de documentos** e use o conteúdo em automações e assistentes. O assistente responde com base no que você subiu: políticas, catálogos, FAQs, manuais.

  ## Assistentes configuráveis

  Em **Automações → Assistentes**, configure assistentes com **instruções próprias**, bases vinculadas e **chat de teste** no painel. Novo passo **“Assistente IA”** nos fluxos de automação: responde conversas **inbound** usando RAG e histórico da sessão, com suporte a conversas **multi-turno**.

  A página de **Automações** ganhou abas **Bases de conhecimento** e **Assistentes**. Várias listagens do dashboard passaram a ter visualização **tabela/cards** responsiva.

  Documentação: [Introdução, Automações](/automations-api/como-funciona/introducao).
</Update>

<Update label="25/04/2026" description="Assistente da plataforma, proxy e tags de audiência">
  ## Assistente de IA no painel

  Novo **assistente de IA** no painel lateral: converse em threads e peça para **executar ações** no workspace: listar/criar contatos, enviar WhatsApp, gerenciar instâncias, criar API keys etc. QR codes e chaves geradas aparecem inline na conversa.

  ## Conexões mais estáveis

  **Proxy residencial dedicado** (automático para workspaces elegíveis) na criação de instâncias **WhatsApp** e **Telegram**: melhora estabilidade sem ação manual.

  ## CRM e campanhas

  * Nova aba **Tags de audiência** no CRM para criar e gerenciar tags de contatos
  * **Confirmação antes de disparar campanha**, com preview da audiência
  * **Preview rico** de mensagens WhatsApp recebidas (texto, mídia, botões) na API e na tela de detalhe do inbound
  * **Editor de templates** mais capaz (comandos `/`, sidebar, canvas por canal)
  * **Página de contatos** reorganizada com melhor UX de listagem e filtros
</Update>

<Update label="22/04/2026" description="WhatsApp atualizado e painel em 3 idiomas">
  ## WhatsApp com conexão mais estável

  Ao criar instância WhatsApp por QR, o fluxo completo de conexão, desconexão, grupos e mensagens foi aprimorado. Quando disponível no workspace, você escolhe o modelo de conexão no wizard.

  O **wizard de criação de instância** foi reformulado com etapa de escolha do modelo.

  ## Painel em português, inglês e espanhol

  Internacionalização ampla do dashboard: textos de onboarding, CRM, envios, webhooks, configurações e demais telas seguem o idioma do workspace/usuário. **Mensagens de erro da API** também são localizadas conforme o locale configurado.
</Update>

<Update label="20/04/2026" description="Links curtos (clicar.co) em todos os canais">
  ## Rastreie cliques nos links que você envia

  Agora o Notifique pode **encurtar automaticamente** os endereços **http/https** que aparecem nas suas mensagens da **API v1**, quando você liga a opção no workspace. Isso vale para **SMS**, **WhatsApp**, **Telegram**, **e-mail**, **RCS** e **push**.

  Você continua escrevendo a mensagem como sempre; o sistema troca os links longos por links no domínio **clicar.co**, **sem mudar o restante do texto**. Assim fica mais fácil medir **quantas pessoas clicaram**, com estatísticas no painel e na API.

  ## O que você precisa fazer

  * Em **Configurações do workspace**, ative **links curtos** e, se quiser, marque **converter links automaticamente** nos envios.
  * No **add-on de links curtos**, você também pode **criar links na mão** e ver a lista dos mais recentes.

  Se preferir não usar conversão automática em algum momento, é só **desligar o interruptor**; nada quebra nos seus fluxos atuais.

  ## Webhook quando alguém clica no link curto

  Se você cadastrou um webhook e marcou o evento **`short_link.clicked`**, o Notifique avisa seu endpoint **cada vez que um clique for registrado** (depois de salvar no analytics). No JSON vêm o **id do clique**, o **link**, a **URL de destino**, país/dispositivo quando der para inferir, UTM e **hash do IP** (sem enviar o IP em texto puro). Assim você integra com CRM, anti-fraude ou relatórios sem ficar consultando a API em loop.

  ## Status **CLICKED** no envio (além do e-mail)

  Com **links curtos** e **atribuição por envio**, o primeiro clique em um link **clicar.co** daquela mensagem pode marcar o registro do canal como **`CLICKED`** (e preencher **`clickedAt`**), como já acontecia no e-mail com o provedor. Isso vale para **WhatsApp**, **SMS**, **Telegram**, **RCS** e **push** (no push, o clique na **notificação** continua sendo o fluxo **`push.clicked`** pelo endpoint do service worker; o link curto dentro do texto segue o rastreamento interno).

  Para integrações, além de **`short_link.clicked`** (analytics), passamos a oferecer eventos por canal quando o clique **atualiza** o envio: **`message.clicked`**, **`sms.clicked`**, **`telegram.clicked`**, **`rcs.clicked`** e **`email.clicked`** (este último também pode vir do ZeptoMail). Ative no painel os nomes que o seu endpoint precisa.

  Na **Caixa sandbox**, use a simulação **Clicked (short link)** onde o canal suporta, para receber o mesmo webhook de produção com **`sandbox: true`**.
</Update>

<Update label="19/04/2026" description="Sandbox (sk_test_, Caixa sandbox) e melhorias no editor de automações">
  ## Lançamos o modo sandbox na API e no painel

  Agora você integra e testa com **chaves `sk_test_`**: são os **mesmos endpoints `/v1`** da produção, mas **sem** envio real para Meta, SMS, e-mail, push ou RCS. Tudo que você dispara em sandbox aparece na **Caixa sandbox** (menu **Developer**), com **até 50 mensagens por dia (UTC)** por workspace, **7 dias** de retenção e agendamentos que você libera no painel com **Release now**.

  Os **webhooks** continuam com os **mesmos nomes** de evento da produção e passam a incluir **`sandbox: true`** no payload para filtrar teste x produção no mesmo endpoint.

  Publicamos também **guia na documentação** e **artigo no blog** para explicar em linguagem simples como criar a chave, quando usar sandbox e o fluxo de homologação.

  * **Documentação:** [Sandbox mode](/guides/sandbox/index)
  * **Blog:** [Ambiente sandbox: testar integração sem enviar SMS (nem e-mail) de verdade](https://notifique.dev/blog/sandbox-ambiente-de-testes-api)

  ## Editor de fluxos mais completo e previsível

  No **painel de automações** ganhamos passos e regras que deixam jornadas **mais claras** e **mais seguras** de editar:

  * **Encerrar fluxo (`endFlow`)**: passo **terminador**: não envia nada e não tem saída; serve para fechar um ramo (por exemplo “senão” de uma condição) sem pendurar mais nada. O motor grava o passo como concluído e segue a regra normal de fim de run quando não há mais passos pendentes.
  * **Condição em gatilho por mensagem recebida**: quando o gatilho é **inbound** (WhatsApp, Telegram ou SMS), a condição compara o **texto da mensagem** (`body` / `bodyPreview` / `preview`) com operadores como **igual**, **contém**, **começa com**, etc. Não há “fonte evento vs contato” nesse modo: só o texto recebido. Em gatilho por **evento** da API, a condição continua podendo olhar **payload do evento** ou **dados do contato** (com campo / path obrigatório).
  * **Condição dentro de condição**: dá para colocar **outra condição** a partir do **+** do ramo **Verdadeiro** ou **Falso** (antes o painel só permitia passos “lineares” ali). Isso permite regras **mais granulares** em sequência.
  * **Sempre dois ramos**: depois de apagar passos (por exemplo uma condição intermediária), o editor **garante** que cada **condição** continue com saída **Verdadeiro** e **Falso**; se faltar um lado, volta a aparecer o **placeholder (+)** para você escolher o próximo passo: evita fluxo “quebrado” com só um braço.
  * **Esperas curtas corretas**: ajuste no **motor de filas** para delays **não serem executados antes da hora**. Hoje o agendamento respeita o horário devido com **promoção periódica** da fila de automação.
</Update>

<Update label="18/04/2026" description="Push: preço no Pague pelo uso (R$ 0,01)">
  ## Envio de push mais barato no saldo em reais

  No **Pague pelo uso** (débito em **centavos de saldo**), cada **envio de push** passou a custar **R$ 0,01** por mensagem (antes **R$ 0,05**). **Créditos de plano** seguem **1 crédito por push**, como antes. Demais canais no avulso (SMS, e-mail, WhatsApp, Telegram, RCS) **não mudaram**.
</Update>

<Update label="17/04/2026" description="Automações: painel, API v1 e jornadas">
  ## Um ecossistema de automações

  O Notifique passa a oferecer **automações de ponta a ponta**: no **painel** você monta e acompanha **fluxos** com um editor visual; na **API v1** você pode **criar, listar e atualizar** automações, **disparar eventos** que iniciam ou alimentam esses fluxos e integrar tudo ao **seu produto ou CRM**: sem ficar preso só à interface. O mesmo desenho de jornada vale para quem prefere clicar e para quem prefere automatizar por código.

  Cada fluxo começa a partir de um **evento** (por exemplo alguém novo na base ou um evento que o seu sistema envia para o Notifique). Os passos podem incluir **enviar e-mail ou outras mensagens**, **esperar um tempo**, **atualizar dados do contato** e **dividir o caminho** quando uma condição for verdadeira ou falsa.

  Isso ajuda a **acompanhar a pessoa no tempo certo**, com mensagens alinhadas ao que ela fez ou ao que você já sabe sobre ela no Notifique: seja configurando no painel ou orquestrando pela API junto com o restante da sua stack.

  ## Exemplos do dia a dia

  * **Boas-vindas e depois dicas**: Envie um **e-mail de boas-vindas** assim que o evento acontecer e, **alguns dias depois**, outro e-mail com dicas. Basta colocar um passo de **espera** (por exemplo 3 dias) entre os dois envios.
  * **Conteúdo diferente por plano**: Use uma **condição** em cima de um dado do contato ou do evento (por exemplo plano gratuito ou pago) e **ramifique** o fluxo: um caminho envia um tipo de mensagem, o outro caminho envia outro: cada público recebe o que faz sentido.
  * **Só avançar depois da integração**: Monte a sequência para que a **próxima mensagem só venha depois** que a pessoa tiver tempo de concluir um passo importante (como terminar a integração). Você combina **esperas** e o que acontece no evento ou no contato para não apressar a jornada e melhorar a experiência.

  Em resumo: menos trabalho manual repetido, mensagens **no ritmo** da pessoa e **caminhos diferentes** quando o contexto muda: com **painel e API** trabalhando juntos no mesmo ecossistema.
</Update>

<Update label="16/04/2026" description="Recebimento de mensagens">
  ## Mensagens que chegam para você: mais claro no painel e nos webhooks

  Em **Configurações do workspace → Mensagens recebidas (Received messages)** ficou explícito o que acontece quando **alguém manda mensagem para você**: por exemplo no **WhatsApp**, **Telegram** ou **SMS**. Você pode só **guardar** no Notifique (para ver depois no painel), só **avisar um endereço seu** (webhook) para outro sistema reagir na hora, ou **fazer as duas coisas**. No WhatsApp dá para tratar **conversa com uma pessoa** e **grupo** de formas diferentes; onde for preciso, continua valendo o aceite dos **recursos de grupo** no workspace.

  Para **WhatsApp**, há um tipo de aviso de webhook pensado só para **mensagem recebida** (quando isso estiver ligado nas opções do workspace). Quem já tinha um webhook configurado com o nome antigo **continua recebendo** o aviso do mesmo jeito.

  Se você optar por **guardar** mensagens recebidas no Notifique, isso pode usar **crédito ou saldo** do seu plano: a tela deixa isso indicado de forma simples, para não haver surpresa.

  No **painel**, em **Mensagens recebidas**, também dá para criar **regras extras** para mensagens recebidas: por exemplo “se tiver **link**” ou “se o texto tiver **as palavras que você definir**”, aí você marca se quer **guardar**, **webhook** ou **os dois** só nesses casos: em cima do que já definiu como padrão.

  Quem integra por **API** continua podendo ajustar tudo com mais detalhe; a documentação de workspace e webhooks foi alinhada a esse comportamento.

  ## Regras nas mensagens recebidas

  Nas opções de cada **canal** (SMS, e-mail, Telegram, RCS, WhatsApp), você escolhe se o **guardar** e o **webhook** valem **sempre** pelos interruptores da tela, ou **só quando couber em uma regra** que você cadastrou. Cada regra pode olhar se a mensagem tem **link** e/ou **palavras** que você listar, e aí ligar **guardar**, **webhook** ou os dois **só nesses casos**. No **WhatsApp**, isso pode ser feito em separado para **conversa com uma pessoa** e para **grupo** (grupo depende dos recursos de grupo do workspace).
</Update>

<Update label="15/04/2026" description="Templates: histórico, testes, idiomas e IA">
  ## Histórico do template: ver o passado e voltar com segurança

  Sempre que você **salva** um template, o Notifique registra uma **versão** daquele momento. Isso significa que você pode **abrir o histórico**, **ver como o template estava antes** (inclusive numa pré-visualização) e, se precisar, **restaurar** uma versão anterior: ideal quando alguém mudou demais o texto, quando um disparo antigo funcionava melhor ou quando você quer comparar duas abordagens sem medo de perder o trabalho atual.

  ## Testar o template antes de usar de verdade

  Antes de colocar o template em campanha ou automação, você pode fazer um **envio de teste** (sem consumir crédito como um disparo real). Agora dá para enviar o teste **para você mesmo** (telefone e e-mail da sua conta) **ou para um único contato** do seu workspace: assim você valida nomes, campos personalizados e o jeito da mensagem em alguém real, sem enviar para a lista inteira.

  Para ficar óbvio que não é produção, o teste sai com a marca **`[TEST]`** no começo do texto em **SMS, WhatsApp e Telegram**, e com **`[TEST]` no assunto** do **e-mail** (o corpo do e-mail não é alterado por isso). Vale lembrar: para testar canais que dependem de instância, o workspace precisa ter as instâncias padrão de **WhatsApp** e **Telegram** configuradas quando você quiser usar esses canais no teste.

  ## Vários idiomas, variáveis e IA no mesmo template

  Ficou mais claro trabalhar com **vários idiomas** no mesmo template: escolher em qual idioma está editando, **definir qual é o principal**, **remover** um idioma extra que não vai mais usar e usar **tradução assistida por IA** quando há mais de um idioma no template.

  As **variáveis** (campos do contato, propriedades e valores padrão por canal) continuam acessíveis de forma organizada enquanto você edita. O **assistente de IA** ajuda a redigir ou refinar o conteúdo dos canais com base no que você pedir, e a tradução por IA segue o fluxo de confirmação e cobrança que você já conhece.

  Nos bastidores, o serviço **limita o tamanho** do que pode ser enviado à IA e aplica checagens de segurança, para manter tudo estável e previsível: sem você precisar se preocupar com detalhe técnico.
</Update>

<Update label="14/04/2026" description="CRM, Localização, Analytics, Templates, Infra de IA, Add-ons">
  ## Idiomas preferidos no contato (CRM)

  Cada contato pode ter uma **lista de idiomas** (códigos **BCP-47**, por exemplo `pt-BR`, `en-US`), usada pelo motor de envio quando você ativa **localização** na mensagem:

  * **Painel**: edite idiomas na ficha do contato (detalhe do CRM).
  * **API e envios**: WhatsApp, SMS, e-mail, push, RCS, Telegram e **templates** passam a considerar `languages` do contato ao resolver texto por destinatário.

  Isso deixa campanhas multilíngues alinhadas ao perfil real de cada pessoa, sem depender só do texto “padrão” do disparo.

  ## Analytics e performance individual do contato

  Na **ficha do contato** ganhamos uma visão mais operacional de **engajamento e histórico**:

  * **Insights**: resumo com score de engajamento, nível (alto/médio/baixo) e bullets acionáveis.
  * **Gráficos e canais**: leitura de volume e desempenho ao longo do tempo, com recorte por canal quando aplicável.
  * **Contexto para o time**: menos “achismo”: abre o contato e vê se ele responde, em quais canais interage mais e como isso evolui.

  ## Localização de mensagens: manual, automática (IA) e desligada

  Nos fluxos de **nova mensagem** (canais suportados) e em **API v1**, a **localização** passa a ser explícita:

  * **Desligada**: um único texto para todos (comportamento clássico).
  * **Manual**: você envia um objeto **i18n** (JSON por locale) com traduções já prontas; o backend escolhe o bloco certo usando `sourceLocale` + idiomas do contato.
  * **Automática (IA)**: o texto base é traduzido por modelo (OpenAI ou API compatível), com regras rígidas para **preservar placeholders** (`{{nome}}`, etc.) e **HTML** em e-mails; se a IA falhar ou não estiver configurada, há **fallback para o texto base**.
  * **Custo**: no modo IA, a cobrança segue a política do produto (por destinatário traduzido); o painel indica quando o envio usa idiomas do CRM.

  ## Templates: traduções por locale

  Templates ganharam suporte a **traduções por locale/canal** (`localeTranslations` no cadastro), permitindo manter variantes de texto organizadas no mesmo template e alinhar isso à localização e aos canais oficiais quando fizer sentido.

  ## Benefícios em conjunto

  Idiomas no CRM + localização manual ou IA + analytics por contato reduzem atrito em base global, dão previsibilidade de custo na IA e mostram **quem** está respondendo: não só “quantas mensagens saíram”.

  ## Envio: prioridade, webhook por lote e metadata

  Nas APIs v1 de **SMS, e-mail, push, RCS, WhatsApp e Telegram**, o body de envio passa a documentar de forma explícita:

  * **`options.priority`**: fila prioritária de entrega da mensagem (e, quando aplicável, fila prioritária de webhooks).
  * **`options.webhook`**: URL HTTPS (e `secret` opcional) para receber **só** os eventos daquele envio, no mesmo formato dos webhooks cadastrados.
  * **`metadata`**: pares string→string persistidos no registro do envio (por canal).

  A documentação Mintlify (quick starts por canal), o guia de **webhooks** e as **referências da API** por canal na navegação lateral foram atualizadas.

  ## Denúncias públicas e Platform Status

  * **POST** `/v1/report`: endpoint público para denúncias (FELCA); documentação em [API de denúncias](/guides/compliance/report-api).
  * **Platform Status**: super admins veem as últimas denúncias recebidas, com detalhes ao clicar na linha.
</Update>

<Update label="11/04/2026" description="Telegram, API v1, Documentação, Painel">
  ## Novo canal: Telegram

  Passamos a oferecer **Telegram** como canal de mensagens, integrado ao mesmo modelo da **API v1** e **webhooks** que você já usa nos outros canais:

  * **Dois modos de conexão:**
    * **Bot**: cadastro com token do @BotFather.
    * **Conta de usuário**: fluxo de login com **QR** ou **string de sessão** após aceite dos termos no painel.
  * **API v1**: envio de texto, mídia por URL, localização (localização apenas no modo bot, conforme suporte atual); listagem e detalhe de mensagens; cancelar, editar texto e apagar quando o Telegram permitir; listagem e detalhe de **atividade recebida**.
  * **Dashboard**: criar e gerir instâncias Telegram, assistir ao fluxo de QR/sessão e acompanhar envios e recebidas no painel.
  * **Documentação**: guia dedicado **Telegram API**.

  Novos **escopos de API Key** para Telegram (envio, leitura, edição, cancelamento, exclusão de mensagem e gestão de instâncias) aparecem ao criar ou editar chaves no painel.

  ## API de contatos e audiência (v1)

  Além do painel, **tópicos de comunicação**, **segmentos de audiência** (regras dinâmicas, distintos das tags) e **campanhas** passam a ter **endpoints em `/v1`** com escopos dedicados (`topics:*`, `segments:*`, `campaigns:*`, incluindo `campaigns:run` para executar o disparo). A documentação **Contatos** foi ampliada com esses caminhos.
</Update>

<Update label="10/04/2026" description="Segmentos v1: propriedade (texto)">
  ## Regras de segmento: campo personalizado com “contém” e ignorar maiúsculas

  Na **DSL de segmentos versão 1** (`definition.version: 1`), regras do tipo `property` ganharam campos opcionais:

  * **`valueMatch`:** `exact` (padrão, comportamento anterior) ou `contains` (substring no valor salvo).
  * **`ignoreCase`:** `true` para comparar sem diferenciar maiúsculas/minúsculas.

  Segmentos antigos **sem** esses campos continuam válidos. O painel expõe as opções na regra **Custom field**; a API de criação/edição de segmento aceita o mesmo JSON. Detalhes e exemplos em [**Segmentos na audiência**](/contacts-api/como-funciona/segmentos-na-audiencia).

  **Observação:** os modos de texto se aplicam a valores de propriedade armazenados como **string** no JSON do contato.
</Update>

<Update label="09/04/2026" description="API v1, Dashboard, CRM, Templates, Compliance">
  ## Contatos e Audiências: Topics, Segments e Campaigns

  Lançamos uma nova camada de gestão de audiência para unir operação de contatos, segmentação e campanhas em um fluxo único no painel:

  * **Custom fields (contact properties):** definição de campos personalizados para enriquecer contatos e personalizar envios.
  * **Topics e preferências públicas:** criação de tópicos de comunicação com página pública de preferências para opt-in/opt-out do usuário final.
  * **Segments com DSL:** criação de segmentos dinâmicos com preview de contatos antes do disparo.
  * **Campaigns com execução em pipeline existente:** disparos em lote reaproveitando o pipeline atual de envio.
  * **Tela Audience no dashboard:** painel único para administrar tópicos, segmentos e campanhas com ações de criar, editar, pré-visualizar, executar e excluir.

  ## Templates com categoria de marketing e regras de descadastro

  Também adicionamos controles para classificar templates e garantir conformidade por canal:

  * **Categoria do template:** suporte para classificar templates como transacionais ou marketing.
  * **Vínculo com tópico de marketing:** templates de marketing podem ser associados a um tópico específico para respeitar consentimento.
  * **Descadastro automático por canal:**
    * **SMS e WhatsApp:** `Reply STOP to unsubscribe.`
    * **E-mail:** frase clicável `click here to unsubscribe` com link de preferências.
  * **Toggle por template:** opção para habilitar/desabilitar o append automático do texto/link de preferências.

  ## Benefícios práticos

  Com essa evolução, sua operação ganha mais controle de consentimento, melhor governança de base e campanhas mais seguras, mantendo a experiência centralizada no mesmo painel e alinhada às políticas de uso e privacidade.
</Update>

<Update label="08/04/2026" description="API v1, Dashboard, Documentação">
  ## Configurações de inbound por workspace (SMS e WhatsApp)

  Adicionamos configurações de recebimento por workspace para controlar, por canal, o que pode ser persistido como inbound:

  * `inboundSettings.channels.sms.enabled`
  * `inboundSettings.channels.whatsapp.enabled`
  * `inboundSettings.channels.whatsapp.allowPrivateChats`
  * `inboundSettings.channels.whatsapp.allowGroupChats`
  * `inboundSettings.channels.email.enabled`

  Essas opções já estão disponíveis no dashboard e agora também em **API v1**:

  * **GET** `/v1/workspaces/:id` retorna `inboundSettings` resolvido.
  * **PUT** `/v1/workspaces/:id` aceita `inboundSettingsPatch` para merge parcial.

  Para mensagens de grupos no WhatsApp, use `allowGroupChats` (grupos em GA; sem flag experimental).
</Update>

<Update label="07/04/2026" description="Preços, Planos, Dashboard, Site, Documentação">
  ## Atualização de preços e planos (resumo)

  Fizemos uma atualização geral no modelo comercial para deixar a operação mais previsível e competitiva, com reflexo em API, painel, site institucional e documentação.

  ### O que mudou nesta leva

  * **Mais créditos por faixa de plano:** ampliamos os volumes de créditos mensais em diferentes tiers, mantendo a lógica de progressão para operações em crescimento.
  * **Ajuste de consumo por canal:** recalibramos pesos de créditos em canais específicos para refletir melhor o custo real de envio.
  * **Redução de preço no avulso (SMS e RCS):** o valor por envio no modelo **Pague pelo uso** foi reduzido.

  Essa atualização melhora o custo-benefício para cenários de volume e simplifica a leitura das opções de contratação.
</Update>

<Update label="06/04/2026" description="API, Dashboard, Documentação, Segurança">
  ## Autenticação em dois fatores (2FA)

  Agora você pode **proteger sua conta** com segundo fator no login, de forma **opcional**:

  * **TOTP**: cadastre um app autenticador (por exemplo Google Authenticator ou equivalente) escaneando o QR code e confirmando com o código de 6 dígitos.
  * **Passkeys**: registre chaves de segurança ou biometria do dispositivo para concluir o login sem digitar código quando o navegador suportar.
  * **Códigos de backup**: ao ativar o TOTP, geramos códigos de uso único para acesso se você perder o celular; você pode **regenerar** os códigos quando precisar (a ação exige confirmar o segundo fator).

  Com 2FA ativo, após e-mail e senha corretos o fluxo segue para você informar o TOTP, usar passkey ou um código de backup. Tudo isso fica em **Perfil do usuário** (painel). Desativar o 2FA também pede confirmação com segundo fator, para evitar que alguém com a sessão aberta remova a proteção sozinho.

  ## Limite de gasto por API Key

  Agora cada **API Key** pode ter um **teto de consumo** configurável no painel (criação ou edição da chave):

  * **Ilimitado**: comportamento anterior: a chave só respeita créditos/saldo do workspace.
  * **Limite em créditos**: a chave acumula o consumo em **créditos de plano** usados nas operações feitas com ela; ao ultrapassar o teto, novos envios retornam **402 Payment Required** com código `API_KEY_SPEND_LIMIT_EXCEEDED`.
  * **Limite em centavos de real**: a chave acumula o custo em **centavos de saldo** (Pague pelo uso / pré-pago); ao ultrapassar o teto, a resposta é a mesma (`API_KEY_SPEND_LIMIT_EXCEEDED`).

  Isso ajuda a **segmentar integrações** (por exemplo, uma chave só para um sistema com orçamento fixo) sem expor o limite inteiro do workspace. O consumo é rastreado por chave; envios que forem cancelados ou revertidos seguem a lógica de estorno já usada na plataforma. Na listagem de chaves você acompanha o uso em relação ao limite.

  ## SMS: tamanho mínimo da mensagem

  Passamos a exigir **no mínimo 9 caracteres** no texto do SMS (após remover espaços nas pontas), com **máximo de 160**. A regra vale para **API v1** (`POST /v1/sms/messages`), **envio pelo painel**, **templates** (texto salvo no cadastro e texto **final após substituir variáveis** no `POST /v1/templates/send`) e para a **fila de envio** (SMS já enfileirados com texto inválido podem falhar ao processar). Em caso de texto curto demais, a API responde **400** com `SMS_MESSAGE_TOO_SHORT`.

  ## Painel e API (outras melhorias desta leva)

  * **Visão geral:** ajustes na página de overview e na paleta dos gráficos para leitura mais clara dos números por canal.
  * **RCS:** melhorias nas telas de criação e listagem de envios RCS no dashboard.
  * **SMS (recebidas e respostas):** adicionamos o fluxo de SMS de entrada (MO) com eventos dedicados, listagem de recebidas no painel, detalhe da mensagem inbound e suporte a resposta automática opcional por envio.
  * **WhatsApp (enviadas e recebidas):** a listagem passa a suportar abas separadas para mensagens enviadas e recebidas, com visualização dedicada das inbound no dashboard.
  * **Cobrança e envios:** o fluxo de **cobrança por envio** e rotas de **envio/cancelamento** (WhatsApp, SMS, e-mail, push, RCS, templates) foram alinhados ao **limite da API Key** e ao registro de uso por chave, mantendo consistência entre canais.

  Se algo na sua integração passar a retornar `API_KEY_SPEND_LIMIT_EXCEEDED` ou `SMS_MESSAGE_TOO_SHORT`, confira o limite da chave e o tamanho da mensagem: a documentação em **SMS API**, **Templates** e **Respostas de erro** traz os detalhes.
</Update>

<Update label="16/03/2026" description="API, Dashboard, Novidades">
  ## Opção Pague pelo uso

  Agora você pode usar a plataforma com **saldo em reais** (carteira), sem depender só de créditos mensais do plano. Recarregue quando quiser (mínimo R\$ 30) e cada envio é debitado do saldo conforme a tabela por canal (WhatsApp, SMS, e-mail, push, RCS). Quem está em **plano pago** e acaba os créditos daquele mês passa a usar o **saldo do Pague pelo uso** automaticamente até a próxima renovação: assim você não fica sem enviar no meio do ciclo.
</Update>

<Update label="14/03/2026" description="API, Dashboard, Otimização">
  ## Fila inteligente por workspace e otimizações de envio

  Fizemos diversas melhorias no fluxo interno de envio de mensagens.

  **Fila independente por workspace:** Antes existia uma fila única global de envios. Quando um workspace enviava centenas de mensagens, isso poderia atrasar o envio de outro workspace que enviava apenas uma, pois a fila era compartilhada. Agora **cada workspace possui sua própria fila independente**, garantindo que o volume de um não impacte o outro.

  **Otimização do delay:** Antes as filas ficavam travadas aguardando o delay entre cada mensagem para então disparar. Agora otimizamos a fila: se a mensagem tiver delay configurado, ela volta para a fila para ser enviada mais tarde, em vez de travar a fila aguardando o delay do WhatsApp.

  **Templates:** Também otimizamos os templates de e-mail e WhatsApp: o template facilita o envio de mensagens para vários canais ao mesmo tempo.

  Se notarem algo diferente, mal funcionamento ou tiverem sugestões de melhorias, é só nos chamar.
</Update>

<Update label="12/03/2026" description="Dashboard, Otimização">
  ## Novo editor de templates para e-mail

  Lançamos um **editor de templates para e-mail** com recursos mais avançados. Agora você pode criar e editar templates de e-mail com maior flexibilidade e controle, facilitando o envio de mensagens para vários canais ao mesmo tempo (e-mail, WhatsApp, SMS).
</Update>

<Update label="08/03/2026" description="API, Novidades">
  ## Grupos do WhatsApp

  Agora é possível gerenciar grupos do WhatsApp diretamente pela API. Com essa atualização, você pode adicionar ou remover participantes, gerar ou revogar links de convite e enviar mensagens para grupos específicos utilizando a mesma API usada para envio de mensagens individuais.
</Update>
