Normal
Contact

Built in public

Changelog

A weekly record of what changed in Normal, distilled from the work shipped in the open source repository.

Image sends and smoother API Key creation

Normal added secure outbound image Send Operations and made API Key creation more reliable when identity reverification is required.

Image Send Operations

  • Send JPEG or PNG images commit 3fd900f (opens in a new tab) through REST or the new MCP send_image tool using an HTTPS URL or Base64, with an optional caption.
  • Image sends support WhatsApp Recipients and Direct Addresses, enforce a 5,000,000-byte limit, and preserve existing idempotency and no-automatic-retry protections.
  • Verified images are encrypted as Pending Send Files under Stored Media quota and retention rules. Source and provider URLs are never retained or logged.

API Key creation

A bigger API, smoother setup

Normal expanded automation capabilities, streamlined onboarding and account management, and strengthened production recovery and security.

API and MCP

Connection Setup

  • First-connection onboarding now has a focused, dedicated flow outside the dashboard.
  • Connection Setup responds faster, provides clearer QR loading feedback, and rejects scans for a different WhatsApp Number.
  • Onboarding now guides Users through opening and verifying Normal in ChatGPT, with new reconnection and removal guides.
  • The product now exposes a complete irreversible Connection Deletion flow.

Dashboard

  • The Personal Account overview PR #157 (opens in a new tab) now shows connected WhatsApp Connections, inbound and outbound messages, active chats, and message activity over time.
  • API Keys, MCP Authorizations, and recipient tracking are easier to scan in structured tables.
  • Create and update forms now use dialogs on desktop and drawers on mobile, while dashboard lists stay current after changes.
  • Added light, dark, and system theme preferences.

Docs and open source

  • Launched a standalone API reference PR #114 (opens in a new tab) at docs.normal.fast, generated from OpenAPI 3.1 and rendered with Scalar.
  • Added an API Key curl quickstart plus REST PDF send documentation and examples.
  • Added prominent links to the documentation and the AGPLv3 source repository.

Security and reliability

  • API Keys are revoked during Connection Deletion and Personal Account Deletion, and restored keys are invalidated before recovery reopens access.
  • Production recovery drills and public API releases now require fail-closed, automated evidence.
  • Fixed an inbound-media subscription race and made transient Stored Media read failures non-destructive.

Privacy controls, encrypted search, and API access

Normal shipped stronger recipient privacy controls, guided onboarding, encrypted discovery, and the first API Key-powered REST endpoints.

Recipient privacy

  • Users can search contacts and groups in Settings and apply a WhatsApp Recipient Exclusion PR #71 (opens in a new tab) with a "Do not track" control.
  • Exclusions purge existing Message Store history, prevent future reads, ingestion, and sends, and remain effective across restores. Removing one permits only future activity.

Search and conversations

  • MCP Clients can search exact words commit f722272 (opens in a new tab) across retained Stored Message text and captions, with conversation, direction, time, and pagination filters.
  • Search reports incomplete index coverage and intersecting Ingestion Gaps rather than implying complete history.
  • MCP results are easier to chain: contacts can identify their WhatsApp Conversation, while message reads return the WhatsApp Recipient needed for a subsequent send.

Connections and onboarding

  • WhatsApp Connections now have encrypted, User-defined names shown consistently in the dashboard, MCP results, and OAuth consent.
  • First-time Users receive guided onboarding PR #74 (opens in a new tab) covering security controls, Connection Setup, the Message History Window, and tailored Claude or ChatGPT setup instructions.

API Keys and REST

  • Users can create, inspect, expire, and revoke API Keys PR #99 (opens in a new tab) from the dashboard, selecting permissions and WhatsApp Connections explicitly. Credentials are revealed only once.
  • The REST API can list selected WhatsApp Connections and page or search active Directory contacts.
  • Contact responses disclose projection freshness and only phone-number suffixes, while short-lived cursors are bound to the API Key and original query.

Audit and reliability

  • The Activity Log now covers protected operations performed through both MCP Authorizations and API Keys.
  • API Key creation, revocation, and one-time credential display remain deterministic and recover safely from refresh failures.
  • Production MCP smoke credentials now rotate automatically, reducing reliance on long-lived deployment credentials.

Introducing Normal

Normal debuted with a production-ready web experience, expanded WhatsApp capabilities for MCP Clients, and stronger privacy and lifecycle guarantees.

Product experience

Messaging and the WhatsApp Directory

  • Added MCP access to WhatsApp Directory contacts and groups, WhatsApp Conversations, and traversable Stored Message history.
  • Delivered atomic text sends, evidence-based Send Status updates, message edit handling, and Deleted Message Tombstones.
  • Improved group sending, webhook delivery, message reads, media normalization, and MCP tool latency.

Stored Media

  • Added encrypted ingestion commit 555379c (opens in a new tab) and protected MCP delivery for Stored Media.
  • Correlated outbound Stored Messages with trusted provider evidence before exposing them as chat history.
  • Fixed cleanup and reservation handling for failed media reads.

Authorization and privacy

  • Fixed OAuth discovery, token exchange, and token refresh compatibility for ChatGPT and Claude.
  • Added a tenant-scoped Activity Log for reviewing protected operations.
  • Enforced per-WhatsApp Connection Message Retention Policies, including correct expiry of Pending Send Content.

Lifecycle and operations

  • Made Connection Deletion immediately terminal commit 9a60f0a (opens in a new tab), with durable cleanup retries and complete provider and data cleanup.
  • Unified Personal Account Deletion entry points and added bounded, monitored purge processing.
  • Added automated production smoke checks, recovery drills, observability validation, credential rotation, deployment runbooks, and launch gates.
  • Published the project under AGPLv3 with contribution guidance and an architecture diagram.

Secure WhatsApp Connections and scoped MCP access

Normal's foundation introduced secure Personal Accounts, complete WhatsApp Connection setup and recovery, scoped MCP access, and reliable WhatsApp Directory ingestion.

Personal Accounts

  • Users can create a Clerk-backed Personal Account, with capacity-aware private-beta waitlisting.
  • Personal Account data is tenant-isolated and protected with KMS-backed envelope encryption.

Connection lifecycle

MCP access

  • MCP Authorizations commit 7530b3d (opens in a new tab) grant explicitly selected WhatsApp Connections and independently selected permissions.
  • Users can review and revoke MCP Authorizations, with recent identity reverification and rotating OAuth refresh credentials protecting changes.

WhatsApp Directory

Ingestion reliability