> ## 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

*Track what changed on the platform, launches, improvements, and notices that may affect your integration. Each day is grouped by change type so you can see what matters at a glance.*

<Update label="26/07/2026" description="Received messages, subscription, and WhatsApp groups GA">
  ### Improvements

  **Workspace settings**

  The workspace settings **Channels** tab is now **Received messages**. Billing transactions live under **Subscription**. Trust Factor and panel customization live under **Settings**.

  **WhatsApp groups GA**

  Group features are no longer experimental. No workspace flag required. Still required: **unofficial** instance + `whatsapp:groups` scope (and `allowGroupChats` for inbound).
</Update>

<Update label="25/07/2026" description="Shareable link, WhatsApp, and per-channel templates">
  *Remote channel onboarding, a clearer WhatsApp API, and template sends on each channel route.*

  ### New features

  **Shareable link to connect instances**

  * WhatsApp, Telegram (user mode), and Instagram: `generateShareableLink: true` on create returns a link for the end user to finish connection in the browser, no QR or Meta login on your server.
  * Telegram (user mode): create already starts QR and returns `connection.base64` / `loginUrl`.
  * Instagram: without `auth` on create, generates a `PENDING` draft + remote login link.
  * Link management via API: `GET/POST .../instances/{id}/connect-page` (status, enable, rotate secret, disable).

  **Template send on the channel route**

  * On WhatsApp, SMS, email, push, Telegram, Instagram, RCS, and voice: `type: "template"` + `payload.templateId` sends only that channel’s slice of the template.
  * Official WhatsApp: requires a Meta-approved template; QR connection: simple session content (no Meta header or buttons).
  * Multi-channel fan-out remains on `POST /v1/templates/send`.

  ### Improvements

  **WhatsApp**

  * **`mode`** field on instances: `UNOFFICIAL` (QR) or `OFFICIAL` (Embedded Signup). List, get, and create return `mode`.
  * Official with shareable link: omit Meta fields in the payload and use the flag to create a draft; the customer finishes on the link.
  * Official send: token, template, and media validation **before** queueing, with clear errors (`META_TOKEN_EXPIRED`, `META_PERMISSION_DENIED`, `TEMPLATE_NOT_ALLOWED_FOR_INSTANCE`).
  * **`metaName`** on official templates: name used on send (sync fills it automatically).
  * Sandbox (`sk_test_`): WhatsApp sends and templates **do not** call Meta or mark the real line as disconnected.
  * Embedded reconnect: `ALREADY_CONNECTED` only when the line is active with a valid token.
  * Rotating the link secret invalidates the previous link.

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

<Update label="24/07/2026" description="Official WhatsApp (Cloud API) and message detail">
  *Official WhatsApp (Cloud API via Tech Provider) is live, with Embedded Signup in the dashboard. Same cycle: per-channel settings, inbound audio transcription, and a clearer message detail view (tabs + structured preview).*

  ### New features

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

  *In the instance wizard you choose **Official** or **Unofficial (QR)**. Official numbers connect through Meta (login in the dashboard), no manual token paste.*

  * Dashboard: WhatsApp → New instance → **Official** → Embedded Signup (WABA + number).
  * API: `mode: "OFFICIAL"` on `POST /v1/whatsapp/instances` (Embedded Signup; when the feature is enabled in the environment).
  * **Meta** bills conversations on the customer’s account; Notifique charges only the platform **software fee** (see billing table in the docs).
  * An active **payment method in WhatsApp Manager** is required. Without it, sends are blocked with `META_PAYMENT_METHOD_REQUIRED`.
  * Outside the **24-hour window**, only an approved official template; inside the window, session text/media.
  * Bring-your-own credentials (`OFFICIAL_BYOK`) are secondary for onboarding, prefer Embedded Signup (`OFFICIAL`).

  Docs: [Connection modes](/en/whatsapp-api/como-funciona/modos-de-conexao), [Official Quick Start](/en/whatsapp-api/como-funciona/quick-start), [Official Meta templates](/en/whatsapp-api/como-funciona/templates-oficiais-meta).

  **Official templates (WABA)**

  * Catalog lives on the **WABA** (numbers on the same account share templates).
  * Pull/push sync with Meta; status via webhook (`APPROVED`, `PENDING`, `REJECTED`, …).
  * Internal Notifique templates stay `source: ZENVIO`; official ones use `source: WHATSAPP_OFFICIAL`.
  * **APPROVED** Meta templates: edit limit **1× per 24h** and **10× per 30 days** (Meta rule).

  **Channel settings**

  * **Channel settings** shortcut on WhatsApp (and other channels): instance overview and inbound receive / persist / webhook controls, aligned with the workspace Received messages tab.

  **Inbound audio transcription**

  * In the Inbox and inbound message detail: transcribe audio (WhatsApp, Telegram, Instagram) on demand, billed in credits.
  * Optional **auto-transcribe** in the user’s inbound settings.

  ### Improvements

  **Message detail (WhatsApp, Telegram, Instagram, SMS, email, push, RCS, and voice)**

  * Below the timeline: **Message / Metadata / Events** tabs (compact segmented control, no wrapping card).
  * **Message**, content and edit/reply history.
  * **Metadata**, request metadata (and provider payload when available).
  * **Events**, webhook deliveries triggered by that message (with a link to the delivery).
  * Structured message preview (template, buttons, list, interactive replies) on WhatsApp outbound and inbound detail.

  **Official line, day-to-day operations**

  * Expired or invalid Meta token: instance becomes **DISCONNECTED** and the dashboard prompts reconnect.
  * Shared connection links keep the line’s **same reconnect mode** (Embedded Signup or legacy token).
  * Cloud API does **not** edit or delete an already-sent message: API returns `META_MESSAGE_EDIT_UNSUPPORTED` / `META_MESSAGE_DELETE_UNSUPPORTED`; the dashboard hides Edit/Delete on official lines.
</Update>

<Update label="23/07/2026" description="Inbound media, WhatsApp, Telegram, and Instagram">
  *Download received media in the inbox, detail screen, and v1 API across channels. Files remain on-demand from the provider (no permanent blob storage).*

  ### Improvements

  **WhatsApp**

  * Inbound download now includes **video** and **sticker** (in addition to image/audio/document) via QR / unofficial.
  * Endpoints: `POST /v1/whatsapp/messages/inbound/{id}/media` and `GET .../media/download`.

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

  * New endpoints: `POST /v1/telegram/messages/inbound/{id}/media` and `GET .../media/download` (`telegram:read`).
  * `GET .../inbound/{id}` now returns `contentPreview` and `mediaFetch`.
  * Types: image, audio, video, document, sticker. Bot uses `getFile`; User uses MTProto `downloadMedia`.

  **Instagram**

  * New endpoints: `POST /v1/instagram/messages/inbound/{id}/media` and `GET .../media/download` (`instagram:read`).
  * `GET .../inbound/{id}` includes `contentPreview` and `mediaFetch`.
  * Types: image, video, and audio/voice (URL from payload; voice with aiograpi fallback).
</Update>

<Update label="21/07/2026" description="Email, RFC 8058 one-click unsubscribe">
  *Marketing sends now include `List-Unsubscribe` / `List-Unsubscribe-Post` headers (Gmail/Yahoo). One-click unsubscribe is honored on POST (market practice).*

  ### Improvements

  **RFC 8058 by default**

  * **MARKETING** templates (headers always; HTML footer still optional via `appendPreferencesLink`), campaigns, and automations.
  * `POST /v1/email/messages`: on by default when the recipient is a contact; use `listUnsubscribe: false` for transactional mail.
  * Public endpoint: **GET** confirms only (no mutation, avoids scanners); **POST** applies opt-out (`List-Unsubscribe=One-Click` or form).
  * Invalid topic in the URL does **not** fall back to global opt-out; invalid `listUnsubscribeTopicId` on the API returns **400** `INVALID_LIST_UNSUBSCRIBE_TOPIC`.
  * Guide: [One-click unsubscribe (RFC 8058)](/en/emails-api/como-funciona/one-click-unsubscribe-rfc-8058). Error: [Error responses](/en/guides/conceitos/resposta-de-erros).
</Update>

<Update label="21/07/2026" description="API v1, standardized errors on all endpoints">
  *All API v1 routes now return errors with **`error`**, **`message`**, and **`code`** (stable enum). Messages may be localized via `Accept-Language` or `x-locale`. No breaking change on success routes, only error payloads are more predictable.*

  ### Improvements

  **Uniform errors across API v1**

  * **\~1,150** `success: false` responses reviewed across WhatsApp, Instagram, SMS, email, Telegram, push, RCS, voice, webhooks, CRM, contacts, templates, automations, short links, and more.
  * Required error fields: `error` (HTTP label), `message` (human-readable), `code` (enum).
  * Global middleware: `UNAUTHORIZED`, `API_KEY_EXPIRED`, `API_KEY_REVOKED`, `RATE_LIMIT_EXCEEDED`, `ONBOARDING_REQUIRED`, `WORKSPACE_HEADER_NOT_ALLOWED`.
  * New common business codes: `WEBHOOK_NOT_FOUND`, `EMAIL_DOMAIN_NOT_FOUND`, `INSTANCE_CAPACITY_FULL`, `VOICE_*`, `NO_MEDIA`, `DOWNLOAD_FAILED`, etc.
  * **POST /v1/report** (FELCA reports) and WhatsApp inbound media download now include `code` on all errors.

  **Email, domain verify (`POST /v1/email/domains/:id/verify`)**

  * DNS pending: HTTP **200**, `success: true`, `verified: false`, `code`: **`EMAIL_DOMAIN_DNS_PENDING`**
  * Verified: **`EMAIL_DOMAIN_VERIFIED`**
  * DNS failed: **`EMAIL_DOMAIN_VERIFY_FAILED`**
  * HTTP errors with localized `message` and specific `code`

  ```json theme={null}
  {
    "success": true,
    "verified": false,
    "code": "EMAIL_DOMAIN_DNS_PENDING",
    "message": "DNS records are not verified yet. Check your DNS provider and try again in a few minutes.",
    "data": { "id": "clxx...", "domain": "yourdomain.com", "status": "PENDING" }
  }
  ```

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

  Docs: [Error responses](/en/guides/conceitos/resposta-de-erros) (**208** public codes), [Welcome](/en/welcome/welcome), each channel OpenAPI (`ErrorResponse` schema with required `code`).
</Update>

<Update label="21/07/2026" description="Email and WhatsApp, API v1">
  *Two releases on the same day: a new WhatsApp endpoint to download inbound media via API, and clearer error messages when registering an email domain. Nothing breaks in existing flows, on failure, use the `code` field to decide what to do next.*

  ### New features

  **WhatsApp, inbound media download**

  *You can now download image, audio, or document from an inbound message via API, same flow as the dashboard (Inbox and message detail).*

  * `GET /v1/whatsapp/messages/inbound/{id}/media/download`, returns the **binary file** with `Content-Type` and `Content-Disposition` (ideal for `curl -o` and scripts).
  * `POST /v1/whatsapp/messages/inbound/{id}/media`, empty body; returns JSON with `data.base64` (ideal for in-memory integrations).
  * Type (`image` | `audio` | `document`) is inferred server-side from `contentPreview`.
  * Scope: **whatsapp:read** (honors API Key `instanceIds`).
  * Requires an active **unofficial (QR)** instance.

  ```bash theme={null}
  curl -L -H "Authorization: Bearer sk_live_..." \
    -o received.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": "..."
    }
  }
  ```

  *Suggested flow:* check `mediaFetch.fetchable` on `GET /v1/whatsapp/messages/inbound/{id}`, then use GET (file) or POST (base64). URLs in `contentPreview.mediaUrl` are ephemeral and do not replace these endpoints.

  Docs: [WhatsApp introduction](/en/whatsapp-api/como-funciona/introducao), [API Key scopes](/en/whatsapp-api/como-funciona/escopos-api-key), [OpenAPI](/en/whatsapp-api/api-reference/openapi-whatsapp.json).

  ### Improvements

  **Email, clearer errors when registering a domain**

  *Before, a provider failure (ZeptoMail / SES) could show up only as a generic **502**. The response now includes a readable `message`, `code`, and a more appropriate HTTP status, in the client locale (`Accept-Language` / `x-locale`).*

  * **Success (200)** and the DNS records payload **are unchanged**.
  * On error, prefer handling by **`code`** (use `message` for end-user display).
  * Provider antispam blocks now return **422** instead of 502.

  | `code`                              | HTTP      | When                                                 |
  | ----------------------------------- | --------- | ---------------------------------------------------- |
  | `EMAIL_DOMAIN_ALREADY_REGISTERED`   | 409       | Domain already active in this workspace              |
  | `EMAIL_DOMAIN_PROVIDER_ANTISPAM`    | 422       | Provider blocked the domain (antispam)               |
  | `EMAIL_DOMAIN_PROVIDER_REJECTED`    | 422       | Provider rejected the domain                         |
  | `EMAIL_DOMAIN_PROVIDER_UNAVAILABLE` | 502 / 503 | Provider unavailable or temporary failure            |
  | `EMAIL_DOMAIN_CREATE_BUSY`          | 429       | Registration for the same domain already in progress |

  Existing codes (`PLAN_LIMIT_EMAIL_DOMAINS`, `WORKSPACE_BLOCKED`) are unchanged.

  Docs: [Email API](/en/emails-api/como-funciona/introducao), [OpenAPI](/en/emails-api/api-reference/openapi-email.json), [Error responses](/en/guides/conceitos/resposta-de-erros).
</Update>

<Update label="20/07/2026" description="Instagram, anti-suspension protections">
  *New rules for unofficial Instagram instances: reduce suspension risk from reconnect loops or high volume on new accounts. Success routes and responses are unchanged, only new fields and codes when blocked.*

  ### Improvements

  **Anti-suspension protections (unofficial connection)**

  * **`expectedUsername`** (optional) on **POST /v1/instagram/instances**
  * **GET /v1/instagram/instances/:id** exposes `lockedUsername`, `lockedIgUserPk`, `reconnectBlockedUntil`, `abusePausedUntil`, `firstConnectedAt`, and **`warmup`** (`active`, `dailyLimit`, `sentToday`, `daysRemaining`)
  * **Account lock:** one instance = one username after first login. Switch accounts by creating a new instance.
  * **12 h cooldown** after involuntary disconnect + max **3 logins/hour**. Manual disconnect via API does **not** apply cooldown.
  * **Abuse pause** when Instagram signals rate-limit / restriction.
  * **Warm-up:** up to **15 DMs/day** for the **first 5 days** (new instances only).

  ### Integration notices

  *On error, handle by `code` (and use `retryAfterSec` when you get 429). Do not reconnect in a loop after a drop, wait for cooldown or create a new instance.*

  | `code`                         | HTTP | Where                                                 |
  | ------------------------------ | ---- | ----------------------------------------------------- |
  | `INSTAGRAM_ACCOUNT_MISMATCH`   | 409  | Login with an account different from lock/expected    |
  | `INSTAGRAM_RECONNECT_COOLDOWN` | 429  | Connect / challenge during cooldown (`retryAfterSec`) |
  | `INSTAGRAM_ABUSE_PAUSE`        | 429  | Account paused after an abuse signal                  |
  | `INSTAGRAM_WARMUP_DAILY_LIMIT` | 429  | **POST /v1/instagram/messages** during warm-up        |

  Docs: [Anti-suspension policy](/en/instagram-api/como-funciona/politica-anti-banimento), [Quick Start](/en/instagram-api/como-funciona/quick-start), [Error responses](/en/guides/conceitos/resposta-de-erros).
</Update>

<Update label="19/07/2026" description="WhatsApp, anti-ban protections">
  *Same idea as Instagram, now on WhatsApp (unofficial QR connection): less ban risk from aggressive reconnects or swapping SIMs on the same instance. No breaking route changes, additive fields and codes.*

  ### Improvements

  **Anti-ban protections (unofficial connection)**

  * **`expectedPhoneNumber`** (optional) on **POST /v1/whatsapp/instances**, validates the number on first pairing.
  * **GET /v1/whatsapp/instances/:id** exposes `lockedPhoneNumber`, `reconnectBlockedUntil`, and **`warmup`** (`active`, `dailyLimit`, `sentToday`, `daysRemaining`).
  * **Permanent lock:** one instance = one number after the first connection. Change SIM by creating a new instance.
  * **6 h cooldown** after involuntary disconnect (ban, dropped session). Manual disconnect via API does not apply cooldown.
  * **Warm-up:** up to **20 messages/day** for the **first 3 days** after `firstConnectedAt` (new instances only).

  ### Integration notices

  | `code`                  | HTTP | Where                                         |
  | ----------------------- | ---- | --------------------------------------------- |
  | `PHONE_NUMBER_MISMATCH` | 409  | Pairing with wrong number                     |
  | `RECONNECT_COOLDOWN`    | 429  | **GET /qr** during cooldown (`retryAfterSec`) |
  | `WARMUP_DAILY_LIMIT`    | 429  | **POST /v1/whatsapp/messages** during warm-up |

  Docs: [Anti-ban policy](/en/whatsapp-api/como-funciona/politica-anti-banimento), [Quick Start](/en/whatsapp-api/como-funciona/quick-start), [Error responses](/en/guides/conceitos/resposta-de-erros).
</Update>

<Update label="14/07/2026" description="Canonical send contract, unified across channels">
  *We standardized the send format across all channels for multi-channel integrations. Legacy shapes still work, but migrating to the canonical contract is recommended when you can.*

  ### Improvements

  **Canonical send contract**

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

  **202 response:**

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

  * **`to` is always an array**, never a string. Maximum **100** recipients per request.
  * **`status` is always UPPERCASE**, `QUEUED`, `SCHEDULED`, `SENT`, `DELIVERED`, `FAILED`.
  * **`messageIds`** is the canonical response field. Channel aliases (`smsIds`, `emailIds`, etc.) remain for compatibility.

  ### New features

  * **GET /v1/rcs/messages**, RCS message listing.
  * **POST /v1/notify**, multi-channel send in one call (includes Instagram).
  * **POST /v1/templates/send**, Instagram channel support (`instagram.instanceId`).
  * **Notifique MCP**, new tools for RCS, Voice, and Instagram Direct.

  ### Compatibility

  *Previous shapes are still accepted: flat fields on SMS/Email/Push, `messageType` on RCS, `speak`/`playAudioUrl` on Voice.*

  Documentation updated: quick-starts for all channels, template-api, guides/webhooks, and mcp-notifique.
</Update>

<Update label="08/07/2026" description="Instagram Direct and API Key scopes">
  *A big launch day: Instagram Direct joined the platform. On the same day, the API Keys screen started showing scopes that were easy to miss before (RCS, conversions, groups).*

  ### New features

  **Instagram Direct, new channel**

  *Connect an account, send DMs from the dashboard or API, edit sent text, manage comments, and receive `instagram.*` webhooks.*

  * Login with username and password (2FA / challenge when required); `acceptInstagramTerms` required.
  * Content: text and media via HTTPS URL (image, video, audio, document).
  * Edit messages (up to 1000 characters, 15 min, 5 edits) and unsend when allowed.
  * Comments: list, reply, and delete (`instagram:comments:reply`, `instagram:comments:moderate`).
  * Scopes: `instagram:send`, `instagram:read`, `instagram:cancel`, `instagram:update`, `instagram:delete`, and instances.

  Docs: [Instagram introduction](/en/instagram-api/como-funciona/introducao), [Quick Start](/en/instagram-api/como-funciona/quick-start), [Webhook events](/en/instagram-api/como-funciona/eventos-do-webhooks).

  ### Improvements

  **API Keys, RCS, conversions, and groups scopes**

  *If your integration uses RCS or Smart Links, review the key and add the scopes below to avoid 403.*

  * **RCS:** `rcs:send`, `rcs:read`, `rcs:cancel`
  * **Conversions (Smart Links):** `conversions:manage`
  * **WhatsApp groups:** `whatsapp:groups` (with add-on enabled)
  * **Instagram:** `instagram:update` alongside other Instagram scopes

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

<Update label="28/06/2026" description="Segments: platform fields, topics, and typed ops">
  ## More powerful segments

  The **segment** DSL gained new rule types and typed operators. You still use `version: 1`, `match`, and up to 32 rules, but the filter set is larger.

  ### New rule types

  * **`contactField`**: platform fields (`name`, `phone`, `email`, `url`, `telegramPeer`, `languages`, `hasPhone`, `hasEmail`, `hasUrl`, `hasTelegram`)
  * **`topic`**: subscribed or not to a topic (`topicId` + `subscribed`)
  * Still available: `tag`, `property` (custom fields), and `receiveMarketing`

  ### Typed operators (`op`)

  On `property`, use `op` according to the field type (STRING, NUMBER, BOOLEAN, DATE), including **`containsOneOf`** for several cities/values in one rule.

  Legacy `valueMatch: "exact" | "contains"` still works; prefer `op` in new integrations.

  ### Preview

  Segment preview remains paginated (max 500 per page) and may set `totalCapped` when the estimated total hits an internal ceiling.

  Docs: [Audience segments](/en/contacts-api/como-funciona/segmentos-na-audiencia).
</Update>

<Update label="11/06/2026" description="Phone numbers and Voice API">
  ## New channel: voice and phone numbers

  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.

  ### Phone numbers

  * **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`

  Documentation: [Phone Numbers, Quick Start](/en/phone-numbers-api/como-funciona/quick-start), [Voice API, Quick Start](/en/voice-api/como-funciona/quick-start), and [Webhook events (Voice)](/en/voice-api/como-funciona/eventos-do-webhooks).
</Update>

<Update label="10/06/2026" description="Unified inbox and required API Key scopes">
  *Two topics on the same day: the Inbox became a real support hub, and new API Keys must declare explicit scopes (with a deadline to migrate legacy keys).*

  ### New features

  **Unified inbox with team queue management**

  *One inbox for WhatsApp, SMS, Telegram, and the AI widget, with queue, assignee, metrics, and AI summary. Email stays outside the Inbox (real-time messaging focus).*

  * Single queue with status (Open, Pending, Resolved), assignee, and channel filters
  * Assign conversations manually or automatically; resolve and reopen
  * Routing: automation/AI, waiting for teammate, or active human
  * Metrics: first response, resolution, unassigned conversations
  * Reply with text, template, or image URL; side panel with AI summary and contact link

  ### Improvements

  **API Keys, required scopes on creation**

  *New keys require at least one scope (e.g. `whatsapp:read`, `sms:send`). You can no longer create a blank “full access” key from the dashboard.*

  ### Notices

  *Legacy keys with empty scopes (full v1 access) work until **July 1, 2026** (Brasília time). After that, they return **403**. Create a new key with minimal scopes or edit the existing one.*

  1. **Settings → API Keys** → new key with required scopes.
  2. Switch your app and revoke the old key when stable.
  3. Or **Edit** the current key and set scopes explicitly.

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

<Update label="09/06/2026" description="Referrals, campaigns, and Smart Links">
  *A growth and CRM day: referral program, richer campaigns, checkout coupons, extra instances, and conversion tracking on links.*

  ### New features

  **Referral program**

  *Refer and earn 15% commission for 12 months; signups via your link get 10% off the first 3 months. Dashboard under Settings → Billing (`/dashboard/affiliate`).*

  **Extra instances (add-on)**

  *Need more WhatsApp or Telegram? R\$ 7.90/month per slot (+1 of each channel), up to 20 slots. Add-ons → Extra instances.*

  **Smart Links and conversions**

  *Short links evolved: automatic UTMs on redirect, conversion pixel, and `POST /v1/conversions` API to close the message → click → sale loop.*

  ### Improvements

  **Campaigns in the CRM**

  * Schedule sends (`scheduledFor`) and cancel schedules
  * Richer list with readable statuses and sent · delivered · failed summary
  * KPIs, per-channel funnel, timeline, and recipient list (dashboard and API)
  * Automatic UTMs (`utm_campaign`, `utm_content`) on campaign links

  **Checkout coupons**

  *“Have a coupon?” field on the Plans page, percentage or fixed discount for N billing cycles.*

  Docs: [Campaigns](/en/contacts-api/como-funciona/campanhas-no-painel), [Smart Links](/en/short-links-api/como-funciona/smart-links-e-conversoes), [Short links, Introduction](/en/short-links-api/como-funciona/introducao).
</Update>

<Update label="26/05/2026" description="Sending Pools on WhatsApp">
  ## Multiple numbers working together

  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](/en/whatsapp-api/como-funciona/sending-pools).
</Update>

<Update label="21/05/2026" description="Enterprise CRM and pipeline (kanban)">
  ## Richer contact profile

  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

  ## AI relationship profile

  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?”).

  ## 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="MCP integrations for the assistant">
  ## Connect Gmail, Outlook, Drive, and more to the assistant

  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**.

  ## Approval checkpoint in flows

  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.

  Docs: [Automations introduction](/en/automations-api/como-funciona/introducao) and [Assistants](/en/automations-api/como-funciona/assistentes).
</Update>

<Update label="11/05/2026" description="AI widget for your website">
  ## AI chat in the corner of your 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](/en/ai-web-widget/index) e [Configuração](/en/ai-web-widget/configuracao).
</Update>

<Update label="08/05/2026" description="Smart onboarding and plan rules">
  ## Onboarding that understands your business

  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.

  ## Clearer instance limits and plan expiration

  * **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="WhatsApp inbox, usage ledger, and WA tools">
  ## Sync WhatsApp history

  In **Inbox** WhatsApp conversations, **“Sync conversation”** imports up to **\~30 recent messages** from the connection, including messages sent **from the phone** that did not go through the platform. Imported messages show origin **“From phone”**. You can **load media** on demand (image, audio, document, video) when the preview was incomplete.

  ## Reply with more tools in the 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”)

  ## Detailed credits and balance ledger

  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.

  ## WhatsApp Link tools

  Extra tools in the dashboard for compatible WhatsApp instances:

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

<Update label="06/05/2026" description="Automations: webhooks, signals, and numeric conditions">
  ## Webhook per automation

  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.

  ## Wait for signal and richer conditions

  * **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]\(/en/guides/simples assim/automacoes-webhooks-de-integracao).
</Update>

<Update label="29/04/2026" description="CRM: advanced filters and properties">
  ## Find contacts with precision

  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.

  ## Email editor closer to original HTML

  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="Per-workspace AI: knowledge bases and assistants">
  ## Knowledge bases (RAG) per 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.

  ## Configurable assistants

  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.

  Docs: [Automations introduction](/en/automations-api/como-funciona/introducao).
</Update>

<Update label="25/04/2026" description="Platform assistant, proxy, and audience tags">
  ## AI assistant in the dashboard

  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.

  ## More stable connections

  **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 and campaigns

  * 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="Updated WhatsApp and dashboard in 3 languages">
  ## More stable WhatsApp connection

  When creating a WhatsApp instance via QR, the full connection, disconnection, groups, and messaging flow was improved. When available in the workspace, you choose the connection model in the wizard.

  The **instance creation wizard** was redesigned with a connection model step.

  ## Dashboard in Portuguese, English, and Spanish

  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="Short links (clicar.co) on all channels">
  ## Track clicks on links you send

  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.

  ## What you need to do

  * 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 when someone clicks the short link

  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_, Sandbox inbox) and automation editor improvements">
  ## Sandbox mode launched in API and dashboard

  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](/en/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)

  ## Richer, more predictable flow editor

  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: Pay-as-you-go price (R$ 0.01)">
  ## Cheaper push sends on BRL balance

  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="Automations: dashboard, API v1, and journeys">
  ## A full automation ecosystem

  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.

  ## Everyday examples

  * **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="Inbound messages">
  ## Inbound messages: clearer in dashboard and 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.

  ## Rules for inbound messages

  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: history, tests, languages, and AI">
  ## Template history: view the past and restore safely

  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.

  ## Test the template before production use

  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.

  ## Multiple languages, variables, and AI in one 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, localization, analytics, templates, AI infra, add-ons">
  ## Preferred languages on the contact (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 and per-contact performance

  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.

  ## Message localization: manual, automatic (AI), and off

  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: translations by 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.

  ## Combined benefits

  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”.

  ## Sending: priority, per-batch webhook, and 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).

  Mintlify docs (per-channel quick starts), the **webhooks** guide, and the per-channel **API references** in the sidebar were updated.

  ## Public reports and Platform Status

  * **POST** `/v1/report`: endpoint público para denúncias (FELCA); API reference in the **[Report API guide](/en/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, documentation, dashboard">
  ## New channel: 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.

  ## Contacts and audience API (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="Segments v1: property (text)">
  ## Segment rules: custom field with “contains” and ignore case

  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**](/en/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">
  ## Contacts and audiences: Topics, Segments, and 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 with marketing category and unsubscribe rules

  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.

  ## Practical benefits

  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, documentation">
  ## Inbound settings per workspace (SMS and 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.

  For WhatsApp group inbound, use `allowGroupChats` (groups are GA; no experimental flag).
</Update>

<Update label="07/04/2026" description="Pricing, plans, dashboard, website, documentation">
  ## Pricing and plans update (summary)

  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.

  ### What changed in this release

  * **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, documentation, security">
  ## Two-factor authentication (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.

  ## Spend limit per 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: minimum message length

  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`.

  ## Dashboard and API (other improvements in this release)

  * **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, news">
  ## Pay-as-you-go option

  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, optimization">
  ## Smart queue per workspace and send optimizations

  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, optimization">
  ## New email template editor

  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, news">
  ## WhatsApp groups

  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>
