Build log

Changelog

We build in the open. Every update we ship to Klaros, dated, so you can watch the product move, not just take our word that it's maintained.

Last updated: 4 August 2026 · See what's next →

15 August 2026
New

Ask to book, get times. “Book a meeting for me” is the highest-intent sentence anybody sends a business, and until now it got a promise that somebody would follow up. It now comes back with up to three tappable times in the customer’s own timezone, avoiding anything already booked. Their thumb does the booking; nothing lands on a calendar until a person picks. Full write-up.

New

The assistant can show things, not only describe them. Somebody asking what you sell used to get a paragraph about products. They now get the actual card, with the photo and the price read from your catalogue at the moment it sends, so it can never quote a figure that has since changed. One thing per reply, never a menu: what moves a conversation is a single next step, not a list.

New

It stays out of conversations your team has taken over. If a colleague has claimed a thread, or answered in it in the last two hours, the assistant says nothing at all. It also treats three messages in twenty seconds as one thought and answers once, rather than replying to the first sentence somebody typed.

New

Decide what it may do, and for whom. A new AI commands panel lists everything the assistant can act on, each with an off switch and a choice of Anyone, Team only, or Customers only. Team means a colleague whose WhatsApp number is on their profile, verified by Meta rather than asserted by the sender. Staff-only commands are invisible to everybody else, so a stranger cannot reach one by guessing the right sentence.

New

See what it can explain but not do, before a customer finds out. AI Sources now cross-references what your assistant can answer against what it can actually send, and flags anything it could offer but cannot talk about. That screen predicted this exact gap on our own deployment 56 minutes before a real prospect hit it.

Fixed

It could deny doing something it does. When the assistant could not answer, an optional follow-up question opened by saying the capability did not exist. That is a claim about the product it is in no position to make: being unable to answer means the knowledge is missing, not the feature. It now says it does not have a confident answer, which is true whatever the cause. The wrong version never reached a customer, because that feature only runs in review mode until an operator turns it on.

13 August 2026
Fixed

The assistant was reading the wrong end of the conversation. The thread passed to the AI reply was ordered oldest-first with a limit, so on any conversation longer than the window it received the oldest messages and never the newest, including the one it was answering. Timestamps were stripped too, so a discussion from three weeks ago read as the previous turn. It now receives the most recent messages in order, with elapsed-time markers, and is told that anything after a day-long gap is a new conversation. Full write-up.

Fixed

"cancel my order" could unsubscribe a customer. The opt-out keyword list contains cancel and remove, so a three-word order cancellation matched it: consent flipped, a suppression row was written, and the order was left standing. When a contact has a live order, Klaros now asks which they meant with two buttons instead of guessing. Stop and unsubscribe are unchanged and still absolute.

Fixed

Voice notes and stickers got no reply at all. The auto-reply path required message text, so a voice note, sticker or uncaptioned photo produced silence. A session-opening message with no text is now greeted like any other opener.

Fixed

Replies went out under the wrong name. Automatic replies and the suggest-reply drafter both used the free-text name typed at signup rather than the display name approved by Meta. Now sourced from the reviewed name, refreshed daily.

New

Nobody waits unnoticed. Klaros now watches for conversations where the customer spoke last and nobody replied, works out how long is too long from your own median reply time, and alerts you. An explicit "talk to a person" gets a fifteen-minute grace instead. If someone writes again while still unanswered, they get an honest acknowledgement rather than more silence.

Improved

Greetings answer a conversation, not a lifetime. The greeting could previously fire at most once per contact ever, so somebody returning after three weeks fell through to the model. It is now scoped to a session, requires the message to actually be a greeting (so a real question is never answered with "how can I help?"), and recognises lazy and non-English openers. Where the lookup does not recognise one, the model classifies it and your own greeting text is what sends.

4 August 2026
New

AI auto-reply. Answers customers on its own, but only from the business facts you give it in Settings. It won't invent your pricing or policies, and it hands off to a human quietly on anything outside scope. Runs on a schedule you set, independent of your away hours; a keyword or greeting rule you've already written always outranks it. Off by default at the deployment level; opt in per workspace from the Extensions catalog.

New

Two-way translation. Auto-detects any language on inbound and translates your reply into the customer's language on the way out. Shown as a secondary line under each message; the original is never replaced. Plain-text sends only; templates and media are never auto-translated. One toggle in Settings.

New

n8n / Zapier / Make integration path. Every operation in the OpenAPI spec now has a stable id for import into n8n or a Zapier/Make custom action. Documented trigger direction (our outbound webhooks → their generic webhook-catcher) and action direction (their generic HTTP module → our REST API) in the API docs. Works today, no published app required.

Improved

Sequences can branch, under the hood. The data model and resolution engine behind drip sequences now support branching logic, not just a single ordered list of steps. A new read-only graph view (Sequences tab → "View as graph") lets you visualize an existing sequence's steps. Authoring branches visually is still ahead; this is the foundation, not the canvas yet.

Fixed

Silent webhook auto-disable. A webhook subscription that failed 15 times in a row used to go inactive with no signal anywhere. It now raises a health alert naming the endpoint and the failure count, so you find out from a notification, not from a partner asking why their integration went quiet.

27 July 2026
New

Real-time WebSocket inbox. New messages, delivery receipts, and typing indicators now arrive instantly via WebSocket, powered by a per-workspace Cloudflare Durable Object. Replaces the previous 5-second polling. Automatic reconnect with exponential backoff, graceful fallback to 30-second polling if WebSocket is unavailable.

New

Contact detail panel. A right-side pane alongside the conversation thread showing contact identity (avatar, name, phone), consent/known/business badges, editable lead stage, internal notes with timestamps, company and industry details, and linked numbers for multi-number contacts. Toggle open from any thread, responsive overlay on narrow screens.

New

Auto-assignment routing. Three strategies for incoming conversations: round-robin, least-busy, and sticky re-assignment. Skill-based filtering: tag agents with skills and route matching conversations. Per-agent capacity caps prevent overload. Enable and configure from Settings.

Improved

Settings merge hardened. Saving one group of workspace settings (e.g. routing) no longer risks overwriting another (e.g. automation). One-level-deep merge preserves sibling keys.

New

Commerce: orders and payment requests. A received cart is now a tracked order, not a dead-end chat bubble. Multi-item payment-request composer in the Inbox, pre-filled from a real cart; works with any payment provider's link, no Meta Commerce Manager required. Orders track received → payment requested → paid → fulfilled, with one automatic reminder if a request goes unpaid. New Commerce dashboard tab. Product library gained optional numeric price and stock.

Fixed

Real-time inbox connection. The WebSocket connection now authenticates correctly on every browser, instead of silently falling back to polling.

12 July 2026
New

Contact import & sync. Pull contacts from Google, Outlook, or iCloud: zero-friction Google Apps Script method (no App Password friction), CardDAV for Outlook/iCloud, or upload CSV/vCard/JSON files. Auto-format detection, smart phone normalization (200+ countries), nightly auto-sync for credential-based sources.

New

Source provenance tracking. Every contact now shows where it came from: inline badges on the contacts explorer with "Google," "CSV," "iCloud" etc. Detail pane shows full import history per contact.

New

Progressive WhatsApp verification. Imported contacts are verified for WhatsApp reachability via delivery receipts: wa_verified status progresses from unknown → verified/failed. Filter your audience by verification status before campaigns.

New

Connect tab restructured. My Sources / Add New / Activity sub-tabs (matching Templates/Flows pattern). Per-provider guided setup with step-by-step instructions. Sync history with per-source stats.

New

Push API for external integrations. POST /api/contact-sources/push: feed contacts from any external script or integration. Same normalize → dedupe → upsert pipeline as built-in connectors.

Improved

File import robustness. CSV: auto-detects delimiter (comma/semicolon/tab), strips BOM, merges first+last name columns, broad header regex patterns. vCard: handles folded lines, prefers CELL/MOBILE type. JSON: searches nested arrays, handles CRM export formats (HubSpot, Salesforce patterns).

10 July 2026
New

Behavior Sequences + Milestones API. The feature we've wanted to ship since day one: WhatsApp that reacts to what your customers do, not what day it is. One API call from your own backend (POST /api/v1/milestones when someone places an order, completes KYC, books a demo), and the rule you defined sends the next-step template from your own number. Consent-gated on every send, one message per contact per rule, zero markup on every trigger. Read the docs →

New

Engage → Behavior Sequences tab. Define rules ("milestone → template, after N minutes"), watch the live activity feed (sent, skipped, why) without leaving the dashboard.

Improved

Trial onboarding now practices what we preach. Our own trial nudges run on the same milestone engine. You get guidance for the step you're actually on, and never a "connect your number" message after you've already connected it.

Fixed

Trial signup edge cases. Same WhatsApp number under a different email is now caught with a clear path back to your existing workspace; credential delivery is tracked end-to-end so an undeliverable number is visible, not silent.

5 July 2026
Fixed

Compliance gate on every send path. Inbox template sends (the path agents are steered to when the 24h window closes) now enforce consent and suppression checks, closing the last ungated outbound route.

Fixed

Inbound message deduplication. Cloudflare Queues retry on transient errors; retries no longer create duplicate thread bubbles, double unread counts, or duplicate auto-replies.

Improved

Graph API upgraded to v25.0 (from v20.0, which was at Meta's deprecation window). All API version references unified to a single constant.

Improved

Rate-limit-aware campaign retry. Meta rate limits now back off for 6 hours instead of failing permanently in 3 minutes. Auth errors raise a critical health alert instead of burning retries.

New

Dead-letter queue visibility. Failed queue messages are tracked in a dlq_events table and surfaced in the health dashboard. No more silent message loss.

Improved

Content-hash cache busting. All dashboard asset references are now auto-versioned by content hash on every deploy. The "forgot to bump the version string" class of bug is structurally prevented.

4 July 2026
New

Rich message composer. Send interactive buttons, list menus, CTA URLs, quote-replies, and reactions directly from the inbox, not just plain text and templates.

New

Read receipts + typing indicator. Real-time "seen" and "typing..." signals in conversations. Read receipts can be opted out per-deployment in Settings for privacy.

New

WhatsApp Flows. Create, publish, and manage Meta's native in-chat forms from the dashboard. 10 pre-built flows included: appointment booking, lead qualification, feedback survey, and more.

New

WhatsApp Business Tools. Edit your business profile and photo, create QR codes, configure welcome messages, ice-breakers, and persistent menu commands, all from Settings.

New

Template edit & resubmit. Edit approved templates for re-review. The live approved version keeps sending until the edit clears. Media library reuse for headers skips the re-upload step.

New

Broadcast preview. See a live WhatsApp-bubble preview of your template before sending. Replaces the old text-only confirmation dialog.

Fixed

Consent-button decoupling. Opt-in/opt-out detection now uses stable payload IDs, not button display text. Relabeling a consent button can never again silently break what it does.

Improved

Full inbound parser. All WhatsApp message types are now parsed and rendered in threads: button taps, interactive replies, Flow responses, reactions, location, contacts, orders, system messages, and CTWA ad referrals.

2 July 2026
New

Campaign audience builder shipped. Composable audience sources: segments, contact lists, groups, or all opted-in. Mix and match per campaign with automatic deduplication.

Fixed

@lid phone number cap. 13-digit @lid suffixes no longer create duplicate contacts. Picker performance improved with lazy search.

1 July 2026
New

Proactive health alerts. The dashboard now warns you the moment your WhatsApp number's quality rating drops or gets throttled, so you can act before it hurts deliverability, instead of finding out from a failed send.

New

Setup readiness in Settings. A live checklist of exactly what's left before your number can send: connection, business account, token, display name, and billing, so onboarding never stalls on a silent gap.

New

“Ready to self-deploy?” check on sign-up. A 30-second self-assessment on the trial page so you know upfront what you'll need to own your deployment, or whether managed onboarding is the better fit.

30 June 2026
New

See what you save. The Costs tab now shows the messaging markup you avoid by paying Meta directly (with an annualised projection) right next to your real billed cost.

New

Value at the point of spend. The broadcast confirmation now shows the reseller markup you're avoiding on that exact send.

Improved

True-cost calculator. The calculator on the comparison page is sharper (multi-year savings and currency presets) and a display bug that stopped it running is fixed.

29 June 2026
New

Interactive pricing journey and a smoother, hardened free-trial experience end to end.

28 June 2026
New

Team management. Add teammates, assign them specific WhatsApp numbers (Sales, Support…), and manage admin/agent roles, all self-service.

New

Per-user data visibility and per-agent API keys. Each teammate's desktop connects as themselves, with their own credential.

Improved

Features and pricing pages redesigned, with every marketing claim aligned to exactly what's shipped. No overselling.

27 June 2026
New

Composable campaign audiences with scheduling and a live delivery funnel. Build a send from segments and see it land in real time.

Fixed

20+ site refinements across the trial flow, SEO, and everyday UX.

46 features live, shipping every week.

Klaros is actively built in production. Curious where it's headed next?

View the roadmap →