Changelog
What’s new. Product updates, improvements, and fixes — newest first.
Want to suggest a feature or report an issue? Contact Support.
September 2026
Covers releases shipped in September 2026
New
-
Choose whether the Daily Summary adds task cards. The overnight summary reads your day’s conversations and, until now, always turned the action items it found into cards on your Task board, a credit each. Open Daily Summaries → Configure and you’ll find a new switch at the top, Create task cards from action items. Leave it on and nothing changes. Turn it off and the summary still lists the action items on its card but adds nothing to the board and charges nothing for them. Human Alert tasks and tasks the AI creates mid-conversation are unaffected.
-
Identity-linked Anthropic keys now work for BYOK. Anthropic’s newer personal and service account keys can be set up to work across several workspaces, and Anthropic then refuses every request made with one unless the workspace ID is sent too. Until now such a key looked saved but every AI reply on it failed. The BYOK API Keys page now has a Workspace ID field next to the key (paste the
wrkspc_…ID from the Anthropic Console, or click Edit workspace ID on a key already on file), and we send it with every request. We also check every key with Anthropic the moment you save it, so a key that needs its workspace ID, or a wrong key, is rejected on the spot with the fix in the message instead of a bot that quietly stops replying. See Bring Your Own Anthropic Key. -
The chat widget now speaks Japanese. A visitor browsing in Japanese (your page declares
<html lang="ja">, or their browser is set to Japanese) now gets the widget’s own labels in Japanese too: the オンライン status under your name, the メッセージを入力… prompt in the message box, the settings menu, the contact form and the privacy consent. Before, those stayed in English while everything else around them was Japanese. Your opening message, proactive popup bubble and starter questions are auto-translated into Japanese as well, including on widgets you set up before this change — no re-save needed. Requested by the community. See Languages. -
Mark a chat as unread. Read something a teammate is handling and want it to stand out again? Open the chat’s three-dot menu and choose Mark as unread, or tick several chats and hit Unread in the bulk bar. The unread badge comes back and the chat closes, and it stays that way until someone opens it — the AI replying or a follow-up going out in the meantime no longer clears it. Only your inbox changes: the contact never gets a read receipt or anything else. Requested by the community. See Mark as read / Mark as unread.
-
Cebuano (Bisaya) as an agent language. Your agent’s Primary language list now offers Cebuano (Bisaya), next to Filipino and Taglish. Cebuano is its own language, not a Tagalog dialect, and an agent set to Filipino tends to drift into Tagalog when a customer from Cebu, Bohol, Davao or elsewhere in the Visayas and Mindanao writes in Bisaya. Set it to Cebuano and it answers in everyday Bisaya, English loanwords and all. Pick it from Primary language at the top of an agent’s AI Instructions tab (or when creating the agent); it saves straight away and every campaign attached to that agent follows. Requested by the community. See AI Agents.
-
Execution limits on custom functions. Every custom function now has an optional Execution limits section in its editor: mark a function as read-only (it only reads data, so the AI can safely retry a conversation turn that was interrupted mid-reply instead of leaving the customer without an answer), serve a cached result when the AI repeats a call with the same inputs, cap how many times a function may run per conversation, and rate-limit it per time window (for example, at most 5 runs per hour). When a limit kicks in, the AI is told why and answers with the information it already has — the customer is never left hanging. Limits count successful runs only and apply on every channel; test conversations are exempt. See Execution Limits.
-
Execution limits on MCP server tools too. The same limits now exist per tool on every connected MCP server, next to each tool’s on/off switch in the server editor: cap runs per conversation or per time window, serve cached results on repeated calls, and set whether a tool is read-only — Automatic trusts what the server itself declares, or you can override it either way. Limits are enforced on our side, so they work with any server you connect, no server support needed. See Setting Execution Limits per Tool.
-
Bookings can now spread evenly across your rooms and staff. When a contact books without asking for anyone in particular, the booking has always gone to the first room in your list that was free — so the person at the top stayed fully booked while colleagues sat half empty. Event types with two or more rooms now have a Distribute bookings evenly switch in their Rooms section: turn it on and each no-preference booking goes to the person with the fewest bookings instead, counting recent and upcoming appointments. Contacts who ask for a specific person still get that person, recurring series stay with one person, and a room that’s closed or full at that time is skipped for the next-least-booked one. The AI also asks once whether the contact has a preferred person before picking for them, and the public booking page’s Anyone option follows the same rule. Off by default — leave it off and nothing changes. See Spreading bookings evenly.
-
Automations can send voice notes and typed attachments. The Send message action now has three extra fields next to the media link: Media type (the file’s MIME type, so a PDF, audio clip or video is attached as that kind of file instead of guessed), File name for documents, and a Send as voice note switch that delivers audio on WhatsApp as the play bubble rather than a downloadable file. Pair it with an OGG/Opus clip (
audio/ogg) from a text-to-speech service such as ElevenLabs and an automation can answer a contact in spoken audio. See Actions. -
Contact counts and bulk agent moves over the API. Two new calls answer the questions that used to mean paging through every contact.
GET /contacts/countreturns how many contacts match a filter — by agent, channel, tag, list, status or AI-assistant on/off — with a per-channel split, and no filter at all gives you the account total.POST /contacts/bulk-assign-agentmoves up to 500 contacts to another AI agent in one call, chosen by IDs or by the same filters; it only changes who answers next, it never sends anyone a message. Champ uses both, so you can now ask him “how many contacts are on my Support agent?” and get the real total, or tell him to move a whole group to another agent. See Count contacts and Asking Champ to do it for you. -
An Entry Points guide for the API, and one Agent per WhatsApp number over the API. Deciding which AI Agent answers a new conversation now has its own API guide: channel defaults, keyword, comment and follower rules, the order the rules are checked in, and changing or retiring a rule. The API explorer also learned the per-number scope that shipped in August:
PUT /entry-points/channel-defaultstakes an optionalphone_numberto give one connected WhatsApp number its own Agent, andDELETEwith the same parameter clears just that number. The WhatsApp Templates guide now covers writing a campaign’s follow-up templates with AI (POST /campaigns/{campaignId}/template-generation) and how to follow the job. See Entry Points API and Generate follow-up templates with AI.
Fixed
- “Send the answer to the contact now” on a FAQ task sends again. Resolving a FAQ Update task with that toggle on is meant to have the AI answer the contact’s original question straight away. On accounts running AI Agents it quietly sent nothing: the FAQ was saved and the task completed, but the reply never went out, whether you published a new FAQ or linked an existing one. FAQ tasks raised by the daily summary were affected the same way, and their FAQ was not even added to the agent’s knowledge base. The reply now goes out through whichever AI agent handles that contact, and the FAQ lands in that agent’s knowledge base. The API’s
POST /tasks/{taskId}/approve-faqgained asend_follow_upflag that does the same and reports what happened infollow_up_status. See FAQ Update Tasks and Approve an FAQ suggestion. - Voice notes older than a week play again in the chat. Audio received on WhatsApp Web is stored behind a link that expires after seven days. The chat player kept using the old link instead of asking for a fresh one the way photos already did, so any voice note more than a week old opened as a 0:00 player that stayed silent. The player now fetches a fresh link before it loads, and shows --:-- until the length is known. Nothing was lost: every older voice note plays as before. See Chat Interface.
- Answered human alerts no longer linger on the Task board. A
Human Alertcard used to close only when a teammate typed a reply in the dashboard. Answering any other way — resuming the AI on the chat, replying through the API, or ticking the card off — cleared the alert on the conversation but left the card open. The card now closes the moment the alert clears, however that happens. And the overnight Daily Summary, which reads the day’s chats after the fact, was re-adding a fresh “review this chat” task for escalations you had already answered hours earlier. It now recognises an answered escalation (your reply in the transcript, or the alert already cleared) and skips it. More broadly, the summary no longer files “assist X” / “answer X” / “follow up with X” cards for conversations someone already owns: a chat one of you replied in that day, or one the AI is still working through and had the last word in. FAQ updates, bug reports and feature requests from those chats are still filed. - No more stray Simplified characters in Traditional Chinese replies. An agent set to Chinese (Traditional) or Chinese (Hong Kong) occasionally let a Simplified character or word slip into an otherwise Traditional reply (请问 instead of 請問, 适合 instead of 適合), even with instructions forbidding it. Every reply, follow-up, comment reply and media caption is now checked before it goes out and any Simplified character is rewritten to its Traditional form, while text that is already Traditional stays exactly as written. Reported by a customer in Taiwan. See Primary language.
- Chinese characters no longer slip into Japanese replies. An agent writing Japanese on the Max or Mini tier occasionally substituted a Chinese character for the Japanese one (现在 instead of 現在, 这类 instead of この種の), even with a Japanese-only rule in its playbook. Every Japanese reply, follow-up and comment reply is now checked for characters that only exist in Chinese; when one slipped in, the reply is regenerated once with a correction and the clean version is sent. Ordinary kanji, including names such as 達也, are never touched. Reported by the community. See Primary language.
- Your own Instagram Login app no longer needs Facebook app details. Saving an Instagram Login app over the API (
PUT /account-config/meta-app) used to insist on the Facebook App ID, App Secret and Login configuration as well, even when Instagram Login is the only thing you run. The Instagram pair can now be saved on its own, and the answer then lists just the Instagram Login webhook URL. Send both sets if you use both flows; a save always replaces the whole setting. See Bring your own Instagram Login app. - Generate Reply now looks up what you tell it to offer. A long-press instruction such as “offer him the annual plan” used to produce a draft that assumed the contact had already taken it and said nothing about what the plan includes, because the AI only read the FAQs matching the contact’s last messages. Your instruction now steers which FAQs and knowledge base entries the AI reads before drafting, and an “offer”, “invite” or “ask” in it produces a question the contact can still answer, not a message that presumes a yes. Facts you state in the instruction (“I’m upgrading him to Tier 6, which is unlimited”) now go into the draft as-is even when your FAQs don’t mention them; the AI no longer answers that it “can’t confirm” or “will flag it to the team”. Drafts that occasionally came back empty or as a single stray word are also fixed. Drafts also now search your knowledge base the same way the AI does when it replies on its own (by meaning, not only by matching words), so an instruction phrased differently from your FAQ still finds it. See Generate Reply.
- Champ’s chat is private to each person again. A teammate who switched into your account could open Champ and see your whole conversation with him, and anything they asked was filed under your name. Every person on the team now has their own chat with Champ, whichever account they’re working in. See Meet Champ.
- The Low Credit Balance webhook event can now be selected. The early-warning event for a credit balance dropping below your alert threshold was fully supported behind the scenes, but the webhook form never offered it — and a webhook subscribed to it over the API didn’t show that subscription in the form. It now appears in the events list like any other event. See The 22 Webhook Events.
- Champ counts your contacts instead of guessing. Asked “how many contacts do I have on this agent?”, Champ used to answer from the first 20 contacts he could see and present that number as your total — and he’d offer to move “all” of them to another agent when he could only see those 20. He now counts them properly, however many there are, and when a list he shows you is only the first page he says so. See Meet Champ.
- Task emails and notifications now speak plain English. The “new task” and “task completed” emails, and the matching push notifications, used to print the task’s type, priority and origin as raw system values such as
to_do,noneorchat_composer. They now read as words: To Do, None, and a sentence that says where the task came from, for example “A new task has been created from a chat reply” or “…by your AI assistant”. The same applies to the values in your customised versions of these emails, and to every email language.
Improved
-
Webhook trigger: values in the web address count too. Some form builders can’t change the shape of what they post (Paperform, for example, sends every answer nested inside a list, so
${trigger.phone_number}stayed empty) but can insert an answer into the address they post to. Anything added to the end of the automation’s webhook address is now a field like any other:…?phone={{ your_phone_question }}on their side gives you${trigger.phone}on ours, and it shows up in the Listen for webhook sample so you can pick it with the + button. A field sent both in the address and in the body keeps the body’s value. See Triggers. -
Completing a task no longer sends you a “Task completed” notification. You were told twice about every task: a “New task” alert when it was created, and a second “Task completed” alert (bell, email and push) the moment you finished it — while the first one stayed unread. The completion alert is gone. Instead, the “New task” alert, and any due reminder for that task, clear themselves as soon as you open the task or move it to a done column, whether you do that from the board, the task page or the notification bell. The Task Completed webhook event is unchanged. See Notifications.
-
Unread alerts stay on top of the notification bell. Alerts you haven’t opened yet now sit above the ones you’ve already read, newest first within each group, so an unread alert never scrolls away under newer ones you’ve dealt with. Open it or mark it read and it drops back into the timeline. See The Notification Bell.
-
Check your password before you sign in. The password fields on the login, sign-up and new-password screens now have an eye icon on the right. Click it to show what you typed and click again to hide it — no more guessing whether a rejected sign-in was a typo. Requested by an agency’s client.
-
Removing a reaction now takes a deliberate click. The reaction chip under a message used to take your emoji back the moment you clicked it, with nothing warning you that a click would do that. The chip itself no longer does anything; hover over it and a small × slides in next to the emoji, with a tooltip saying what it does, and only that × removes your reaction (on a phone the × is always visible). See Reacting to a Message.
-
Chat widget greetings now speak Slovenian, Thai and Bangla too. The widget’s buttons and labels already switched to those three languages for visitors browsing in them, but your own opening message, popup bubble and starter questions stayed in the language you wrote them in. They’re now auto-translated into all fifteen supported languages like the rest, including on widgets you set up before this change — no re-save needed. See Languages.
- Collapsing the contact panel and the sidebar is now obvious. The panel on the right of a conversation could only be hidden from the small info icon in the conversation header, which nobody reads as “close this”. The panel now has its own double arrow (») in its top corner, and the header icon turns into the same double arrow while the panel is open, so either one hides it; the info icon comes back when the panel is hidden, which is how you open it again. The sidebar’s collapse button had the same problem: it used the same ☰ icon as the button that expands it, so collapse and expand looked identical. It’s now a double arrow («) too, matching the rest of the app. See Chat Interface and Dashboard.
August 2026
Covers releases shipped 1-31 August 2026
New
-
Action buttons on the chat widget. Not every visitor wants to type. Some just want your phone number, your address or your email, and they want it now. Settings > Chat Widget > Manage > Channels & Embed now has an Action buttons section: add up to six shortcuts that sit across the top of the chat panel and take the visitor straight where they asked to go — Call opens their dialler, Text and WhatsApp open a message to you, Email opens their mail app, Directions opens Google Maps at your address, and Link opens any page you choose. They stay visible while the visitor chats, so someone can ask two questions and still tap Directions afterwards. Tapping one sends no message and starts no conversation, so it costs no credits. They don’t answer questions — that’s still your AI agent’s job, from your knowledge base. See Action buttons.
-
Email a chat transcript to the contact. The three-dot menu’s Export transcript downloads a copy for you; the new Email transcript next to it sends the conversation to the contact instead, so they keep their own copy of the steps, hours or quote you gave them in the chat. The Send to address is pre-filled when the contact has an email on file and you can type one when they don’t (which is most WhatsApp and Instagram chats), and you can add a note that appears above the conversation. Only the messages are included — what your AI agent did behind the scenes stays out — and very long chats send the most recent messages with a line saying how many were left out. On a conversation that’s already an email thread you can choose between replying inside that thread from your connected inbox or sending a separate transcript email. Needs edit access to messages. See Emailing a Transcript to the Contact.
-
An error log for everything that failed. When a message never arrived or the AI stayed quiet, the only way to find out why was to ask us. Error log — at the bottom of the left menu, just above Help — now lists every failed action on your account in one place: undelivered messages on every channel, replies the AI skipped, channels that lost their connection, billing and limit blocks, failed knowledge base imports, automatically paused broadcasts, failed automation runs and webhooks that stopped delivering. Each row carries a short code, what it means in plain words and what to do about it, and expands to show the provider’s own message plus a button that takes you straight to the place you would fix it. Filter by the last 24 hours, 7 days or 30 days, by category or channel, or search for a contact or a code. Every code is explained in Error Log.
-
Attach a photo or video to a broadcast. Broadcasts were text-only: if you wanted every contact to see a flyer, a before-and-after shot or a short clip, you had to send it by hand afterwards. The Message step now has an Attachment section — upload an image or video (up to 10 MB) or pick one from your Media Library, and it goes out to every contact together with the opening message. On WhatsApp Web it arrives as a photo or video with your text as the caption; on the WhatsApp Business API it becomes part of the template and is approved together with the text (change it later and you submit again). SMS stays text-only, and numbers connected through Meta directly can’t carry an attachment yet. See Broadcasts.
-
A different AI Agent for each WhatsApp number. Routing used to be per channel: one Agent for all of WhatsApp, one for all of WhatsApp Web — so a business with several branches or brands on separate numbers needed a separate account per branch. Now, with two or more numbers connected on WhatsApp Web or the WhatsApp Business API, the Who Answers New Conversations panel on the AI Agents page adds a per number block: pick an Agent (or No one’s answering) for each number, or leave it on Same as WhatsApp to keep following the channel’s pick. A new conversation is answered by the Agent of the number the customer wrote to, and replies go out from that same number. See One Agent per WhatsApp number.
-
Edit and delete task types. Task types could only be created (inline, from the Type picker) — never renamed, recolored or removed, so a typo or an unused default sat in the picker for good. A new Types button next to Stages on the Tasks page opens the Edit task types dialog: rename, recolor, reorder, add and delete types, exactly like the Stages dialog. Deleting a type never deletes its tasks; they just lose the label until you pick another type. The two types the AI creates itself, FAQ Update and Human Alert, stay (rename and recolor only). See Editing, reordering and deleting types.
-
Auto-tag with AI, on demand. Live tagging only runs while the AI is replying, so chats your team handled with the AI paused, conversations imported from your WhatsApp history, and everything that happened before you wrote an agent’s tag rules stayed untagged — and so did existing conversations after you added a rule or clicked Generate with AI. Now one click runs the agent’s tag rules over the whole conversation, not just the last few messages: Auto-tag with AI in a chat’s three-dot menu, Auto-tag in the Contacts bulk action bar (with an optional “use this agent’s tags for all”), and Apply to existing conversations on an agent’s Tags tab (up to 500 of its most recent chats). Same rules, same removal switches and the same price as live tagging — 1 credit per tag applied (0.25 on the Max tier, free on your own AI key), nothing for a contact that gets no new tags. One run of up to 500 contacts at a time; if credits run out mid-run it stops and keeps what it has tagged. See Tagging a conversation on demand.
-
AI Studio is open from the start. The AI Studio group in the left menu (AI Agents, Knowledge Base, Templates, Media Library, Custom Functions, MCP Servers) used to start folded away, which hid AI Agents — the page people look for most — behind one extra click. Every group now starts open; click a group’s header to fold it and it stays that way for you. See Dashboard.
- Sign in with a passkey. Log in with your fingerprint, face, or device PIN instead of a password. Add one under Settings → Security & General → Passkeys (up to 10, one per device), then use Sign in with a passkey on the login screen. A passkey cannot be phished, and because it already proves both your device and you, no 2FA code is asked for that sign-in. Your password keeps working alongside it. See Passkeys.
- Let the AI write your agent’s tags. The Tags tab of an AI Agent has a new Generate with AI button: the platform reads the agent’s instructions and business context and proposes three to eight tags with a ready-made “when to apply” rule for each, in the agent’s language — lifecycle stages like Interested or Not a fit, facts the conversation reveals, and hand-off reasons. It checks your existing tag library first and reuses a tag when one already means the same thing, so nothing gets duplicated. Choose Add to my tags or Replace all tags, then edit the rows as usual. A run costs 1 credit (0.25 on the Max tier, free on your own AI key). Agents built from a website or documents, in the setup wizard or with New agent, get their tags generated automatically as part of the build. See Creating Tags.
-
Embed the booking calendar on your own website. Until now a shareable booking page was a link you sent people to; now the calendar itself can live on your site. The Booking page section of an event type has a new Embed on website button that hands you a small piece of code — paste it into any page of your website and visitors book right there, seeing your real availability, without leaving your site. The frame sizes itself as the visitor moves through the steps, works next to the website chat widget, and everyone who fills in their details still becomes a contact even if they never pick a time. See Shareable Booking Page.
-
Cancel a scheduled follow-up from the chat. Until now a queued follow-up could be rescheduled from the chat but not simply dropped: the only way out was pausing the AI. Both the AI status bar above the composer and the Follow-up section of the contact panel now carry a Cancel button. Click it, confirm, and the queued follow-up is gone (the one you scheduled by hand or the one the AI Agent queued automatically) while the AI keeps handling the chat. See Chat Interface.
- Usage history now shows which model each charge was billed at. The credit ledger on Settings → Billing told you what you were charged but not why the number was what it was — an AI reply can cost 1 credit, 0.25 or 0.15 depending on the model the answering Agent runs on, and the table gave you no way to tell which rate applied. Every AI charge row now carries a Model column — Pro, Economy, Max or Mini, matching the AI quality picker on the Agent, or Own keys when your own API key handled the call. Non-AI charges (connection fees, template fees) and entries from before this change show a dash. If a row bills at a rate you don’t expect, the column points you straight at the Agent whose model setting to check. See Billing System.
-
Message everyone in a pipeline stage — smart lists now understand deals. The smart-list rule builder has a new Deal stage rule: put contacts on a list when they have a deal in the stages you pick (or simply have any deal, or none at all). And you don’t have to build it by hand — every column on the Deals board now has a people icon in its header that creates the list for you, pre-filled with that stage’s rule. The list stays in sync with the board: drag a deal into the stage and its contact joins the list within seconds, drag it out and they leave. Point a broadcast at that list and “follow up with everyone stuck in Proposal Sent” becomes a self-maintaining audience instead of a copy-paste job. See Turn a Stage Into a Contact List.
-
Switch the AI off for a single channel — even with just one Agent. The Who Answers New Conversations panel has always let you point each channel at an Agent, but saying “nobody answers here” only worked if you had several Agents. On an account with one active Agent the No one’s answering option was hidden, because the platform routes every channel to your only Agent so a fresh account works with zero setup — and that meant there was no way to keep the AI out of just one channel while it kept answering the others; some customers resorted to disconnecting the channel altogether. No one’s answering is now a real choice on every account. Pick it for a channel and new conversations there simply land in your inbox for your team, with no AI reply, no amber warning and no “nothing is configured” notification — and the choice sticks, even as you add, pause or remove Agents later. Pick an Agent again to hand the channel back to the AI. See Entry Points.
-
Select every chat in a view — and archive thousands at once. Bulk selection in Chats used to stop at the rows loaded on screen, so clearing out a big inbox meant ticking chats batch after batch as the list scrolled in — connecting WhatsApp on an account with history can import thousands of old conversations, and archiving them all took twenty minutes of clicking. Now the chat list has a master checkbox that ticks everything on screen, and once the screen is fully ticked a strip offers Select all N conversations in this view — every chat matching your current filter, loaded or not, in one click. The whole bulk bar works on the full selection, archiving runs in efficient batches with progress shown while it works, and you get a count of what was updated at the end. The Contacts page picked up the same pair: an Archive / Unarchive bulk action, and a Select all N contacts matching your filters strip once the visible page is ticked. See Bulk Inbox Actions.
-
Chats now tell you when the AI is outside its working hours. If your Agent has active hours set, a message that arrives outside them was never lost — the AI answers it automatically when the next window opens — but the chat used to read AI is active the whole time, which made the silence look like something was broken. Now, whenever the schedule is closed, the status bar above the reply box shows Outside working hours — AI resumes at the actual reopening time, in amber, and flips back to Active on its own the moment the window opens. It also explains the AI reply scheduled note you may have seen before: that’s the deferred answer waiting for the working hours to begin. See The Chat Interface.
-
Choose what happens outside working hours: queue the AI’s reply, or hand the chat to your team. Until now an Agent with active hours had exactly one after-hours behavior: every message that arrived while the schedule was closed got an AI reply queued for the next opening. Fine for most accounts — but teams that want a person to pick those chats up in the morning had to hunt down each queued reply and switch the AI off chat by chat. The Active Hours tab (on the Agent, and on classic campaigns) now has an Outside working hours section with two options. Queue the AI reply is the default and is exactly today’s behavior. Hand off to your team makes the AI stand down instead: nothing is queued, the chat flips to the red needs attention state, it lands under the attention filter in Chats, and the AI stays paused for that conversation until you resume it — so your team can spot every after-hours chat at a glance and answer personally. (This choice was removed again later in the month — after-hours messages are always answered at the next opening now, and the chats waiting for it have their own filter. See After-hours chats now look after themselves under Improved.) See Bot Availability Schedule.
-
Smart list date rules can now be precise to the minute. The “before” and “after” rules on Added on, Last activity, Last message received and Last message sent used to take a date only — which made it impossible to separate contacts imported this afternoon from contacts added this morning. The rule editor now has an optional time field next to the date, and a Now button that fills in the current moment with one click. Leave the time empty and the rule keeps working with whole days, exactly as before. A practical use: right before connecting a channel or running an import, create a smart list with Added on after → Now — everything that arrives from that moment lands on the list, ready for bulk tagging or a follow-up campaign. See Lists.
-
See how much of your inbox your AI is actually handling. “Is the bot doing the work, or are we?” is the question every account arrives at eventually, and the Dashboard couldn’t answer it: the numbers told you how many messages went out, never who wrote them. A new AI vs human panel, beside Channel Health, now splits whatever range you’re looking at two ways. Messages sent breaks every outgoing message into AI and Your team, with a share bar and a headline pill (73% handled by AI). Conversations counts the same period by person instead, in three tiles: AI only for the ones the AI took from start to finish, Team only for the ones it never touched, and Both for the ones somebody stepped into. Together they say something neither says alone. An account can be 90% AI by message volume and still have a person involved in most conversations, and a Team only count that keeps climbing is usually one topic your agent doesn’t know yet. The Performance Over Time chart gained the matching AI sent and Human sent lines as well; they start switched off, so click either legend label to bring it in. See Your Dashboard.
-
Open Chats on the view you actually work in. Chats has always opened on All chats, which is the right start for an owner and the wrong one for almost everyone else — a teammate whose day is “my assigned conversations” had to re-apply the same filters every single visit. Now you can save any view as your starting point: set the list up how you want it (status, assignee, tags, channel, anything the Filters panel holds), open Filters and click Set as default. From then on Chats opens with that view already applied; Clear default at the same spot takes you back to opening on All chats. Nothing changes for anyone who never saves one. (Originally this saved per browser; later in the month it moved to the account — see Your Chats filter setup now follows the account below.) To make “my chats” easier to reach in the first place, your own name in the Assignee filter is now marked (you) and sits right under Unassigned. See Save your default view.
-
Your Chats filter setup now follows the account, not the browser. The pinned quick-filter chips and the saved default view used to live on the device you set them up on — organize your inbox on one computer, open the account on another, and you were back to the defaults. Worse, an inbox you’d carefully organized for someone else simply wasn’t there when they signed in. Both are now saved to the account itself. Pin a chip, drag it into place, or save a default view once, and the same setup appears on every device and for everyone working in that account. The setup from the device you use most is carried over automatically the first time you open Chats there. See Chat Filters.
-
Choose who takes part in auto-assignment. Automatic assignment of new contacts used to be all-or-nothing: everyone active on the team was in the rotation, and the only way to keep someone out was to suspend their whole seat. Now every person in Settings → Team — including the account owner — has an Include in auto-assignment switch. Switch a supervisor off and new contacts stop landing on them while their access stays untouched: they can still open every chat, reply, and take manual assignments. Existing assignments aren’t affected, and if everyone is switched out, new contacts simply wait in the Unassigned queue. See Choosing who takes part.
-
Jump from a chat straight to the real Instagram conversation. When you pause the AI to take an Instagram conversation over yourself, the natural place to finish it is often Instagram itself — but getting there meant copying the person’s handle and searching for them. Instagram chats now have an Open in Instagram button: an ↗ icon in the conversation header (in the three-dot menu on a phone, where it hands off to the Instagram app), and an Instagram section in the contact panel showing the contact’s @username with the same link. One click opens that exact conversation in Instagram, in a new tab. It shows whenever we know the contact’s username. See The Chat Interface.
-
Pick the posts for a comment-to-DM rule from a list, instead of hunting for Post IDs. Limiting an Instagram Comment or Facebook Comment entry point to specific posts used to mean going into Meta Business Suite, finding each post, copying its Post ID and pasting it into a text box, one per line. Now Specific posts has a Choose posts button that lists your recent posts and reels with their thumbnail, caption and date; tick the ones you want and they appear on the rule. Two reels that should both hand out the same PDF is one rule with both ticked, done in seconds. Pasting IDs still works for anything the list doesn’t show (open Or paste post IDs). The rule editor also now spells out, right under First DM message, the one thing that trips people up most: Instagram and Facebook allow exactly one automatic DM per comment, and the conversation only opens once the person replies to it, so make that first message invite a reply. See Comment-to-DM Automation.
-
WhatsApp templates now work on Meta-connected numbers. If your number runs on your own WhatsApp Business Account — connected through our Meta app or through your own — you can now create templates, get them approved by Meta, and send them, all from the Templates page. Templates you already have in WhatsApp Manager show up in the list on their own, and a Sync from Meta button pulls in anything you change there. See WhatsApp Message Templates.
-
Automations can now respect quiet hours, one switch per workflow. Until today an automation’s message steps went out the moment the workflow reached them — fine for “reply right away”, not so fine for an appointment reminder that lands at 2 AM because the slot is an early one. Every automation’s trigger step now has a Respect quiet hours toggle (click the trigger on the canvas and scroll to the bottom of its settings). Switch it on and any message step that would go out between 8 PM and 8 AM in the contact’s local time waits and is sent at around 8 AM their time instead; every other step still runs right away, and the trigger’s own timing doesn’t change. It’s off by default, so nothing you’ve already built changes on its own. See Respecting quiet hours.
-
Contact import now creates real tags, and can update contacts you already have. Two things people kept running into with the CSV import: a Tags column ended up as a text field called
tagson each contact rather than actual tags, and any row matching a phone number you already had was skipped, so there was no way to re-import a corrected file. Both are fixed. A column mapped to Tags now creates (or reuses, ignoring capitalisation) real tags and applies them; put several in one cell separated by commas or semicolons. And the Review step has a new Update existing contacts switch: leave it off and duplicates are skipped as before; turn it on and matching rows update the contact’s name, email and notes, add its tags, and put it on the list you chose. If you imported a file with tags before today, re-import it with the switch on and the tags land properly. Over the API,POST /contacts/importtakestagsper record andupdateExistingat the top level, and the response gainsupdatedandupdated_contact_ids. See Importing Contacts and the Contacts API. -
Your AI can now book several services, and book them with a specific person. Until now an agent offered exactly one kind of appointment, and whoever happened to be free took the booking. Both of those limits are gone. On the agent’s AI Abilities tab, Choose what people can book is now a list: add as many event types as you like — the first one is the default — and in the chat the AI asks which service the contact wants (or works it out from the conversation) before it offers times. And if you name the rooms inside an event type after your staff, the AI uses those names: it can tell a contact who is free when (“Alex is free at 10:00 and 10:30, Luan at 11:00”), book the person they ask for, and keep them with that same person when a booking is moved. Leave your rooms with generic names and nothing changes — the AI simply takes whoever is free, exactly as before. See Booking System. The same works in the classic campaign editor’s Bookings step, and on your public booking page a Book with row lets visitors pick their person too.
-
The AI now understands Instagram Story replies — and you can tell it to leave them alone. When someone replied to one of your Stories, the AI only ever saw the text (“😍”, “which one is this?”) with no idea it was about a Story, so it would ask odd questions or try to steer a casual reaction into a booking. Story replies now arrive tagged [THE CONTACT REPLIED TO YOUR STORY] with the Story image or video attached, so the AI (and you, in Chats) can see exactly what the person was reacting to and answer in context. And if you’d rather handle Story replies yourself, there’s a new Instagram Story replies switch on the agent’s AI Instructions tab (under Primary language; the classic campaign editor has it too). Turn it off and Story replies still land in your Chats with the Story attached — tags, automations and notifications all still run — but the AI stays quiet and the conversation shows a small “skipped” note so you know why. It’s a live setting, no publish needed, and it’s
respond_to_instagram_story_repliesover the API. See Instagram DMs. -
Automations is now on every account. The multi-step workflow builder has finished its early-access run and is live for everyone — look for Automations under AI Studio in your sidebar. Describe what you want in plain English (“send a follow-up if there’s no reply in 1 hour”, “tag contacts who ask about pricing”) and it builds the trigger and steps for you, or drag everything onto the canvas by hand. Workflows can start from messages, new or updated contacts, deals, appointments, tasks, a schedule, a webhook — or from your own AI agent, which can call an automation mid-conversation as one of its abilities and use the answer in its next reply. Steps cover sending messages (including WhatsApp templates), tagging, deals, tasks, appointments, conditions, loops, delays, webhooks and an AI step that reads the run’s data and writes or decides something with it. Each run uses 0.25 credits, plus 0.25 credits each time an AI step executes; unlimited steps otherwise. See Automations.
-
Lists that fill themselves: smart lists. A list used to be a bucket you filled by hand, so “everyone tagged
hot-leadwho’s been active this month” was a job you redid every week. A list can now be a smart list instead: pick Smart list in the New list dialog, set the rules once, and the list keeps itself right. Rules can look at tags, other lists, channel and status, when someone was added or last active or last messaged you, whether the AI is on for them, whether they’ve ever replied, their email, phone or name, the campaign or teammate they’re assigned to, and any of your own custom fields — combined with All rules or Any rule, up to 20 of them. A live count under the rules (“≈ 3 contacts match”, with a few example names) tells you who they catch before you save. After that it’s automatic: someone who changes and starts matching joins within seconds, time-based rules like “no activity in 90 days” are re-checked every 15 minutes, and Refresh now in the list’s menu re-runs them on the spot. Smart lists work everywhere a normal list does — filter your contacts by one, export it, or point a broadcast at it and let the audience maintain itself. The one thing you can’t do is add or remove someone by hand: membership comes from the rules, so the list shows “Members are computed from this list’s rules” and you change who’s on it by clicking Edit rules. Worth knowing before you pair one with an armed broadcast: everyone who newly matches gets its opening message automatically, and each one uses credits. Over the API,POST /listsandPUT /lists/{listId}taketypeandsmart_rules, withPOST /lists/previewto dry-run a rule set. See Organizing Lists & Contacts and the Contacts API.
-
A collapsed sidebar now peeks open when you rest your mouse on it. If you keep the sidebar collapsed to its slim icon rail, finding something on it meant recognizing the icon or clicking it open first. Now, rest your pointer on the rail for a moment and it slides open on top of the page — labels, the Search box, everything readable — and tucks itself back the moment you move away. The page behind it never shifts. Want it to stay? Click the panel icon at the top while it’s open to pin it. Tabbing into the sidebar with the keyboard opens it the same way, and your usual collapsed-or-expanded preference is remembered exactly as before — a peek never changes it. See Dashboard.
-
React to messages with an emoji. Not every message needs a written answer — sometimes a 👍 is the whole reply. Hover over a message in Chats, click the small arrow beside the bubble, and a row of emoji now sits at the top of the menu: click one and it lands on the customer’s copy of the chat, exactly as if you’d reacted from your own phone. Your reaction shows as a small chip under the message in your inbox; pick a different emoji to replace it, or click the one you chose to take it back. It works on WhatsApp connected by QR and Telegram — the channels that let a business send reactions — and on Telegram the row offers the emoji Telegram itself accepts as reactions. On WhatsApp connected by QR, reactions your customers add to your messages now show up under those messages in your inbox as well. On channels without reaction support the row is greyed out, and hovering it tells you why. See Chats.
-
Find contacts can now really filter — tags, and everything smart lists can do. The automations Find contacts step could narrow its results by a free-text search or a list, but not by the things workflows actually segment on. A scheduled automation that should only process, say, contacts tagged
leadhad to maintain a separate list just to feed the step. Two additions fix that. The quick one: With tag and Without tag fields — “everyone taggedleadbut not yet taggedcontacted” is now one step, no extra lists; tags are matched by name, and a name that doesn’t exist fails the run with a clear “Tag not found” message instead of quietly returning nobody. The complete one: an Advanced filters builder on the same step — the exact rule builder smart lists use, with the same live “N contacts match” preview — so the step can filter on tag combinations (any/all/none), list membership, channel, status, when the contact was added or last active, whether the AI is on for them, do-not-disturb, name/email/phone, which pipeline stage their deals sit in, and custom fields, matched on all rules or any. When Advanced filters are set they take over and the simple fields are ignored; a half-finished rule is never sent, so a filter you’re still building can’t accidentally match everyone. Both are on the public API too:tag,excludeTagandruleson the contacts list endpoint. See Automations. -
An automation can now be pointed at one AI agent. The Incoming message trigger has always had a way to narrow itself to a single campaign, and on accounts using the new Agents experience that picker was simply empty — so an automation there ran for every conversation on the account or not at all. If you run a support agent and a sales agent, that’s the difference between a useful workflow and one you can’t build. The field is now Agent or campaign (optional): open the trigger, click it, and you get a grouped list with your agents by name and your classic campaigns underneath if you still have any. Pick one and the automation only runs for the conversations that agent handles; leave it empty and nothing changes. It’s one choice rather than a set, so a second agent means a second automation. A few agents can’t be singled out here yet — the field counts them just below itself, so a short list is something you can see rather than something you’d have to guess at. See Automations.
-
Show your chat widget running on someone else’s website, without installing anything. Selling an AI assistant is much easier when the other person can see it on their own pages instead of on a demo site, but that used to mean asking them to paste a script tag before they’d agreed to anything. The Manage panel for your chat widget, under Channels & Embed, now has a Client demo link: type any website address, click Copy, and you have a link that opens that site with your widget floating on top of it, exactly as it would look once installed. Send it to a prospect and they can click the bubble and talk to your agent right there. Nothing is installed on their website and nothing about it is changed — the demo only exists inside that link. Chats started from it are real conversations that arrive in your inbox like any other. Some websites refuse to be displayed inside another page for security reasons; when that happens the link still works, showing a neutral browser window in place of the site with your widget live on top. See Website Chat Widget.
-
Automations can remind people before an appointment — and react to nine more things that happen on your account. The trigger list was ten entries long and mostly generic: a schedule, a webhook, a manual run. It’s nineteen now, sorted into groups, and the ones people kept asking for are in it. Before an appointment is the headline: pick the moments you want — 24 hours before, 3 hours before, your own number of minutes, up to five per automation — and the workflow runs once per appointment per reminder. It covers appointments already in your calendar rather than only new ones, moves with a booking when you reschedule it, and cancels the reminder when the appointment is cancelled; a reminder whose moment has already passed when the booking is made is skipped rather than sent late. Alongside it: Appointment booked, Appointment cancelled, New contact, Task created (optionally only one kind of task), Task completed, Message failed — with the reason the channel gave back — Message delivered, and Low credit balance. Three triggers you already had were also quietly half-blind: Incoming message, Contact updated and Deal updated only noticed changes made in the builder itself, so a contact your AI agent updated mid-conversation, a deal moved on the pipeline board, or a record changed by an import or the API started nothing. They now fire wherever the change came from. There’s a full worked example of the 24-hour + 3-hour reminder in Automations, including what to do about WhatsApp’s 24-hour window.
-
New automation actions — WhatsApp templates, appointments, contact controls, and steps that look things up. An automation could create things and little else, so most workflows ended at “make a task and hope”. The action list now covers the work: Send WhatsApp template reaches people outside WhatsApp’s 24-hour window, addressed by contact or by plain phone number (the contact is created if there isn’t one), with the template’s variables filled from the contact’s own details. Send message replaces the old separate WhatsApp and SMS steps — they always sent on whichever channel the contact was already on, and now say so — and can attach an image or file. Send WhatsApp Web message does the same through a QR-linked phone. Appointments gained Reschedule, Find appointment, Find appointments and Find available slots, and Cancel appointment now really cancels — keeping the appointment on record as cancelled — where before it deleted the record outright. Contacts gained Turn AI on or off for a contact, Set do-not-disturb, Set custom field, Move to campaign and Add to / Remove from list. And because a workflow that can’t look anything up can’t make a decision, there are now read steps too: Find contact, Find contacts, Find task and Find tasks, so a Condition can branch on what’s actually there. Also new: a Delay step can wait until a specific moment rather than a fixed stretch of time — “until the appointment starts, minus three hours” — with the moment inserted from an earlier step and an offset in minutes. See Automations.
-
Build a new agent straight from your website. The New agent dialog on the AI Agents page now asks where the agent should learn from, and the answer can simply be your website. Type your address, optionally click Find pages to tick exactly which pages it should read (a handful of relevant ones comes pre-selected), add a price list or brochure if you have one, and click Build agent. The dialog stays with you while the agent is built — it shows what’s happening (reading your website, then writing the instructions) and usually takes a minute or two — and then opens the finished agent’s editor with the instructions and knowledge already filled in, ready to review and tweak. A Continue in the background button lets you carry on with other work while it finishes — the agent shows as still being built in your list until it’s ready to open. Starting blank still works exactly as before, and the pages you picked also become knowledge sources on the agent’s FAQs & Knowledge tab. See AI Agents.
-
Phone numbers now have one price, whichever carrier the number comes from. Working out what a number would cost you each month used to mean squinting at a figure that changed from country to country and number to number, with no way to know in advance which kind you were about to buy. Number rent is now one straightforward thing. Rented numbers are billed in credits at a published platform rate starting at 50 credits a month and rising with the carrier’s own price; the exact rate is shown before purchase and on the number’s card. That rent is the only monthly fee on the number — it includes the WhatsApp connection, so there’s nothing else to pay each month to keep the number messaging. (For comparison, a WhatsApp Web connection on its own, with no number rented here, costs the same 50 credits.) Already renting numbers? They move to the new rate at their next billing cycle — nothing changes mid-cycle, and there’s nothing for you to do. See Phone Numbers.
-
Every number now shows its own monthly price on its card. You no longer have to go looking for what a specific number costs you: open Settings → Channels → Channels and each number’s card under the WhatsApp Business API card carries its exact monthly price, alongside its status. The buy dialog shows the same price before you confirm a purchase, so what you agree to and what you see afterwards are the same number. See Phone Numbers.
-
A new way to connect WhatsApp: use your own WhatsApp Business Account without any developer setup. Until now you had two ends of a spectrum — rent a number here and let everything run on credits, or build your own app in Meta’s developer site and copy four values across. Connect through our Meta app, on the WhatsApp Business API card in Settings → Channels → Channels, sits in between: your own WhatsApp Business Account, with nothing to create on the developer site because the app underneath is ours. Meta bills the conversations directly to your own WhatsApp Business Account. If you bring your own number: 50 credits a month from us for the connection. If you rent your number here: nothing extra, because the number’s rent already covers the connection. One thing to have ready: Meta needs a valid payment method on that WhatsApp Business Account, or it blocks every conversation your business starts, and from 1 October 2026 replies stop too. See Connect Through Our Meta App and WhatsApp Costs & the October 2026 Change.
-
Viber is now a channel you can connect. If your customers are on Viber, and in the Philippines, Vietnam and much of Eastern Europe a lot of them are, your Viber conversations can now land in the app with an AI Agent answering them. Setup is one field: go to Settings → Channels → Channels, click Connect on the Viber card, and paste your bot’s auth token. That’s it. There’s no webhook to copy into another console and no second screen to finish, because we register everything with Viber for you as part of connecting. Incoming photos, videos, files, stickers and locations are recognized, and your Agent replies with text and images. Two things worth knowing before you start. First, you need your own Viber bot: Viber has only issued bots on a paid business plan since February 2024, so you set that up directly with them and the account stays yours, in your name, with its fees between you and Viber. Nothing is added on top here, and Viber costs you nothing as a channel in the app. Second, a Viber bot can only message people who follow it, which makes it excellent for answering customers and poor for cold outreach; replies inside a conversation someone started are free and unlimited on Viber’s side, so an Agent answering your customers costs you nothing beyond Viber’s monthly fee. If someone unfollows your bot, the app notices and stops trying rather than piling up silent failures. See Viber.
-
Your Email channel can now sign off properly. Replies sent from a connected mailbox went out with the message and nothing else — no name, no company, none of the sign-off every business email is expected to end with, and no way to add one. There is now a Signature (optional) box on the Email connection screen (Settings → Channels → Channels → Manage on the Email card): type your sign-off, click Save signature, and it’s added to the bottom of every email that inbox sends — your AI Agent’s replies and the ones you type yourself in Chats alike. It’s added as the email goes out, so it doesn’t clutter the conversation in Chats and your Agent doesn’t read it back as part of the chat. Plain text, up to 2000 characters, line breaks kept as you type them, and each connected mailbox has its own. Leave the box empty for no signature, or clear it later to remove one. See Email.
- Agents can now be given appointment booking directly, and a bug that silently blocked it is fixed. On accounts using the new Agents experience, the agent editor’s AI Abilities tab said booking was “managed automatically” — but there was no switch anywhere to turn it on, and for anyone who created their event type after signing up it simply stayed off. The result was an agent that answered “I’ll pass this to the team” instead of offering times, with nothing in the interface to explain why. That panel is now a real control: turn on Let this agent book appointments, pick Built-in calendar (or Zenchef/Formitable), choose which event type it books against — or create one right there — and save. It applies immediately, without needing Publish. If bookings are on with no event type chosen, the panel now says so instead of failing quietly. If your account still uses Campaigns, nothing changes — the campaign’s Bookings step works exactly as before. See Booking System and AI Agents.
-
Accounts on the new Agents experience no longer get sent to a Campaigns page that isn’t there. If your account uses AI Agents (no Campaigns entry in the menu), a full sweep of the app now speaks your language and works end to end. The Media Library shows your agents and lets you upload and assign media to them — it previously told you to “create a campaign first” even when your media was already there. The agent editor’s Try Out playground and Bookings section no longer send you around in a circle, the Knowledge Base’s Link to an agent window now actually lists your agents, and buttons like “Assign to campaign” that could never work on an Agents account are gone. Champ, the in-app helper, has been re-briefed too — it now gives Agents-first directions instead of advising you to attach campaigns. Older campaign-based accounts see no change. See Media Library and AI Agents.
-
The new interface is now the default. Sign in at the address you always use and you land straight in the new app — the faster, cleaner redesign that until now lived at
/v2. Everything is the same account underneath: your contacts, conversations, campaigns and settings are all there, and old/v2links keep working. (The classic app it replaced has since been retired — see “The classic app has been retired” under Improved.) See the Welcome guide. -
The Mini tier is out of early access. Mini is Max’s lighter sibling: the same in-house AI family on a lighter setup, at 0.15 credits per reply instead of Max’s 0.25. It now appears in the AI Quality picker on every account that has Max — no sign-up, just pick it per Agent. The trade-off is honest and small: Mini carries a slightly higher chance of a small mistake than Max, so for conversations where a wrong detail can cost a sale, Max stays the tier to pick; for high-volume chats where every credit counts, Mini is the budget option that still writes like the family it comes from. See Setting Up Your AI Bot.
-
The automation AI step is simpler, and automation pricing is now flat and predictable. The AI step no longer asks you to pick a model — write your prompt, and it runs on the platform’s built-in AI, the same in-house AI that powers the Max tier, tuned to return exactly the output your next step needs, with no extra chatter around it. Pricing is now spelled out too: each run of an automation uses 0.25 credits, whatever starts it, plus 0.25 credits each time an AI step runs (an AI step inside a Loop pays per repeat; Test step on an AI step runs the real AI and uses the same 0.25 credits). Build with as many steps as you like — the AI step is the only step that adds to the price. If your balance runs out, the run fails with a clear “not enough credits” message in the run history, and new runs go through as soon as you top up. See Automations.
-
You can now add contacts to an automation yourself — one at a time, or a whole list. Every automation trigger so far waited for something to happen: a message arrives, a field changes, a schedule comes round. There was no way to say “run this for these people, now” — so a follow-up sequence you wanted to put 300 leads through simply couldn’t be built. The new Contact added trigger is that missing piece: give an automation this trigger, build your steps (message, wait a day, message again, create a task), and then feed people in from the Contacts page — tick the contacts, click Automation in the bar at the bottom, pick the automation. It runs once per contact, and every step can use that contact’s name, phone, email and channel, so a message step already knows who it’s writing to. You can add people from wherever you already are: in bulk from Contacts, from one contact’s details panel, from the three-dots menu on a conversation, or from the automation itself — the Automations list and the automation’s Log page both have an Add contacts button that lets you search your contacts and tick the ones you want. Adding hundreds of people at once rarely goes well, so contacts are always fed in steadily rather than in one burst — and if you want to stretch it out further, tick Add gradually and choose how many to add at a time and how long to wait between batches (20 every 30 minutes spreads 500 people over about half a day). Progress shows above the run history, with Pause, Resume and Cancel while a batch is still going. By default nobody goes through the same automation twice — add someone again and they’re skipped — but you can switch Re-entry on the trigger if a monthly check-in is what you’re building. See Automations.
-
Your AI agent can now call an automation as one of its abilities. Until now, wiring an automation up to your AI meant a clumsy detour: give the automation a webhook trigger, copy its web address and secret into a custom function, and re-type every field a second time — then keep both sides in sync by hand forever. The new AI Agent Function trigger removes all of that. On the trigger itself you name the function, describe when the AI should use it, list the details it should collect from the conversation, and pick which agents get the ability — or flip it on from any agent’s AI Abilities tab, where it lines up with the agent’s other abilities like you’d expect; turning the automation on hands it to those agents — nothing to copy anywhere. Add a Return response step and the automation’s answer goes straight back to the agent mid-conversation, so it can check a calendar, look up stock in your own systems or calculate a quote and quote the real result in its next reply; without one, the agent is simply told the work has started. The function also appears on your Custom Functions page with a “Managed by automation” badge — kept in step for you, edited only through the automation. And a fix that this work surfaced: New feed item and Email received triggers could be built and enabled but never actually started a run; both now fire properly. See Automations.
-
Every Popular automation action now has a guided form — not just the first three. Last week’s guided forms covered adding a Google Sheets row, sending a Gmail email and posting to Slack; everything else still showed raw technical fields (“A1 notation range”, “UNFORMATTED_VALUE”). Now every action under an app’s Popular heading walks you through it in plain language: Google Sheets find a row, read values, clear values, create a spreadsheet; Gmail drafts, replies and finding emails; Slack finding, listing and creating channels; Notion — pick one of your databases from a list and each of its own properties becomes a field to fill in, plus creating pages, adding content and searching; HubSpot contacts, deals, companies, tickets and contact search; Google Calendar — pick a calendar from your own list, then create, update, find or delete events and find free slots; Google Docs — pick a document from a list, insert text, find & replace, create documents (plain or from Markdown); and Telegram messages, photos, files and forwarding. Live dropdowns pull your actual spreadsheets, sheets, databases, calendars, documents and channels; the technical knobs sit behind Show advanced options with sensible values already set. Steps you built the old way keep working — open one and choose Switch to simple mode for the guided version. See Automations.
-
Webhook automations can now answer back. Until now, an outside tool that called your automation’s webhook only ever got a plain acknowledgement — fine for “fire and forget”, useless if the caller needs something out of the run, like the row you just looked up or the contact you just created. The new Return response step closes that loop: put it anywhere in a webhook-triggered automation, choose a status code and write the reply body (JSON or plain text) using values from earlier steps, and the caller receives your reply the moment the run reaches that step. That turns an automation into a small API of its own: a website form can call your webhook, have the automation look the visitor up in Google Sheets or your CRM, and get the result back in the same call. If the run takes longer than 30 seconds to reach the step, the caller gets the normal acknowledgement instead and the automation simply carries on. Test step previews the reply with your sample data before anything is live. See Automations.
-
Event types are a proper list now, not a wall of cards. The Event Types tab on the Appointments page showed every event type as a card with its details tucked into small chips, so nothing lined up between one event and the next and answering “which of these is 45 minutes?” meant reading each card in turn. It’s a table now, matching the Upcoming Appointments tab beside it: one row per event type, with columns for duration, location, how many bookings it takes at the same time, how many it has, its notice period and when it was last changed — so you can run your eye down a single column instead of hunting. A Rooms column appears as soon as any event type has more than one room. Click a row to open it for editing, or hover it for the pencil and trash icons the cards used to carry. Nothing about your event types themselves has changed. See Booking System.
-
The chat widget can now be told who the visitor is — no more asking logged-in customers for their name. If you embed the widget inside a members area, a customer portal or an app where people are already signed in, your site knows who is looking at it — but the widget didn’t, so it asked them for their name and email all over again and your AI started every conversation from zero. Your page can now hand the visitor over: add a small
window.chatWidgetSettingsblock above the widget script (ordata-visitor-…attributes on an inline embed) with their name, email and phone, and the “Before we start…” form is skipped entirely — the details land on their contact as if they’d typed them. Alongside it you can pass anything else you know about that person — plan, last order number, renewal date, seats, balance — and it all becomes part of what your AI knows about them, so it can answer “when does my plan renew?” straight away instead of asking who they are. Up to 20 values, sent fresh with every message, so the AI always sees the current state rather than whatever was true when the page loaded. Single-page apps that only learn who the visitor is after loading can callwindow.chatWidget.setVisitor({...})at any point. If two different people sign in on the same computer, the second one starts a fresh conversation rather than picking up the first one’s — and none of this is a login: passing an id doesn’t let anyone open somebody else’s chat. Public-website widgets need none of it and are unchanged. See Chat Widget. -
The website chat widget gets style themes — including a new Glass look. The widget your visitors chat with can now be restyled in one click. Six themes each set the look, colors, corners and font together: Classic (the original solid look), Glass (a frosted, translucent panel that softly blurs the page behind it, with the header and message box floating as rounded cards inside it), Midnight (Glass in dark colors), Bloom, Ember and Mono. Beneath the themes sit two independent knobs — Corners (Round, Soft or Sharp) and Font (Default, Serif, Rounded or Mono, using fonts already on the visitor’s device so nothing extra loads on your site) — and every color stays individually adjustable after picking a theme. Your existing widget hasn’t changed — it stays on Classic until you switch. Find it under Settings → Channels → Chat Widget → Manage, in the Appearance section; changes are live everywhere your widget is embedded the moment you save, with no code changes on your site. Widgets created from now on start on Glass. See Chat Widget.
-
Max replies just got more accurate. Even the best AI models occasionally state something your business never said — a price, an opening time, an offer that doesn’t exist. We measured it, and every top model on the market does this on a few percent of fact-seeking questions. This month the Max tier got an under-the-hood accuracy upgrade aimed squarely at those rare invented details, and in our latest measurement Max came through 120 fact-seeking questions without a single unsupported claim. There’s nothing to set up and nothing extra to pay — it’s simply part of what the Max tier is: the most accurate model we ship, tuned hardest to stick to what your business actually says. (The early-access Mini tier is the lighter model in the family, with a slightly higher chance of small mistakes — for conversations where a wrong detail can cost a sale, Max is the tier to pick.) See AI Model & BYOK.
-
Max now says “let me check” instead of guessing at questions you haven’t answered yet. When your AI runs into a question your knowledge base can’t answer, it already flags it as a task for your team. New on the Max tier: until you answer that flagged question, Max treats the topic as off-limits for guessing — it shares only what your business materials actually say and tells the customer your team will confirm the rest, rather than filling the blank with what businesses like yours typically offer. Answer the task (it becomes an FAQ) and from the next conversation on, Max gives your real answer instead. One more way the Max tier earns its accuracy billing; other model choices keep their usual behaviour. See Tasks and FAQ Management.
-
Every channel now shows its own send volume, right where you manage it. The dashboard has always charted your messaging activity, but checking what one specific channel or number actually sends meant leaving the page where you manage them. On the Channels page (Settings → Channels → Channels), every connected channel — and every individual WhatsApp or SMS number — now carries its own small Send volume graph: messages sent per day over the last 30 days, with the total beside it. Hover it to see any day’s exact count, or click its header to expand it into the full performance view — sent, delivered, read, replies and new contacts over time, the same chart your dashboard shows account-wide, but filtered to just that channel or number. It’s especially handy while warming up a new WhatsApp Web number, since the graph sits right next to that number’s send-limit meters, so you can watch its daily output climb the way the warm-up intends. The graph appears once the channel or number has sent something in the last 30 days. See Scaling WhatsApp Outreach.
-
Automation steps for outside apps are now guided — pick your spreadsheet, see your own columns. Setting up a Google Sheets step used to mean staring at technical fields (a “values” box wanting something like [[“a”,“b”]]) copied straight from the app’s API. The most-used actions now come with proper guided forms instead: for Google Sheets — Add a row you pick the spreadsheet from a live list of your own files, pick the sheet, and your sheet’s actual column headings each become their own field, ready to fill with values from earlier steps. Gmail — Send an email is just To, Subject and Message; Slack — Send a channel message lists your real channels to pick from. The action list itself is curated too: opening an app now leads with a short Popular group of its most useful actions, in plain language, with the technical long tail underneath. Rarely-used settings sit behind “Show advanced options”, and every guided step has a Test step button that runs it for real — the row genuinely lands in your spreadsheet — so you know it works before turning the automation on. Steps built the old way keep working untouched; open one and choose “Switch to simple mode” to get the guided form. The AI builder produces these guided steps now too. See Automations.
-
Automation steps now ask you to connect the app they need. An automation step that uses an outside app — Google Sheets, Gmail, Slack and the rest — can only run once that app is connected to your account, but until now nothing told you when it wasn’t: a step could sit there looking finished and quietly fail on its first real run. Now an unconnected step shows a small amber dot on the canvas, and opening it puts a Connect button right at the top of its settings — click it, approve the app in the tab that opens, and the step unlocks by itself within a few seconds. This matters most for automations the AI builds for you, since those arrive on the canvas fully formed. The settings panel also now shows the app’s own logo and name instead of a generic “Action” label, app icons appear instantly instead of loading in late, and retired versions of app actions no longer appear in the action picker. See Automations.
-
Stop follow-ups for one contact without silencing the AI. Once someone buys from you, chasing them with follow-ups is the wrong move — but switching their bot off, which was the only way to stop it, also stopped the AI answering their support questions. Every conversation now has a Follow-ups switch in the contact panel under Preferences, next to Bot replies and Do Not Disturb. Turn it off and no follow-ups of any kind reach that contact again — quick, cycle or cold-lead — while the AI keeps replying normally whenever they message you. It is deliberately sticky: if they write again weeks later, follow-ups do not restart on their own. The contact stays in the same campaign, so a campaign covering both pre-sale questions and after-sale support keeps working for them. You can also flip it without touching the app — set
follow_ups_disabledon the contact through the API (most people fire this from their checkout or payment webhook), or use the Update Contact action in an automation, for example when you tag someone as a customer. See Follow-Up System and the Contacts API. -
Automatic tagging can now remove tags too — and it’s much more precise. Until now the AI could only ever ADD tags to a contact, so rules like “remove the tag once they’ve paid” were silently ignored and stale tags piled up over time — including contradictory ones, like two different payment-day tags on the same contact. The tag evaluator has been rebuilt: it now sees which tags the contact already carries and what today’s date is, only adds a tag when the conversation clearly matches your rule, removes a tag when your rule’s removal condition is met (free — removals never use credits), and swaps one-of-a-kind tags (like payment-day tags) instead of letting two coexist. Tags applied by hand outside your agent’s tag rules are never touched. Write the removal condition straight into the tag’s “When to Apply” text — see Using Tags to Label Contacts.
-
Select several at once — checkboxes come to Broadcasts, Appointments, Automations and AI Agents. The Contacts page has always let you tick a set of rows and act on all of them together; now the other list pages work the same way. Every row has a checkbox, the header checkbox selects everything currently shown, and a bar appears at the bottom of the screen with the actions that make sense for that page: delete broadcasts or appointments in one go, enable, pause or delete a set of automations, and activate, pause or delete several AI agents together. Everything asks you to confirm once before acting, with the count right in the button. A few sensible guardrails apply — broadcasts that are mid-send or scheduled are skipped, and an agent a broadcast or entry point still points at stays put until you free it up. Press Escape to clear a selection. (Deals and Tasks already had this in their table views.) See Broadcasts, AI Agents, Automations and Booking System.
-
Your AI can now send PDF documents. The Media Library has always let your agent send images, videos, GIFs and voice notes at the right moment in a conversation — now it takes PDFs too. Upload a brochure, price list, catalog or terms document, tell the bot when to send it (“when someone asks for the full price list”), and it goes out as a real document attachment on WhatsApp, Facebook Messenger and Telegram. On upload the platform reads the PDF’s text, so the bot knows what’s inside the file and picks its moment accordingly — the same automatic analysis images and audio already get. Instagram doesn’t accept document attachments, so on Instagram conversations the bot answers in text instead. Same rules as all library media: 10 MB per file, sent at most once per conversation unless you raise the limit. See Media Library.
-
Dates can now be written year first (YYYY/MM/DD). The Date Format setting had two fixed orders — day first and month first — plus Automatic, which follows whatever your interface language does. That left anyone who wants the year-first order without wanting the app in Japanese, Chinese or Korean with no way to ask for it. Year first (YYYY/MM/DD) is now a fourth option, so 4 August 2026 reads 2026/8/4 everywhere dates appear in numbers. Pick it in Settings → Profile → Preferences → Date format; it saves the moment you choose it, and nothing else about your data changes. See Account Settings.
-
Polish and Simplified Chinese, and a language picker you can search. The new dashboard is now available in Polski (Polish) and 简体中文 (Simplified Chinese). The dashboard is available in every language the app is available in (see Account Settings for the list). Emails follow along in both, the same way they follow your language setting everywhere else. The picker itself also got easier to use: every language has always been listed under its own name, which is right if you read that language but not much help if you are scanning for the English one, so each entry now shows its English name underneath and the list has a search box. Type “Polish” or “Polski”, either finds it. You will find it all in Settings → Profile → Preferences → Language, or from the globe button at the bottom of the left sidebar. See Account Settings.
-
The dashboard now speaks Greek. Ελληνικά joins the language list. The dashboard is available in every language the app is available in (see Account Settings for the list). Pick it in Settings → Profile → Preferences → Language (or from the globe button at the bottom of the left sidebar) and the whole interface switches over — and the emails we send you follow along, the same way they do for every other language. Your AI never needed the setting to talk to your contacts: it already answers each person in whatever language they write, Greek included. See Account Settings.
-
Filipino — and Taglish, for the way people actually chat. Filipino joins the language list. The dashboard is available in every language the app is available in (see Account Settings for the list). Pick it in Settings → Profile → Preferences → Language (or from the globe button at the bottom of the left sidebar) and the whole interface switches over, with the emails we send you following along the same way they do for every other language. The chat widget on your website greets Filipino visitors in Filipino too. The bigger change is on the AI side: your agent’s Primary language list now offers both Filipino and Taglish (Filipino + English). Most Filipinos don’t write pure Filipino in a DM — they mix in English constantly — so an agent set to Filipino answers correctly but in a more formal register than the conversation is in. Set it to Taglish and it writes the way your customers do. Pick either from Primary language at the top of an agent’s AI Instructions tab; it saves straight away and every campaign attached to that agent follows. See Account Settings and AI Agents.
-
The dashboard now speaks Slovenian. Slovenščina joins the language list. The dashboard is available in every language the app is available in (see Account Settings for the list). Pick it in Settings → Profile → Preferences → Language (or from the globe button at the bottom of the left sidebar) and the whole interface switches over, and the emails we send you follow along the same way they do for every other language. The chat widget on your website greets Slovenian visitors in Slovenian too. Your AI never needed the setting to talk to your contacts: it already answers each person in whatever language they write, Slovenian included. See Account Settings.
-
The dashboard now speaks Thai. ไทย joins the language list, by request. The dashboard is available in every language the app is available in (see Account Settings for the list). Pick it in Settings → Profile → Preferences → Language (or from the globe button at the bottom of the left sidebar) and the whole interface switches over. The chat widget on your website greets Thai visitors in Thai too. The emails we send you still arrive in English for now — Thai is on the dashboard first. Your AI never needed the setting to talk to your contacts: it already answers each person in whatever language they write, Thai included. See Account Settings.
-
The dashboard now speaks Bangla. বাংলা joins the language list, by request. The dashboard is available in every language the app is available in (see Account Settings for the list). Pick it in Settings → Profile → Preferences → Language (or from the globe button at the bottom of the left sidebar) and the whole interface switches over. The chat widget on your website greets Bangla-speaking visitors in Bangla too. The emails we send you still arrive in English for now — Bangla is on the dashboard first. Your AI never needed the setting to talk to your contacts: it already answers each person in whatever language they write, Bangla included. See Account Settings.
-
Peruvian Sol added to the currency list. S/ (PEN) now appears in the Currency picker alongside the other forty or so options, so deal values, pipeline totals and dashboard figures show in soles. Find it in Settings → Profile → Preferences → Currency. See Account Settings.
-
Argentine Peso added to the currency list. AR$ (ARS) now appears in the Currency picker alongside the other forty or so options, so deal values and totals show in pesos. Find it in Settings → Profile → Preferences → Currency. See Account Settings.
-
Let several people book the same time slot. Bookings have always been one per time slot: the moment somebody took 5:00 PM, nobody else was offered 5:00 PM. Event types now have a Multiple bookings per slot switch in their Slot section. Turn it on, set Bookings per slot to anything from 2 to 500, and that time keeps being offered until it is full. A fleet of ten cars is 10, a class with twelve places is 12, and the Unlimited switch beside the number takes the limit off completely. Your AI can tell contacts how many places are still free (“5:00 PM has 3 spots left”), and it never invents a number for the ordinary one-booking event types. Canceling frees the place straight away, booking by hand shows a “2 left” badge on each time, and the event type’s card says “10 per slot” so you can see it at a glance. Busy time on a synced calendar still blocks the whole slot, because that means you are not available at all. Event types you leave alone are untouched: they stay one booking per slot. See Booking System.
-
Rooms are now editable in the new interface, and each one can take its own number of bookings. A room is any resource people book: a staff member, a chair, a car, a court. Until now you could only manage them in the old app, so the new event type form quietly kept whatever was there. It now has a Rooms section of its own, between Weekly hours and Notifications: click Add room to add one, give it a name, set its own weekly hours, and (once Google Calendar is connected) point it at its own calendar. Room 1 keeps using the Weekly hours at the top of the form. Each room also gets its own Bookings per slot row. By default a room follows the event and says so (“Uses the event setting (10 per slot)”), and switching on Override gives that one room a number of its own, from 1 upwards, or Unlimited. That is how a clinic runs one event type with a twelve-place group room next to a treatment room pinned to one person at a time. Two rooms with 3 bookings per slot is up to 6 bookings at once; once a room has its own number, the total is the sum of each room’s number. On the Event Types tab a card shows a 2 rooms chip, and Varies by room when the rooms are not all on the same number. Two rooms cannot share a name, since bookings are matched to a room by its name, and renaming a room leaves bookings already made under the old name as they are. See Booking System.
-
Every email we send now arrives in the reader’s own language. Welcome emails, password resets, appointment confirmations, credit warnings, team invites — all of them used to go out in English no matter who was reading. They now follow the Language setting on the recipient’s own profile (Settings → Profile → Preferences), in every language the app is available in (see Account Settings for the list), with Arabic and Hebrew laid out right-to-left. Nothing to switch on: it applies to everyone on your account and everyone you’ve invited, each in their own language, and anyone who has never picked a language keeps getting English. Change yours any time from the same picker that controls the app’s language. See Account Settings.
-
See who replied, not just that someone did. Replies in a conversation have always shown an AI badge when your agent wrote them, but a reply typed by a person showed nothing at all, so on a shared inbox there was no way to tell your AI, yourself and your teammates apart. Every reply now carries a sender label: AI for your agent, and the teammate’s name for anyone who answered by hand (your own replies read You). When two people reply in a row they each get their own label instead of the second one hiding under the first. Campaign, broadcast and API messages stay unlabelled, since nobody typed them individually. Replies sent before today have no name on file and show the generic You or Team. See Chat Interface.
-
Connect Zenchef and Formitable yourself. Both restaurant-booking systems now set up from Settings → Booking & Calendar instead of needing us to do it for you. Click Connect, enter your Restaurant ID, and we check it against the live booking system before saving anything — for Zenchef you also confirm the restaurant’s name, so nobody can attach a restaurant that isn’t theirs. Add as many restaurants as you run; each one gets its own Pause and Remove, so you can take one offline for the AI without touching the rest. See Zenchef and Formitable.
-
Connect Google Calendar from Settings. Google Calendar now has a Connect button of its own on Settings → Booking & Calendar: click it, pick your Google account, and the page flips to Connected on its own. There’s a Disconnect button next to it too, so you can re-authorize without hunting for the flow. Previously the only ways in were the setup wizard and an event type’s warning link, and that link sent you to Settings — which had nothing to click, so anyone who had already finished onboarding was going in circles. See Google Calendar Integration.
-
Search inside a single conversation. The search bar above your chat list finds the right chat; the new magnifying glass in the conversation header finds the right message inside the chat you already have open. Type what you remember and matching messages appear newest-first with your words highlighted, then click one to jump straight to it in the thread. It looks through the whole conversation, however far back it goes, not just what’s loaded on screen, so there’s no more scrolling up for minutes to find what someone said last month. The same search sits on the Messages tab of a contact’s record. See Chat Interface.
-
Change your AI’s primary language any time — and the setup wizard now asks for it. Your Agent’s primary language (the language it writes in by default, and the one it uses for handover alerts, tasks and suggested FAQs) used to be fixed at the moment you created the Agent, with no way to change it afterwards. There’s now a Primary language picker at the top of the AI Instructions tab, on both Agents and campaigns. It saves the moment you pick it, applies to every campaign attached to the Agent, and doesn’t need publishing. It doesn’t retranslate instructions or FAQs you’ve already written — those stay as they are. The setup wizard also asks for it now, on the website step, starting from whatever language you use the app in: before this, agents built through the new wizard were always set to English. See AI Bot Setup.
-
Tell contacts they’re chatting with AI — built-in transparency for the EU AI Act. From August 2, 2026, EU transparency rules require chats to disclose when someone is talking to an AI. A new Tell contacts they’re chatting with AI toggle in the campaign editor’s AI Abilities step (and on your Agent’s abilities tab) handles it for you: the very first AI reply a contact ever receives naturally works in a brief mention that it’s an AI assistant, and every reply after that — including follow-ups and later campaigns — is completely unchanged. New campaigns and agents have it on by default; existing campaigns are left exactly as you configured them, so flip it on per campaign whenever you’re ready. If your audience isn’t covered by these rules you can turn it off. See AI Bot Setup.
-
Bring a warmed-up WhatsApp number from your own Twilio account. If you already run WhatsApp on your own Twilio — a number with history behind it and templates that are already approved — you can now keep it. Switch the account to your own Twilio on the Twilio Account card as before, and the WhatsApp Business API card then offers Attach your sender: enter the number, and it becomes a channel you can point an agent at. Your templates stay in your own account and are never re-submitted, the number is never released, and there’s no monthly number charge here because you’re paying Twilio directly. Previously the switch only changed which Twilio account we sent through, and your existing number never showed up as a channel at all — so this is the missing half of that flow. While you’re on your own Twilio the Buy number and Meta signup buttons step aside, because both of those would quietly set up a second Twilio account alongside yours and split your sending across the two. See SMS Provider (Bring Your Own Twilio).
-
Set a campaign’s tags over the API. Tags are what your AI attaches to a contact mid-conversation, and they’re what a lot of people key their webhooks off — so a campaign built through the API couldn’t be measured until someone opened the dashboard and added them by hand.
PUT /campaigns/{campaignId}now takes atagsarray and writes the whole set in one call, exactly like the editor’s Tags tab does when you save it. There are endpoints for adding or editing a single tag as well; those already existed but weren’t written down anywhere, which is the real reason this looked impossible. All of it is documented now, with the fields, the examples and the one rule worth knowing — the array replaces, so send every tag you want to keep. See Campaign tags. -
Choose how the app’s decorations look — emojis, icons, or nothing. The dashboard uses playful accent images in a few places — the waving hand on the sign-in screen, the icons on empty pages. A new Decorations choice in Settings → Profile → Preferences lets you keep the 3D emojis, swap every one of them for a matching line or filled icon, or hide them entirely. It applies instantly on the device you’re using. See Account Settings.
-
Read your chats on a 12-hour clock. Chat timestamps were always 24-hour: a message sent at a quarter to four in the afternoon read 15:45, with nothing anywhere to change it. A new Time format choice in Settings → Profile → Preferences now sets the clock for every time the app shows you, chat bubbles included. Pick 12-hour (3:45 PM), 24-hour (15:45), or leave it on Automatic, which follows your interface language: English reads 3:45 PM, Dutch and German read 15:45. It saves the moment you pick it and applies everywhere at once, so the time in a bubble and the time in its hover details always agree. See Account Settings.
-
Every event type can now have its own booking page. Bookings used to happen only inside a conversation, with your AI offering the times. Each event type can now also carry a public link that anyone can open and book on, with no account and no conversation first. Switch on Shareable booking page at the bottom of the event type form, keep the link ending that’s filled in for you or type a nicer one, then copy the link or show it as a QR code for a flyer, a business card or a shop window. It belongs behind a “Book now” button, in a bio, in an email signature, at the end of an ad. The page itself is built for phones, shows times in the visitor’s own time zone, offers exactly the availability your AI books against (weekly hours, notice, rooms, busy time on a synced calendar), never double-books, and sends the usual confirmation email. The genuinely useful part is the order of the steps: the visitor gives a name and an email or phone before the calendar appears, so somebody who starts booking and then wanders off is still saved as a contact, tagged booking-page-lead. Finished bookings pick up booking-page-booked too, which makes “has booking-page-lead but not booking-page-booked” your abandoned-booking list: point an automation at that pair of tags and email those people an hour later. Switching a page off keeps its link reserved, so turning it back on restores the same address and every button pointing at it starts working again. See Shareable Booking Page.
-
The chat filters are yours to arrange now. Filtering your inbox used to mean dragging a row of chips sideways to find the one you wanted, and Campaign, Tags, Channel and Assignee were right at the far end where nobody found them. The row above your chat list is now a set of quick filter chips you pin yourself, in the order you drag them into. It starts as All chats, Open, Unread and AI paused with their live counts, and a Filters button sits at the start of the row holding everything you can filter by: status (all ten, with counts), campaign or agent, list, tags, channel and assignee. Every option in there carries a small pin — click it and that filter gets its own one-click chip in the row, whether it’s a status like Attention or one specific tag, list, channel or teammate. So somebody who lives in one tag pins the tag, and somebody who checks Attention first thing every morning pins that instead. Drag the chips into the order you want, most-used first, and hover one to reveal a small crossed-out pin that takes it off the row again (right-click, or press and hold on a phone, still works too, and is how you shuffle a chip along without a mouse); the row is remembered in the browser you set it up in. Two of the filters are new: if your account runs on AI Agents you now get an Agent filter (classic campaign accounts keep Campaign, and an account part-way between the two sees both), and there’s a List filter for narrowing the inbox to the contacts on one list. Search got better in the process too: typing now searches inside whatever you’ve filtered to, instead of ignoring it. See Chat Interface.
-
Pin the chats you’re actually working on to the top. A busy inbox sorts by whoever messaged last, so the conversation you need keeps sliding down the list every time somebody else writes in. Hover a chat row — or open the chat — and click the new pin icon next to the star. Pinned conversations sit in their own Pinned section at the top of your chat list, newest pin first, and they stay there no matter how old their last message is. Apply any filter and the list goes back to normal most-recent-first order, because a filter should show you a true picture of what matches it; pinned chats just carry a small Pinned label on their row there. Search sits in between — no separate section, but pinned matches are listed first. You can pin up to 15 chats. A pin lives on the conversation itself, exactly like the Important star does, so it’s shared across your team’s view of the inbox — everyone sees the same chats held at the top. It changes nothing for the contact or the AI. See Chat Interface.
-
Turn a conversation into a task without leaving it. “Call them back Thursday” is exactly the kind of thing that disappears the moment you close the tab. There’s now a task button in the conversation header, on every chat row when you hover it, and in the contact panel on the right — each one opens the normal task form with the contact already linked and the type set to To Do. The contact panel also lists that contact’s open tasks with their due dates (overdue ones in red), so you can see what’s outstanding while you’re reading the thread; click one to open it. Best of all is the small to-do toggle next to the message box: switch it on before you reply, keep the title that’s filled in for you or write your own, pick a due date in one tap (Later today, Tomorrow, In 3 days, Next week, or your own date), and send. The task is created as the message goes out and stays linked to it, so opening the task later takes you straight back to what was said — and if the task can’t be created for any reason, your message still sends and you get a Try again. It all appears once Tasks is switched on for your account and your permissions let you edit contacts. See Chat Interface and Tasks.
-
When a custom function fails, you can finally see it — and see why. Until now, an AI custom function that hit a wall mid-conversation — wrong credentials, endpoint down, timeout — failed invisibly: the chat showed the AI carrying on politely, and nothing anywhere in the product told you the call had gone wrong or what the other side said. Now the conversation itself shows a red “(function name) failed” marker, in both the agent’s Try Out tab and real conversations in Chats — click it to see the status code and the response your endpoint sent back, which is usually the whole diagnosis (a 401 with “unauthorized” points straight at the authentication header). Successful calls get a clickable marker too, so you can inspect exactly what your endpoint returned while testing. And for automations that start with a Webhook trigger, the run history now counts calls that were turned away for a missing or wrong secret, instead of pretending they never happened — a banner tells you how many and what to fix. See Custom Functions and Automations.
-
Automation triggers can be swapped, AI Agent Functions take JSON, and the AI builder can create them for you. Three rough edges off the automation builder at once. First: a trigger is no longer forever — open it and click Change trigger to switch an automation from, say, a schedule to a webhook without rebuilding the steps; if the current trigger has settings you’ve filled in, you’re asked before they’re cleared. Second: the details an AI Agent Function collects can now be a JSON value, not just text, numbers and yes/no — pick JSON for a parameter and your agent can hand the automation a whole structured bundle (a complete delivery address, a list of items) in one go. Third: the plain-English builder now knows about AI Agent Functions — describe what you want (“give my agent a way to check stock in my system”) and it sets up the function trigger, its parameters and the response step for you; you just pick which agents get the ability. See Automations.
-
AI Agent Functions can now write their own settings. The name, the when-to-use-it description and the list of details to collect are what make an ability work well — and they’re also the part most people would rather not write. Build your automation’s steps first, then click Fill in with AI at the top of the trigger’s settings: it reads what the automation actually does and writes the name, description and details for you. Anything you already typed is kept — it only fills in the blanks — and you can edit everything before saving. See Automations.
-
The help center is now one set of guides. While the old and new interfaces ran side by side, the help center kept two manuals — a “Docs” tab for the old app and a separate “New UI (v2)” tab for the new one. With the new interface now the one everybody uses, they’ve been folded into a single set of guides: every page describes the current app, with current screenshots, at one address. Old bookmarks and shared links — including any
/v2/...address — take you to the right page automatically, and the ? help button on each page of the app opens the same guides it always did. -
The “Tell contacts they’re chatting with AI” setting is much easier to find. The AI transparency toggle lived only on the AI Abilities tab, and plenty of people never came across it — then wondered why the AI mentioned being an AI assistant even though their instructions told it to present itself as a member of staff. It now shows up in two more places. The setup wizard’s agent step shows the toggle itself, so you make the choice while your first campaign is being created. And whenever it’s on, the AI Instructions editors and the Try Out test chat (on campaigns and Agents, and inside the wizard’s Test & adjust step) carry a note explaining what it does — the first reply mentions the AI, and instructions that tell it to claim to be human are overridden while the setting is on, so an instruction that seems ignored is a setting, not a fault — with the switch right on the note, so you can turn it off on the spot instead of going looking for it. The setting itself is unchanged: on by default for new campaigns and agents, off only if you flip it off, and the AI Abilities tab remains its home. See AI Bot Setup.
-
Edit a contact straight from the conversation. Fixing a misspelled name or adding the email address someone just gave you meant opening the contact panel on the right, or leaving for the Contacts page. The conversation’s three-dot menu now has Edit contact, which opens the same details form — name, phone, email, tags and notes — over the chat you’re reading. It appears for anyone whose permissions let them edit contacts. See Chat Interface.
-
Phone and email are editable straight from the conversation, and the agent name is now a link. Two more things the contact panel showed you but wouldn’t let you touch. A customer gives you their email mid-chat: click the Email row, type it, click the tick — no form, no page change, and a contact with no email on file now shows Add email instead of nothing. Same for a phone number that came in with a typo. Nothing saves until you confirm, so a stray click can’t quietly rewrite a customer’s number: the ✕, Esc, clicking elsewhere or moving to another chat all discard the edit. And the Agent handling the conversation is a link now: click it and its editor opens, so when a reply reads wrong you can go straight to the instructions that produced it instead of hunting for the right agent under AI Studio. (On accounts still using campaigns, the campaign name links the same way.) See Chat Interface.
-
The contact panel is editable now — agent, deals and tasks, all from the chat. The panel on the right of a conversation showed the important things about a contact and then let you do almost nothing with them: the Agent handling the replies was plain text, the Deal section showed a single figure with no way to open it, and clicking a task threw you out of the conversation onto the Tasks page. All three are live now. Agent has a Change link that hands the contact to a different AI Agent (or back to your team) without hunting through menus. Deal lists this contact’s actual deals with their stage and value — click one to edit it over the chat, or Add deal for a new one. And a task opens the same form the Tasks page uses, so pushing a due date or moving a stage takes a click and you keep your place in the conversation; the full task record is still there behind the ↗ icon on the row. See Chat Interface.
- Filtering by a tag no longer hides your archived chats — unless you want it to. Filtering Chats by a tag (or campaign, channel, assignee…) has always searched only your active conversations: if three contacts carried a tag but two of those chats were archived, the filter showed just one — and it looked like the filter was losing people. The Filters panel now has an Include archived chats switch. Turn it on and every view except Archived widens to include archived conversations: the pill counts widen with the list, Select all N in this view covers them, and searching spans both. The wider list always announces itself with an Including archived chip in the filter row — click its × to go back to active-only — and Set as default saves the switch with the rest of your view. See Chat Filters.
Improved
-
The automation prompt box now shows you what to ask for, and finishes your sentence. Building an automation started with an empty box and four fixed examples, which is a poor answer to “what can I even automate here?”. There are now sixteen worked examples covering the things people actually build: capturing a lead from your website form, reminding customers before an appointment, updating your CRM when a deal is won, routing a new contact to an agent, alerting a human when someone asks for one, and re-engaging quiet contacts. Four show at a time and More ideas cycles through the rest. Click one to drop it in the box and edit from there. As you type your own description, the box suggests how to finish the sentence in grey ahead of your cursor: press Tab to take it, or keep typing to ignore it. Every suggestion sticks to triggers and actions that exist, so what it offers is something the builder can really make. See Automations.
-
After-hours chats now look after themselves — and new Outside hours and Scheduled filters show you what’s waiting. An Agent with active hours has one after-hours behavior again, and it’s the one that needs no attention: a message that arrives while the schedule is closed is answered automatically the moment the next window opens, and nobody has to do anything. The Outside working hours section on the Active Hours tab — the Queue the AI reply / Hand off to your team choice — is gone. Handing every after-hours chat to the team turned a quiet evening into a pile of conversations somebody had to resume one by one, and the two options were easy to mix up. If you’d rather not wait for the window, just reply yourself: the queued AI reply is dropped, so the contact never gets a stale bot answer on top of yours. To see what’s holding, Chats has a new Outside hours filter — every chat that came in outside working hours and is waiting for the AI’s next window — and a new Scheduled filter that gathers everything with something queued to go out: a follow-up, or an AI reply waiting to send, including those after-hours chats. It matches the green Scheduled pill you already see on rows. That also makes AI paused honest again: it now means only what it says, chats where the AI really is paused, whether you paused it or the AI handed the conversation to a person. Attention is unchanged — those are still the conversations the AI flagged for a real person. See Bot Availability Schedule and What each status filter does.
-
Tell WhatsApp Web chats apart from WhatsApp API chats at a glance. Both channels used the same green WhatsApp badge, so a chat list mixing the two gave no clue which was which. WhatsApp Web contacts now show a solid green badge with a white WhatsApp logo, in the chat list, the chat header, the contact panel and everywhere else the channel badge appears; WhatsApp API contacts keep the green logo on white. To show only one type, use Filters → Channel.
-
Quick filter chips: channel logos and a clearer drop marker. A pinned channel chip in the Chats filter row now shows that channel’s own logo (WhatsApp, Telegram, Instagram…) instead of a generic filter icon, so a row of pins is readable at a glance. And when you drag a chip to reorder, a thin line now appears in the gap where it will land, rather than the chip you’re hovering lighting up as if you were dropping onto it. See Pin your own quick filters.
-
Splitting a reply into chunks now shows the send as it actually happens — and you can stop it. Sending in chunks paces the messages a few seconds apart so they read like a person typing, but the chat painted every bubble as sent the moment you clicked — while the later chunks were still on their way, for up to half a minute on a long reply. The thread now shows the real state: each bubble appears when its message actually goes out, marked with a small clock until it’s confirmed, and everything still waiting sits in a Sending preview under the conversation — the same kind of live preview you see while the AI is typing. A Stop button on that preview cancels everything that hasn’t gone out yet; what already reached the contact stays, and the unsent part of your reply goes back into the reply box so you can rework or resend it. See The Chat Interface.
-
A chat with no AI agent behind it now says so, instead of failing after the click. On a conversation that isn’t handled by any AI agent or campaign — a chat that came in before you set one live, for instance — Generate reply used to look perfectly clickable and then fail with an error, and Resume AI and the header’s AI toggle flipped a switch that couldn’t do anything. All three now grey out with a tooltip that explains why and points at the fix: pick Assign AI agent… from the chat’s ⋯ menu. The AI status bar above the composer and the Bot replies toggle in the contact panel say the same thing. See The Chat Interface.
-
Connecting Gmail now goes straight to the credentials form. Picking Gmail on the Connect Email screen used to launch a one-click Google sign-in that was switched off while it had issues — so the button paused on a spinner and then dropped you on the app-password form anyway. The detour is gone: Gmail now opens the mailbox credentials form directly, with the Gmail server settings already filled in, so you just enter your address and a Google app password. This is the designed way to connect Gmail, not a workaround — an app password is Google’s supported method for mail apps, safer than your real password and revocable on its own at any time. The Email guide now walks through creating one step by step.
-
Edit your agent’s instructions right beside the test chat. The Try Out tab’s instructions pane used to be read-only on an AI Agent — it showed a “Not available here yet” note and sent you back to the AI Instructions step for every tweak, which made test-and-adjust a two-page loop. The pane is now fully editable on agents, exactly as it always was for campaigns: change a field (or use Edit as text), click Save, and the test chat answers with the new instructions straight away. Saves land as a draft like any other agent edit, so real conversations only pick the change up when you click Publish to live. See Try Out (Test Chat).
-
Unarchive chats in bulk. Selecting several conversations on the Archived filter used to offer the same Archive action as everywhere else — restoring chats archived by mistake meant reopening them one at a time. In the Archived view the bulk bar’s action now flips to Unarchive: tick the chats, click it, and they all move back to your inbox at once. See The Chat Interface.
-
A custom date range can now stop at an hour, not just a day. Wanting to know what happened between 9 in the morning and 5 in the afternoon meant reading a whole day’s totals and guessing at the rest. Custom… on the Dashboard’s time range picker now shows a From row and a To row, each with a date and an optional time of day. Put the same date on both with 09:00 and 17:00, and every number, chart and panel on the page covers just that window. Times are read in your own local time, and the window you chose is spelled out under the page title so you always know what the numbers belong to. The time boxes start empty, and leaving them empty gives you whole days exactly as before, so the ranges you already use are untouched. See Your Dashboard.
-
Dashboard stats now reflect only messages sent while connected; imported chat history no longer skews the numbers. Connecting WhatsApp Web or Telegram and bringing your existing conversations in with you used to leave a mark on your reporting. Every imported message was counted on the date it was originally sent, so charts grew spikes on days you hadn’t started yet, and totals included months of chats that had nothing to do with the platform. That history stays in your inbox, so a conversation still reads in full, but it’s now left out of the message counts, the Performance Over Time chart and the per-number stats under Channel Health. There’s nothing to switch on, and there’s no need to re-import anything: the figures correct themselves the next time the Dashboard loads. See Your Dashboard.
-
Refreshing a knowledge source now tells you what it’s about to do, before it does it. A website refresh rebuilds the page’s generated FAQs to match the live site, and a whole-site refresh follows up by consolidating FAQs that cover the same ground across your entire library — including ones you wrote or imported yourself. That’s the point of an AI-optimized knowledge base (near-duplicate answers make the bot’s search worse), but if you maintain your FAQs by hand it could catch you by surprise. Both Refresh buttons now open a confirmation that spells this out first, and the Knowledge Base guide has a new section on deciding whether your website or your FAQ library is the master copy — and exporting your library as a one-click backup before a big refresh. See Before You Refresh.
-
Custom functions on GET now send their parameters, and lists can be locked to one type. A custom function set to GET used to drop every parameter that wasn’t typed
query_param— it passed Run Test and then called your endpoint with nothing attached in a real conversation. A GET function now sends all of its parameters as URL parameters, in both Run Test and the live call, so what you test is what your API receives. Alongside it, an array parameter has a new optional Item type: choose Text, Number, True/false or Object and every value in the list is converted to it before sending, which is what an API that only accepts numbers needs to stop rejecting"8624"where it wanted8624. Leave it on Any and nothing changes. See Custom Functions. -
Try Out now shows the media your AI sends. When your agent sent a Media Library item during a test conversation, all you saw was a “Sent the ‘…’ media” note — no image, no video — which made a perfectly working setup look broken. Now the actual file appears in the test chat exactly where the contact would receive it: images and videos play inline, audio gets a player, and documents show as a file you can open. Still a sandbox — no real message leaves your account. Previews in a test conversation stay viewable for 7 days; after that a small “preview expired” note appears and asking the bot again shows the file fresh. See Media Library.
-
Click a past search in Saved Leads to see just its leads. The Searches list in Saved Leads showed what each search had found, but not which leads those were — they all sat in one big table. Click any search in that list and the table behind it narrows to that search’s leads, with a pill above the filters naming the search; its × or the All filter brings everything back. Find more and CSV on each search work as before. See Find Leads.
-
Broadcasts now stop themselves if they start messaging the wrong people. An opening message is meant for someone you haven’t spoken to yet. If a broadcast or campaign starts sending its opener to people who are already in conversation with you through that same broadcast, sending now pauses on the spot, anything queued behind it is cancelled, and you get a notification saying what was paused and why. Open it, check the audience and the message, and click Resume when it looks right — that confirms it was intended and the guard stands down for that broadcast for 24 hours. A sudden burst far above your account’s usual pace is flagged to our team as well, without pausing you, since a first launch is naturally busier than your history. See Scaling WhatsApp Outreach.
- The classic app has been retired. The redesigned dashboard became the default earlier this month; as of today it is the only app. The classic app has been switched off, and the
/oldaddress that led back to it is gone with it. Open an old link or bookmark and you’ll get a short notice pointing you to the current dashboard rather than a dead page — there’s nothing to reinstall and nothing to move, and you sign in at the address you always have. Nothing was lost. Your chats, contacts, AI agents, campaigns and their history, and every setting are all in the current dashboard exactly as you left them; the two apps were the same account underneath the whole time, so this is a door closing, not a migration. The old mobile apps stopped working today as well. If you worked from your phone, open your usual sign-in address in your phone’s browser instead: the dashboard is built for small screens, and it can be added to your home screen and send push notifications, the same as an installed app. See the Welcome guide and Notifications.
-
Signing up now builds your AI agent, start to finish — and no mystery campaign with it. The setup wizard used to create a campaign first and quietly hang everything you answered off it, so you came out of onboarding with a Draft campaign nobody asked for, an agent that was really a side effect of it, and no clear answer to “which of these two things do I edit now?”. It’s the agent the whole way through now. Your agent exists from the moment the wizard reads your website: the pages and files you tick there become its knowledge, and the progress bar you watch is your agent being built rather than something else being built on its behalf. Test & adjust is the real agent editor dropped into the wizard — the same Try Out, AI Instructions and FAQs & Knowledge tabs you’ll use from the AI Agents page afterwards — so an edit you make there is an edit to your agent, not to a copy that has to be transferred somewhere. The Follow-ups step is the agent’s own Follow-ups tab in the same way. The separate Opening Message step has gone, because an agent hasn’t got one: it answers what comes in, and starting the conversation yourself is what a Broadcast is for. Finishing the wizard wires each channel you connected to that agent as an Entry Point, turns comment-to-DM keywords into comment entry points, and switches the agent Active last of all — so onboarding can no longer end with a launched account whose AI answers nothing, and a channel another agent already answers is left alone rather than taken over. You land in your agent’s editor at the end instead of being dropped somewhere and left to find it. If you were part-way through the wizard when this arrived, resuming keeps you on the flow you started, unchanged. See Guided Onboarding, Quick Start Guide and Entry Points.
-
Search jumps straight to a Settings section. Press ⌘K / Ctrl+K and type “billing”, “team”, “webhooks”, “notifications”, “data export” or any other Settings section, and the result opens that section directly — no more opening Settings and reading down the left-hand list to find where something lives. Sections your plan or role doesn’t include stay out of the results. Suggested by an agency running the dashboard in Polish, whose team knew exactly what they wanted to configure but not which group it was filed under. See Dashboard.
-
The chat widget can be configured over the API. The API reference now documents
PATCH /chat-widget-configs/{configId}, so anything on the widget’s Manage panel — the attachment and emoji buttons, launcher icon, colours, opening message, visitor-info form, allowed domains, theme — can be changed from your own code with your API key. It was already possible; it just wasn’t in the spec, so it looked read-only. See Website Chat Widget. -
Optimize with AI works on every agent. The fastest way to fix a bot is to tell it what to do better and let it rewrite its own instructions — but the Optimize with AI button only turned up on some agents. An agent you had just duplicated, one that arrived in your account already built, and plenty of newer ones simply had no button, and the thumbs-down under a bad reply in Try Out was quiet in the same places, so the two quickest routes to a better bot were missing on exactly the agents most likely to need them. Both work on every agent now, with nothing to set up first. What happens after is unchanged: you describe what should improve, you get the same side-by-side review of every proposed edit — how the field reads now against what the AI wants it to say, with FAQ additions and removals listed separately — and nothing is kept unless you accept it. What you accept is saved as a draft, so the Try Out chat starts using the rewrite immediately while your live conversations carry on as they were, and it goes out to real contacts when you click Publish to live. The Generate AI templates button on an agent’s Follow-ups tab was held back on those same agents, and it writes the set on any of them now. See Chat Playground and AI Agents.
-
A build from your website that can’t finish now tells you why. Pointing New agent at your website is the quickest way to a working bot, and the dialog talks you through it — but a build that couldn’t complete used to be able to stop quietly, leaving you watching a screen that never finished with no idea whether to wait longer or start over. A build that can’t finish now says in plain words what stopped it: your website couldn’t be read, there wasn’t enough text on the pages to write an agent from, or the account has run out of credits. Each one names the thing to change before you try again. Everything else is the same, including Continue in the background. See AI Agents.
-
The list of campaigns on an agent is a list again. An agent’s Attached Campaigns tab carried an Attach a campaign button, left over from the period when campaigns and agents were being brought together. It’s gone, because it isn’t how you put an agent to work any more: what decides which conversations reach an agent is its Entry Points, and a Broadcast picks its own reply handler when you build it. The tab still shows every campaign the agent answers for, and publishing a change to the agent still reaches all of them immediately; it’s simply a view now rather than a control. Nothing about your existing campaigns or which agent answers them changes. See AI Agents.
-
Buying a phone number now works in more countries — the Netherlands included. Some countries only hand out city numbers (an Amsterdam +31 20, for example) to buyers who submit a passport or ID, which we don’t collect — so the buy dialog told you numbers weren’t available there at all, even though the same country happily sells other kinds of numbers with nothing but a name and address. The dialog now checks the country’s other number types by itself and offers whichever one can be bought without identity documents — in the Netherlands that means a mobile number, which is also the kind that receives the WhatsApp verification text. Nothing changes about how you buy: pick the country, pick a number, fill in the short form. The “not available” notice still appears, but only for countries where genuinely no type of number can be sold without ID. See Phone Numbers.
-
An agent’s media belongs to the agent now. The Media tab in the agent editor leaned on a campaign sitting behind the agent, which is why it could open with nothing to work with on an agent that had only just been made, and why a file uploaded to a freshly created copy of an agent didn’t always stay put. Media is part of the agent itself now. The tab loads straight away on any agent — one you made a minute ago, one you duplicated, one that arrived in the account already built — and a file you upload there is available to that agent immediately, with nothing to attach first. Everything you have already uploaded is exactly where you left it, on the same agents, and the account-wide Media Library page is unchanged. See Media Library and AI Agents.
-
Every webhook now tells you which agent handled the conversation. If you feed webhooks into a CRM, an ad platform or a dashboard of your own, working out which AI answered meant guessing: the payload named the campaign, and on accounts that run on agents that field simply arrived empty. The events tied to a conversation — a concluded chat, do-not-disturb, a resume, an unarchive, an AI pause, a new message, a conversation summary, and the webhook you can set on a tag — now carry an
agentblock with the agent’sidandname, ornullwhen no agent was involved. It sits next to thecampaignblock rather than replacing it, so nothing you already receive has changed: a receiver you built last year keeps working untouched and can pick the new field up whenever you get to it. On the API side, the calendar-import call accepts an agent as well as a campaign now. See Webhooks. -
Follow-up messages can be written for you from the agent editor too. Campaigns have always had a Generate AI templates button on their Follow-ups step: turn follow-ups on, click it, and the platform writes the whole set of nudges from your instructions and business context and sends them off for WhatsApp approval. On the new Agents experience that button was missing, so setting up follow-ups on an agent meant writing every message yourself and submitting each one — the one part of the agent editor that still sent you back to a campaign to do properly. It’s there now, on the agent’s Follow-ups tab, and it’s the same thing: the same generation, written from that agent’s own instructions and business context, with the same progress shown as it works through the set. See AI Agents and Automated Follow-Ups.
-
Connecting WhatsApp Web now tells you what happens to your personal chats. Pairing your own phone is the fastest way to start, and plenty of people connect the number they also text friends and family on — but the screen said nothing about what the AI would do with those chats, and the two settings that hold it back only appear once Import existing contacts is switched on, so it was easy to pair a personal number and never see them. The Connect WhatsApp Web screen now carries a short note explaining it: any number is fine, switching on Import existing contacts and leaving Keep AI paused for imported contacts on keeps the AI away from people you already chat with, and Make contacts private goes further by never storing or sending their messages at all. It also spells out the part that surprises people most: someone who messages you after you connect arrives as a brand-new chat with the AI active, so it’s worth leaving your agent switched off until your real contact list is loaded. See WhatsApp Web.
-
A message that fails now tells you why, and what to do about it. When a message didn’t go through, the failure email and the chat both showed whatever the phone network handed back, which was usually nothing at all beyond a number: “Delivery failed (code 63049)”. That is a support ticket, not an explanation. Failures now come with a plain sentence naming the cause and the way out. The most common one by far is WhatsApp refusing a marketing template, and it now says so, including the part that matters: marketing templates can no longer reach numbers in the United States at all, so those contacts need an SMS or an email instead, while elsewhere it is usually a temporary limit on that person and worth trying again later. The same treatment covers a closed 24-hour reply window, a number that isn’t on WhatsApp, someone who opted out of marketing messages, a sender locked for being idle 30 days, and content WhatsApp rejected. You’ll see the explanation in three places: the email we send you, the red line under the message in Chats, and the detail that appears when you hover it. Three of the old explanations were also simply wrong and have been corrected. The worst of them told you a message had failed because the contact’s “phone number is not registered on WhatsApp” when the problem was at your end, with your own number no longer connected as a sender, so the one thing you could actually fix was the one thing it pointed you away from. See Chat Interface.
-
You can reply to a specific message now. In a busy conversation an answer can land three messages after the question it belongs to, and neither you nor the customer can tell what it’s answering. Hover any message, click the arrow beside it and choose Reply: the message you picked sits above the typing box while you write, and your answer arrives quoted against it on the customer’s phone, the way replies look in WhatsApp or Instagram. The quote shows in your inbox too, and while the original is still loaded in the conversation you can click the quote to jump to it. Attachments and voice notes can be replies as well. It works on WhatsApp connected by QR, Telegram, Instagram and Messenger; on channels that have no way to attach a reply to an earlier message the option stays in the menu but greyed out, and tells you why, rather than sending an answer that arrives with nothing attached. On WhatsApp connected by QR you’ll also see the customer’s own quote above their message when they reply to something you sent. See Chat Interface.
-
The emails we send you look like the product again. Every notification, invitation, verification code and receipt went out in a shell that had drifted years behind the app: the wrong brand colour, a plain letter tile where the logo belongs, and a dated layout with tinted warning boxes stapled to it. They now use the same design language as the app you log into — the real logo, the same typeface, the same green, the same buttons, the same card surfaces — and dark mode works properly instead of half-flipping. Notices inside an email (a rejected template’s reason, an invitation, a “you can ignore this”) are now quiet panels with a small label rather than blocks of coloured text. Nothing changed about what the emails say or when they arrive. Two long-standing broken links in the footer were fixed on the way: Help Center went to the marketing homepage instead of the help site, and Privacy led to a page that no longer exists.
-
Comment-to-DM is set up on your AI agent now, on every account. Turning comments on your Instagram and Facebook posts into DMs used to mean digging into a campaign’s Setup & Channels step, where the only choice you had was a keyword — every post was watched, and the reply went out the instant someone commented. It’s an Instagram Comment or Facebook Comment Entry Point on the agent that should answer, and it’s live for everyone: open the agent, go to Entry Points, click New Entry Point and pick the type. You get the things the old screen never had — watch All posts or only the Specific posts whose IDs you paste in, choose whether the First response is written by the AI or is exact text you wrote yourself (a public comment reply and a first DM message, each with variations so repeated replies don’t look copy-pasted, at 0 credits), and set a delay in minutes so the reply doesn’t land suspiciously fast. Anything you already set up on a campaign keeps running untouched, and if your sidebar still shows Campaigns that screen still works — but the Entry Point is the setup to use from here. See Comment-to-DM Automation, Entry Points, Instagram DMs and Facebook Messenger.
-
Comment rules now say which comments they answer. A comment Entry Point on an Agent asked which posts to watch, how long to wait and what to say, and then never asked the obvious question: which comment actually sets it off. There is now a Comment keywords field on Instagram Comment and Facebook Comment rules. Type the word you tell people to comment (“LINK”, “INFO”) and only those comments get a DM. Smart matching covers typos and variations, so one clean keyword is enough. Leave it empty and every comment on the watched posts gets a DM, which is what you want on a post built around a single call to action and expensive on a busy post where most comments are just conversation, so the rule warns you when it’s empty. Your existing comment rules already carry the keywords they were set up with, and the summary in the Entry Points list now shows the keyword next to the posts it watches, instead of only “All posts”. See Entry Points and Comment-to-DM Automation.
-
Alerts about a paused chat now show what the person actually said. When a contact messages you while the AI is paused for them, the notification used to tell you only that a message had arrived and was waiting for a reply. From your phone’s lock screen, that left you no way to tell a “thanks, got it” from a customer about to walk, so every alert meant opening the app to find out. The alert now carries the message itself: the person’s name and the fact that the bot is paused sit in the title, and the message text is the body, with photos, voice notes and documents shown by type along with any caption. The same text is quoted in the email version and under the bell, and clicking any of them opens that conversation ready to reply. See Notifications.
-
Unlink pages from an agent by ticking them. Removing linked pages from an Agent’s FAQs & Knowledge tab came in two sizes: one page at a time with its own remove button, or a whole website or folder with Unlink all. Anything in between — say, eight scattered pages across two sites — meant eight clicks and eight confirmations. Every page row now has a checkbox, and every website and folder header has a select-all that ticks everything inside it (a dash means only some of it is ticked). Tick what should go and a bar appears at the bottom of the screen counting the selection, with one Unlink button and one confirmation for the lot. The per-page remove button and Unlink all still work as before. See AI Agents.
-
Find a linked page among hundreds on an agent. An agent linked to a whole website lists every page it knows in its FAQs & Knowledge tab — useful at twenty pages, unusable at three hundred and thirty-eight, because the only way through was scrolling. There’s now a search box above the Knowledge sources list, on both an Agent and the campaign editor’s equivalent step. It searches all three levels at once — the website, the folders inside it, and the individual pages — so typing part of an address narrows the tree to the matches and opens the folders holding them, with each website reporting how many of its pages matched. Accents don’t get in the way either: “resume” finds “Résumé”. One safety detail: while a search is active, a website’s or folder’s Unlink all becomes Unlink matching and detaches only the pages you can see, so the ones your search filtered out can never be unlinked without you noticing. See AI Agents.
-
The page picker no longer recommends twenty copies of the same page. On a site that publishes every page in each language, a refresh finds the translations of pages you already imported and used to offer them as pages worth adding — one help site turned up 2,343 “new” pages with 190 of them recommended, nearly all language copies of pages already in the knowledge base. Each one would have cost credits and added a near-duplicate answer for your AI to trip over. A discovered page whose address matches one you already have apart from its language part is now marked Optional — language copy of a page you already have and left out of Select recommended; on that same site the recommendation count drops from 190 to nothing on a refresh, and a first-ever import recommends the ten core English pages rather than two hundred. Nothing is blocked — every page is still listed and one click away, and a page that’s worth skipping for a better reason (a changelog, say) still says so. See FAQ Management.
-
The chat widget now speaks Polish, and the parts of it that were always English no longer are. Polish visitors saw an English widget: the language simply wasn’t in the list. It is now, alongside Filipino, which had been added earlier but never written up. The bigger change is that the widget’s own chrome is translated at last — the “Online” status beside your agent’s name, the Sound, Notifications and Clear conversation items behind the settings icon, the “How would you rate this conversation?” prompt and its thank-you, and every small confirmation that pops up along the bottom. All of those were hardcoded English for every visitor, in every language, so a Dutch or Spanish widget was only ever half translated. They now follow the visitor’s language like the rest of it. Your own opening message, popup bubble and starter questions are translated into Polish too, from the next time you save them. See Website Chat Widget.
-
Corners of the dashboard that had stayed English are translated. A handful of screens still showed English to everyone regardless of the language set on the account — the Launcher icon picker in the chat widget’s settings and its upload buttons, the quick-replies section of your profile, the contradiction check on the knowledge base, the On/Off controls in the contacts action bar, the unpublished-changes bar in the campaign and agent editors, and the first-sign-in option on a client account. They now follow your language like everything else, in all 25 languages the dashboard supports.
-
Stop a knowledge-base refresh you didn’t mean to start, and get contradictions checked when one finishes. A refresh could only be waited out: while a site was being re-read, the only thing the page offered was a greyed-out button. Its Refresh button now becomes Cancel — click it and the refresh stops where it is, keeping the pages it already re-read and leaving the rest alone, with no completion email. Once a refresh reaches its final tidy-up pass it can’t be stopped any more, and Cancel says so rather than pretending. Two related fixes came with it: a site being refreshed can no longer be selected or deleted mid-run (its checkboxes and delete are held until it finishes), and a refresh no longer leaves its pages ticked in the selection bar afterwards. And when a refresh finishes, the platform now checks that site’s pages against the rest of your knowledge base by itself — a refreshed page that changed its mind about a price or a limit shows up in Find contradictions without you having to remember to run it. See FAQ Management.
-
The classic app is on its way out, and the sidebar no longer sends you back to it. The Classic app link at the bottom of the sidebar has been removed. Everything it was there for now lives in the new dashboard, and keeping a one-click door open was quietly holding accounts on an app that is being switched off. Nothing about your account changes and nothing is lost — the new dashboard is the same data, the same login and the same address. (The classic app has since been switched off altogether — see “The classic app has been retired” above.) See the Welcome guide.
-
Search, bulk delete and multi-site refresh in the Knowledge Base sources list. A big knowledge base used to mean scrolling: finding one imported page in a 227-page site had no search, removing several pages meant deleting them one trash icon at a time, and refreshing three websites meant three separate clicks and three separate waits. The sources list now has a search box that looks inside every site (type “changelog” and the matching pages surface with an “N of M pages match” count), checkboxes on every page and site for bulk selection, a Delete selected action that states exactly how many pages and FAQs it removes before it runs, and a Refresh selected button that re-scans several whole websites in one click — each site’s newly found pages are then offered one site at a time with the usual worth-adding guidance. While a search is active, a site’s checkbox selects only the pages shown, so searching and deleting can never quietly sweep pages you weren’t looking at. See FAQ Management.
-
The page picker now tells you which discovered pages are worth adding. When you add a website to your knowledge base or a refresh finds new pages, every page in the picker now carries guidance: the most useful pages sort to the top, your core pages (homepage, pricing, products, FAQ) show as Recommended, and pages that rarely belong in a knowledge base — changelogs, legal text, login screens, search results, tag listings — say Skip (suggested) with the reason in plain words. A changelog, for example, is marked as a history page: its entries go stale by design and your current pages already cover the features, so importing it mostly creates contradictions. A Select recommended button ticks the recommended set in one click; it adds to whatever you’ve already ticked, and nothing is ever blocked — every label is advice you can override. Available everywhere pages are picked: the Knowledge Base add-website flow, the domain-refresh window, the new-agent and new-campaign page pickers, and onboarding. See FAQ Management.
-
Rented numbers now finish their WhatsApp setup on their own. Renting a number and connecting it to WhatsApp used to be able to strand in two quiet ways: the purchase never asked for the business name WhatsApp requires (so the registration was rejected on a name nobody chose), and a registration that finished a few minutes late never made it back to the number’s card, which kept saying “Setup not finished” over a working connection. Both are gone. The purchase now asks for your display name up front — the business name people see on WhatsApp — and refuses a bare number, which WhatsApp would have rejected anyway. And a registration that completes after you’ve left the page is now picked up automatically within a few minutes, flipping the card to Active without you doing anything. See Phone Numbers.
-
The setup wizard now rescues a half-finished number purchase. Buying a WhatsApp number charges immediately, but the number can’t message until a short registration step finishes in Meta’s window — and if that window was closed, the wizard used to show a plain “Connect” again with no trace of the number you’d already paid for. The rescue only existed on the Settings Channels page, which someone mid-setup has never seen. Now the wizard’s WhatsApp tile notices a number waiting on that step and leads with Finish setting up, with your number on the button, opening the registration already pointed at it. A quieter link underneath still lets you connect a different number instead. This also fixes the tile sometimes claiming WhatsApp was connected off an earlier half-finished attempt when no number could actually send. See Phone Numbers.
-
Connecting WhatsApp is now two questions instead of four buttons. The WhatsApp Business API card had grown a row of separate actions — buy a number, connect your own, and two different Meta connections — that all turned out to be answers to the same two questions. The card now has one Connect WhatsApp button that asks them in order: which number do you want to use (one you already have, or a new one from us), and how should it be connected (managed by us, through our Meta app, or your own Meta app). Only the combinations that actually work are offered, and the same chooser appears when you connect WhatsApp during onboarding, which previously didn’t offer the Meta connections at all. Nothing about the connections themselves changed — every path lands in the same flow it did before. See WhatsApp Business API.
-
Adding someone to a list now tells you when that will message them. A list can have a live broadcast watching it — that’s Send to new list members, and it’s how a contact added to a list automatically receives an opening message. Useful, but it was silent: filing a contact could spend credits and start a conversation with no hint that it would. Now every way of adding someone says so first and asks you to confirm — the bulk Add to List action, a list’s own Add members screen, and the list toggles on a contact — naming the broadcast that will send. Removing someone from a list sends nothing, so that stays instant. If more than one live broadcast is watching the same list, the new contact gets one opening message from each, charged separately; the warning says how many, and the broadcast’s Audience step now flags that clash when you switch the setting on, links you to the other broadcast, and offers to turn it off there in one click. See Lists & Contacts.
-
Send a WhatsApp template without hunting for the chat first. Reaching a contact outside WhatsApp’s 24-hour window meant finding them in Chats, because that was the only place the template send lived. It’s now on the contact too — both the panel that slides out of the contacts list and the full contact record — alongside Send broadcast, which sends a live broadcast’s opening message to that one person and lets its agent take the replies. See Chat Interface.
-
The template picker has a search box, and it searches the message text. Accounts with generated templates end up with a dozen entries sharing one name, distinguishable only by their wording — so scrolling a name-sorted list was guesswork. The picker now searches both the name and the message body, so typing a phrase from the message finds the right one. It appears once you have more than a handful of templates. See Chat Interface.
-
You can see what a bulk template send costs before you send it. Selecting several chats and sending a template charged per contact and only showed the bill afterwards — and WhatsApp’s price depends on the destination country, so the total isn’t something you can eyeball. The confirm step now shows the estimated credit cost, split by country when your selection spans more than one. Above ten contacts it switches to a Broadcast instead, handing you a draft with those contacts already selected, so a large send goes out with scheduling, batching and reporting rather than all at once. See Chat Interface.
-
Choose who handles the replies when you send a template. A template opens a conversation, but nothing on that screen said who would answer when the contact replied. The send now shows Replies handled by, opening on whoever handles that contact today, and you can change it there. Contacts still running in a campaign keep their campaign’s handler — the screen says so rather than letting you set something that wouldn’t take effect. See Chat Interface.
-
When you’ve paused all AI messages, the app now says so on every page. The Pause all AI messages switch in Settings → Profile is a deliberate, total off-switch — but once you’d left that page, nothing anywhere showed it was on. A paused account looked exactly like a broken one: your bot stayed silent, and the only clue was a setting you had to remember to go and check. That caught people out most often in Try Out, which runs on the same AI and so goes quiet too — the test chat would sit on “Choosing the right words…” and never answer, which reads like a fault rather than a setting. Now, while the AI is paused, an amber AI is paused bar sits at the top of every page with a Resume AI button, so you can switch it back on from wherever you happen to be instead of navigating back to Settings. Try Out shows its own short note above the message box, in place of the endless typing indicator, telling you no reply is coming and why. Nothing about how the switch works has changed — it’s the same total off-switch, just no longer invisible. See Account Settings.
-
Your WhatsApp warm-up now counts the messages you send from the phone itself. A connected number earns a higher daily limit by having busy days, but only messages sent through the platform were counted. If you run the number mostly by hand — answering people in WhatsApp on your phone — those days looked empty, so the warm-up never moved off day one. That mattered more than it sounds: on day one a number is allowed to reply to existing chats but not to start a new conversation, so every first message to a new contact came back as “failed to send”, and no amount of real activity ever changed it. Messages you type on the phone now count toward earning a warm-up day. They still don’t appear in the daily meters, which track only what goes through the platform, and they don’t consume your sending allowance — they just get your number credit for the conversations it’s genuinely having. Numbers that were stuck this way start progressing again on their next busy day, and a brand-new unused number is throttled exactly as before, because it has no activity of either kind. See Scaling WhatsApp Outreach Safely.
-
Find contradictions settles more knowledge conflicts on its own. Two knowledge-base pages that disagreed used to land in your review queue whenever they were equally trustworthy — most often when an old changelog entry argued with the page that documents the feature today. The audit now treats a changelog as history rather than current truth, so the current page simply wins. And when two current pages disagree, it prefers the one whose address is dedicated to the disputed subject: that resolves automatically when the audit’s reviewer independently reached the same answer, and arrives as a one-click recommendation instead of “needs review” otherwise. See FAQ Management.
-
New pages found on a website you’ve already linked now reach your AI automatically. Linking a website to an AI linked the pages that existed at that moment, and nothing after: every page a later refresh discovered landed in your Knowledge Base attached to nothing at all. The AI couldn’t answer from it, and there was no sign anything was missing — you’d only find out from a question it should have known. Pages added to a site are now given to every AI that’s linked to that whole site, so a refresh keeps them in step without you re-linking anything. An AI linked to only a few pages of a site is deliberately left alone — picking a handful of pages isn’t the same as asking for the site — so link the site to it once and it will keep up from then on. See Knowledge Base.
-
Refreshing a website in your Knowledge Base now shows you how far along it is. Refreshing a big site queues every page at once and then works through them in the background, which could take several minutes — but the only sign anything was happening was the Refresh button going grey. There was no way to tell a running refresh from a broken button, so the honest answer to “is it doing anything?” was to watch the FAQ count and guess. The domain now shows a Refreshing 40 of 249 counter beside its name that ticks up as pages are re-read, then Tidying up duplicates… for the final step, and it disappears when the refresh is done. It’s read from the job itself rather than the screen, so leaving the page and coming back picks the count straight back up. See Knowledge Base.
-
Refreshing a website silently skipped the pages added to it most recently. A refresh checked each page against the wrong copy of your knowledge base before re-reading it — one that stopped being updated in July. Any page added after that looked, to that check, like it had been deleted, so it was quietly passed over: not re-read, no error, still sitting in your list as if it were up to date. Every refresh of the site skipped the same pages again, so the newest pages on a site were the ones most likely to be stale, and there was nothing on screen to hint at it. Those pages are now read like any other. This also explains refreshes that appeared to hang: a skipped page never reported back, so the refresh never registered as finished and its completion email never arrived. Long-unfinished refreshes are now closed out too. If you’ve refreshed a site recently, it’s worth running one more refresh so the skipped pages get read.
-
An automation now tells you what’s wrong with it, instead of failing silently at 3am. Three things that all showed up the same way — a workflow that looked fine and did nothing. A required field on a step was decorative: the red asterisk was the whole of it, so a Send message step with no contact filled in saved, switched on, fired and failed in production with nothing on screen to explain it. Required fields are now checked before a run starts and before the Enabled switch will flip, and the message names the step and the field so you know where to look; pausing is never blocked. Second, a value inserted from an earlier step that found nothing used to be sent as an empty string with no trace — the message went out with a hole where the name should be. Those are now listed under Warnings on the run’s detail page, naming each one that came through blank. And third, a step the app actually refused — a duplicate contact, a stage that doesn’t exist, a template that isn’t approved — used to be marked green and let the rest of the workflow carry on with nothing to work from; it’s marked failed now, with the reason it gave. See Automations.
-
You can now fix a typo in a message you already sent. Hover the message, click the arrow beside the bubble and choose Edit message — correct the text, save, and the customer’s copy is corrected too. It carries a small Edited label from then on. Edit only appears where the customer’s copy can genuinely be changed, and that is the point: on the web chat widget (no time limit), WhatsApp connected by QR code (15 minutes, WhatsApp’s own rule) and Telegram (48 hours). It is deliberately absent on WhatsApp Business API, SMS, Instagram, Messenger and Email — quietly rewriting your own copy while the customer keeps the original would leave the two of you reading different conversations, and your AI would go on to answer based on words that were never sent. For the same reason, if the edit can’t reach the customer, nothing changes at all — not even your own copy — and we tell you why. See The Chat Interface.
-
You can delete a message you sent by mistake — and on some channels take it off the customer’s screen too. Until now a message sent by accident was permanent: it sat in the conversation, and the only way out was to send an awkward correction after it. Hover any message, click the arrow beside the bubble and choose Delete message. On the web chat widget, WhatsApp connected by QR code and Telegram, that removes the customer’s copy as well — on the widget it disappears from their screen within seconds even if they have the chat open in front of them. On WhatsApp Business API, SMS, Instagram, Messenger and Email, those providers give businesses no way to unsend, so the message only leaves your inbox — and the confirmation box says which of the two you’re about to do before you click, rather than leaving you to guess. Afterwards a short note confirms what actually happened. Deleting is not undoable, everyone on your team sees the message as deleted, and it works on messages the customer sent you too (from your inbox only, naturally). See The Chat Interface.
-
On a phone, the return key writes a new line instead of sending your half-typed message. Typing a two-line reply on a phone was impossible: a phone keyboard has no Shift + Enter, so reaching for a second line sent whatever you had so far straight to the customer. On phones and tablets, return now does what it says and the send button is the only way to send — and the keyboard’s own key is labelled accordingly rather than promising to send. On a computer nothing changes: Enter sends and Shift + Enter starts a new line. Anyone typing in Japanese, Chinese or Korean also gets a fix for free — pressing Enter to pick a suggested word no longer fires the message off mid-sentence. See The Chat Interface.
-
Your AI can no longer quietly take a tag back off a contact, and a tag webhook only fires when a tag is applied. Two things went together here. Your tag rules describe when a tag should be applied, and the AI had started reading the reverse into them — dropping a tag from a contact whose conversation had simply moved on, which in one case took the Deposit Requested tag off someone who had already paid and was on her way in. Because a tag’s webhook fired on removal as well as on apply, the automation behind that tag ran a second time, for a step the contact was long past. Tag webhooks now fire only when a tag is applied; a removal never calls your URL. (If a tag is applied and another removed in the same moment, and both point at the same URL, the removal still rides along in
removed_tags— what can’t happen any more is a call caused by a removal on its own.) And removal itself is now something you switch on per tag: open your AI Agent’s (or campaign’s) Tags step and you’ll find Let the AI remove this tag under each tag’s webhook field, off unless you turn it on. Leave it off and the tag is apply-only — the AI can put it on and will never take it off. Turn it on for tags whose rule says when the tag stops being true (“Apply while payment is overdue; remove once they’ve paid”), or for sets where a contact should only ever carry one, like day-of-the-month tags. If you were relying on the AI removing a tag, turn the switch on for it — it starts off for every existing tag. Nothing already on your contacts was changed. See Using Tags to Label Contacts and Webhooks. -
You can see what a send costs without asking, and a WhatsApp payment problem is caught before the send instead of during it. The cost estimate on a broadcast’s Review step and a campaign’s Launch step used to sit behind an Estimate cost button, so the number most people wanted was the one thing they had to go looking for. It now loads by itself as soon as you get there, and refreshes when you change the audience or the message. It also tells the truth about who charges you: if your WhatsApp runs on your own WhatsApp Business Account, those message fees are billed by Meta straight to that account and never touch your credits — so instead of a credit total you now see the contact count and the country split, with a note saying exactly that. And when Meta reports a payment problem on that account, a broadcast or campaign no longer launches into a wall: it stops before anything goes out and tells you to add a payment method in Meta’s WhatsApp Manager, rather than failing message by message and spending your list’s first impression on nothing. There is also a new page explaining who bills you for WhatsApp on each kind of connection, and what changes when Meta starts charging for replies inside the 24-hour window on 1 October 2026. See WhatsApp Costs & the October 2026 Change and Broadcasts.
-
A YouTube link in a conversation now plays where it sits. When a video link is sent or received, the chat already showed a preview card with the thumbnail and title — but the only thing you could do with it was leave: clicking anywhere on the card opened YouTube in a new tab, and coming back meant finding your place in the thread again. Press the play button and the video now plays inside the conversation, at the same size as the card. The title underneath is still a link out to YouTube for the real page, comments and all, and it opens in a new tab as before. Two smaller things came along with it: the card fills the width of the message instead of leaving an empty strip down its right side, and the play button is actually visible on a bright thumbnail. See The Chat Interface.
-
Notifications about the same person now clear together. One conversation can raise several alerts — a message arriving while the bot is paused, the AI asking for a human, a read receipt — and each one landed under the bell as its own line to tick off. Three messages from one contact meant three notifications, and clearing them one by one after you’d already read the conversation. They’re treated as one thing to read now: click any one of them and the rest of that contact’s alerts are marked read too, and simply opening that contact’s chat clears all of them — no clicking through the bell at all. Any browser push notifications still on screen for that person are dismissed at the same time, so your phone’s lock screen doesn’t keep showing messages you’ve replied to. Alerts about anything else are untouched, and nothing is deleted — cleared notifications stay in the list, just marked read. See Notifications.
Fixed
-
Tasks stopped disappearing into “Unassigned” after editing your statuses. If your status names were written in a language that doesn’t use the Latin alphabet — Chinese, Japanese, Korean, Arabic, Hebrew, Thai, Greek, Russian — the board gave those statuses an internal name it then changed every time you clicked Apply changes. The tasks still pointed at the old one, so they dropped out of their columns into a grey Unassigned column at the end of the board, and it looked like the board had eaten them. Statuses now keep the same internal name for good, so editing them leaves every task exactly where it was. Nothing was ever lost: tasks that ended up in Unassigned can be dragged straight back onto a real column.
-
A second Done status now behaves like the first. With more than one Done status, only tasks in the first one were treated as finished: a task in the second kept its title un-crossed, still offered Mark complete, and taking it moved the task out of that status and into the first — so a “Deal closed” task quietly became a plain “Completed” one. Every Done status now counts as finished on its own, and where a task can be completed each Done status is listed by name so you pick the one you mean. See Task Stages.
-
“Is not” now works in the Filter panel, and Type has a “None” option. Every filter rule has an Is / Is not switch, but clicking Is not closed the whole Filter panel instead of switching the rule — on Tasks, Deals and the FAQ list alike — so there was no way to build an “everything except this” filter. It switches properly now, and both choices sit side by side so you can see at a glance which one a rule is on. The Tasks Type filter also gained a None option, which lists the tasks with no type on them, including the ones that lost their label when you deleted the type they were on. In the Table view those tasks used to show the deleted type’s internal name in the Type column; the cell is empty now, matching the board and the list. See Views and Filtering.
-
The AI no longer says you are fully booked on a day you are closed. A day with no opening hours looked exactly like a day whose every slot was taken, so a contact asking for a Saturday at a business that opens Monday to Friday was told there were no times left, and went away expecting to try again later. The AI now tells the two apart: a day you never open is answered as closed, together with the days you do open and the next open day it can offer. “Fully booked” is now only used when the day really does have hours, still has time left in it, and every slot is taken. A day that has run out of time is answered as over instead: ask at 4:15 PM for an hour-long appointment that has to finish by 5:00 PM and the AI tells you today is done rather than booked out. The same care applies when your minimum notice rules a day out, and when an event type has no appointment length or no hours set at all, neither of which is a full calendar. The same goes for a single person or room: ask for a specific staff member on a day they do not work and the AI says that person is off that day, then offers to check the others. Restaurant bookings through Formitable get the same treatment: a date the restaurant is not taking bookings for is no longer reported to the guest as fully booked. See How slots are offered.
-
Closing a settings dialog by accident no longer throws away what you filled in. Clicking outside a dialog closed it on the spot, which made one particular click expensive: you switch to another app or another screen, come back, click to bring the app back into focus, and if that click lands next to an open dialog, everything you had filled in is gone. Settings and configuration dialogs now ask first whenever you have changed something in them — Discard your changes?, with Keep editing to go back to the form with everything still in it. Typing, switches and dropdown choices all count as a change. That first click after switching back no longer closes those dialogs at all, and neither does selecting text inside one and letting go of the mouse outside it. A dialog you haven’t touched has nothing to lose, so it still closes on the first click outside, and the X and Cancel buttons still close straight away. Thanks for the report.
-
WhatsApp replies from Mexican, Brazilian and Argentinian numbers no longer create a second contact. WhatsApp still reports some senders under an older spelling of their number: Mexican mobiles with the legacy
1after the country code (+521…instead of+52…), Brazilian mobiles without the ninth digit, and Argentinian mobiles without the9. If you had saved or imported the contact under the modern spelling and they replied from the older one (or the other way round), the reply landed in a brand-new, nameless contact next to the one you already had. The visible damage: broadcast reply counts stayed at 0% even though people were answering, the low-engagement safety pause could kick in on a broadcast that was actually doing fine, and the AI greeted the same person twice because the new contact had no history. Inbound matching on WhatsApp Business and WhatsApp Web (and the contact lookups in the API, includingGET /contacts?phoneNumber=and the duplicate check onPOST /contacts) now treat both spellings as the same person. The number saved on your contact is left exactly as you entered it. The same rule now runs everywhere a number identifies a person or a channel: CSV and API imports (a row in the other spelling updates or skips the existing contact instead of creating a twin, and Mexican numbers written with the 1 now import instead of being rejected as invalid), template sends by phone number, lead forms, booking pages, calendar imports, and connecting a number that is already connected under the other spelling. Existing duplicate pairs on affected accounts have been merged. Reported by two partners the same day, thanks. -
The automations “Create contact” step no longer fails when the person already exists. It used to error the whole run the second time the same number came through (for example on an automation that fires on every inbound message), and a number saved under the other WhatsApp spelling could slip past as a duplicate. The step now checks the number first: if the contact is already on the account, it returns that contact (with a note in the run log) and every later step gets the existing contact ID as usual; only a genuinely new number creates a contact. See Automations.
-
Mini agents no longer pay the Max rate for the AI work around a conversation. On an Agent set to Mini, the replies themselves billed at Mini’s 0.15 credits, but three companion actions inside the same conversation — interruption handling (when a contact sends a new message while the bot is still composing), chat summaries and AI auto-tagging — were still charged at the 0.25 Max rate. All three now bill at the Mini rate on Mini agents. One-off features outside the conversation (campaign optimization, knowledge-base generation, tagging through the API) keep their flat 0.25 rate on both Max and Mini — see AI Model & BYOK for exactly what the Mini rate covers. Reported by a partner, thanks — accounts affected by the interruption-handling charges have been refunded the difference.
-
A small edit at the top of a page no longer costs that page most of its FAQs on refresh. When a website source was refreshed, a change in the first stretch of a page — a rotating headline, a banner, an updated intro — could remove the FAQs generated from the whole page while rebuilding only the changed part, quietly shrinking the page’s knowledge with every refresh. And a change further down the page did the opposite: it added fresh FAQs without retiring the outdated ones. A refresh now rebuilds exactly the parts it removes, so the page’s FAQ coverage matches what your site says — no more, no less. Reported by a member of our community, thanks. See Refreshing a Source.
-
Custom Function list (“array”) parameters now reach your API as real lists. A parameter typed array was sent to your endpoint as one long piece of text — so an API expecting
{"project_ids": [8624]}received{"project_ids": "[8624]"}and rejected the call with errors like “must be an array”, both from the Run Test panel and when the AI called the function in a live conversation. Array (and object, number, true/false) values are now converted to their declared type before the request is sent, however you type them in Run Test ([8624],8624, or comma-separated), and Run Test now builds the request exactly the way a live AI call does, so a passing test means a working function. The AI is also given clearer instructions so it sends real lists in the first place. Reported by a customer the same day, thanks. See Custom Functions.
-
An event type’s own time zone now applies everywhere the AI reasons about time. If an event type has a time zone that differs from your account’s, the AI is now told the current time and the event’s closing date in that event’s zone, so “tomorrow morning” and “the last day you can book” line up with the times it actually offers. Accounts whose event types follow the account time zone are unaffected. See Booking System.
-
Team members no longer see the account owner’s details as their own. A team member works inside the owner’s account, and until now the dashboard showed them the owner’s identity in a few places: the email at the bottom of the left sidebar, the name and email on Settings → Profile (which they could also edit, renaming the owner or replacing the owner’s photo), and the owner’s sign-in email, password, two-factor and delete-account controls on Settings → Security. That was confusing — it looked like they were logged into someone else’s account — and it exposed the owner’s login settings to anyone with Settings access. Now the sidebar and Profile show the member’s own email and name (Profile read-only, with a note that the rest of the page is the owner’s workspace settings), and Security only shows the workspace session and privacy preferences to team members. The Working in label at the top of the sidebar still names the account they’re working in, as before. Nothing changes for account owners. See Team Management.
-
A failed webhook test now tells you why. Clicking Test on a webhook whose endpoint rejected the request (a 403 from a firewall, a 404, a timeout) came back as a bare “Internal server error”, which made it look like the problem was on our side when it was the endpoint’s answer. The test now shows the endpoint’s actual response, calls out a Cloudflare bot challenge specifically (the most common cause, and one only you can fix in your Cloudflare zone), and a test on a saved webhook is now sent signed when signing is on, so a receiver that verifies signatures no longer fails a test it would pass in real life. See Webhooks.
-
An MCP server connection no longer breaks itself when the AI uses several tools at once. Some MCP servers hand out a fresh sign-in every time the connection renews itself, and treat the old sign-in being used again as a security threat — they cut the whole connection off. When your AI called two of a server’s tools in the same moment, both tried to renew at once, and the server did exactly that: the connection died mid-conversation, the MCP Servers page kept showing it as healthy, and the AI told your contact it was a temporary technical issue. Renewals are now coordinated so a busy conversation can’t trip this. And when a connection genuinely is revoked — by this, or by someone withdrawing access on the other system’s side — the MCP Servers page now shows it as needing authorization with a clear message, and the AI knows the difference between “temporarily unreachable” and “needs to be reconnected”. One click on Connect signs you back in. See Connect MCP Servers to Your Bot.
-
The edit and delete buttons on appointment rows no longer hide until you hover. On the Appointments page, the pencil and trash icons at the end of each row — on upcoming appointments and on event types alike — only appeared while your mouse was over the row. On a phone or tablet there is no hover, so the buttons were effectively invisible and editing an event type could look impossible. The icons now show on every row all the time (they simply brighten when you point at them), and clicking anywhere on an event type’s row still opens it for editing, as it always did. See Booking System.
-
A message your customer unsends no longer vanishes from the conversation. On Instagram and Messenger, when a customer unsent a message it was removed from your inbox entirely — so if your AI had already replied, the conversation was left showing answers to questions that were no longer there, which could look like the AI messaging people out of nowhere. An unsent message now stays in the thread as This message was deleted, the same way it already worked on WhatsApp connected by QR code, so the back-and-forth still reads in the right order. See The Chat Interface.
-
A good handoff no longer arrives labeled “What went wrong.” When your AI hands a conversation over to you, it’s often good news — a lead is qualified and it’s your turn, exactly as you instructed it. But the email telling you about the handoff showed the AI’s reason under a red “What went wrong” tag, so a handoff that went exactly right still read like a failure. The reason now sits under a calmer amber “Heads up” tag instead. Everything else about the alert is unchanged: the reason, the account and channel details, and the button to open the chat. See Notifications.
-
Test In Playground brings the conversation with it again. Choosing Test In Playground on a live chat is meant to drop you into the agent’s Try Out thread with that conversation copied across, so you can replay the exact exchange that went wrong. On accounts using the new Agents experience it was landing you in Try Out with an empty thread — the copy quietly went to a place the test chat no longer reads. The conversation now arrives with you, and testing picks up from the real message history. See Chat Playground.
-
Accepting an agent’s suggested FAQ changes after Optimize with AI works everywhere. When Optimize with AI proposed FAQ additions or removals on an agent, the review screen listed them — but accepting them did nothing on some accounts, so the instruction edits landed while the FAQ half of the same optimization silently didn’t. Accepted FAQ changes are now applied to the agent’s knowledge exactly as the review screen shows them, and rejecting them clears the suggestion instead of leaving it pending. See Chat Playground.
- The test chat now belongs to the agent you’re testing — and two odd things about it are fixed. Try Out looks and behaves exactly as it did, but the conversation is the agent’s own rather than something borrowed from behind it, and that clears up two things people ran into. Duplicating an agent used to leave the copy and the original sharing a single test conversation, so a message you sent while trying out the copy appeared in the original’s thread and the two sets of testing tangled together; each agent has its own thread now. And the test chat could occasionally stick on the typing indicator and never produce a reply, which is fixed. One honest note before you open it: your previous test conversation may look empty. The thread starts fresh rather than carrying over, so send your test message again to pick up where you were. Nothing else is affected — your instructions, knowledge, media and settings are untouched, and optimizing an agent from a thumbs-down you gave on an earlier reply still works exactly as before. See Chat Playground.
-
Chat widget code pointed at an agent reaches that agent again. If you took an embed snippet from an agent some time ago and pasted it into your website, new conversations arriving through it could come in without being properly connected to the agent you picked — so an agent that looked correctly wired up on screen wasn’t reliably the one handling those chats. Conversations from those older snippets land on the intended agent again. There’s nothing to re-copy and nothing to re-paste: the code already on your site starts behaving correctly on its own. See Website Chat Widget.
-
Notifications about your AI open the agent, instead of a page you don’t have. The email, browser push and bell alerts that tell you a batch was paused, or that an AI-written setup is ready for you or was turned down, all linked to a Campaigns page — which accounts on the agents experience don’t have, so clicking through left you looking at nothing useful. Those links open the agent’s editor now. Accounts that still run campaigns keep the links they always had. See Notifications.
-
An automation now runs on a contact’s very first message, not their second. On accounts using the Agents experience, an automation narrowed to a particular campaign or agent skipped the opening message of every brand-new contact — it only started paying attention from that person’s second message onward. That is precisely the wrong message to miss: the first thing somebody ever writes to you is the one worth tagging, routing or alerting a human about, and a workflow built to catch it looked like it was working right up until you checked. It fires from message one now, for new and existing contacts alike. Nothing to change in your automations; the ones you already built start behaving this way on their own. See Automations.
-
Agents apply your appointment-booking setup in every conversation. Some of the booking guidance that shapes how an agent handles a contact it doesn’t know yet — how to ask, what to confirm, what to offer — was reaching some agent conversations and not others. It showed up as an agent that offered times neatly in one chat and improvised in the next, with nothing different between the two to explain it. Agents now apply that guidance consistently, in every conversation they handle. There’s nothing to switch on and nothing to re-enter; your booking setup is unchanged. See Booking System.
-
Suggested replies use your custom functions again. The AI reply suggestions that write a draft for you in Chats were ignoring the custom functions and connected tools on accounts using the Agents experience — so a draft that should have looked up an order, checked stock or pulled a balance from your own systems was written without any of it, and read like a polite guess. Suggestions now use the same abilities your agent uses. Live replies were never affected: your agent’s own answers to customers have always called those functions. See Custom Functions.
-
Resume + Follow-up now actually schedules the follow-up on Agent chats. Resuming the AI on a chat is meant to line up a catch-up follow-up by default: the AI reads the conversation, picks a sensible delay, and nudges the contact if they stay quiet. On chats handled by an AI Agent — which is most chats today — that second half silently never happened: the AI came back on, but no follow-up was ever scheduled, no matter how many times you pressed Resume AI. It didn’t matter whether you resumed from the banner, the composer, the chat header, or the bulk bar. The catch-up follow-up now schedules from your Agent’s own follow-up settings, exactly as it always did on campaign chats — and Just resume (hold the button) still skips it on purpose. Chats you resumed before this fix simply have nothing queued: resume them again, or use Schedule follow-up, to line one up. See Chat Interface.
-
Duplicating an agent no longer rebuilds it from your website — or quietly changes its settings. Duplicating an agent is supposed to give you an identical copy to experiment on. Instead, if the original had ever been built from a website, the copy went off and rebuilt itself from that website all over again: its instructions were rewritten, several settings — including the AI quality it answers with and its follow-up setup — were dropped in the process, and you got an email about a “campaign” being generated that you never asked for. The copy now is what it says: an exact duplicate of the original at the moment you clicked, with nothing rebuilt and nothing lost. And when an agent genuinely is being built — from the New agent dialog — the email you receive now talks about your agent, names it, and links straight to its editor. See AI Agents.
-
Automations aimed at one campaign work again on accounts that use Agents. An automation whose trigger was narrowed to a specific campaign stopped firing entirely once an account moved to the Agents experience — the conversations still happened, the automation just never noticed them. The opposite was quietly wrong too: in some cases such an automation could fire for conversations that had nothing to do with the chosen campaign. Both are fixed: a campaign-narrowed trigger now fires exactly for the conversations belonging to that campaign’s agent, and for nothing else. See Automations.
-
Agent statistics now count every conversation. The sent and replied numbers on your agents (and the campaign statistics behind them) were only counting a slice of the traffic on accounts using the Agents experience — most conversations were simply missing from the totals, which made reply rates look wrong in both directions. Every conversation an agent handles is now counted, and the numbers on the agents list agree with the ones on the dashboard.
-
Your usage history names the agent, not a code. Rows in the Billing usage history were showing an internal code (starting with “agent:”) where the name of the agent should be, and the “Contact Tag” rows had the same problem for everyone. Usage rows now carry the agent’s actual name. See Billing System.
-
Conversations that stall mid-reply are noticed and recovered again. A safety net watches for chats where the AI started to answer and then got stuck, and quietly restarts them — and a similar one resumes chats that paused when credits ran out, once credits are back. Neither of these could see conversations on accounts using the Agents experience, so a stalled chat there simply stayed silent. Both now cover every account.
-
A scheduled follow-up now says something about the actual conversation. If you asked for a follow-up without dictating the exact words — “reply now”, “check in next week” — you got a generic line like “Hi, just following up on our previous conversation.” It read as filler because it was: the message was written the moment you scheduled it, by a step that could see your instruction and nothing else. Not the chat, not your Agent’s personality, not your instructions. The same sentence went out across unrelated accounts, and a contact who had just asked about pricing or a demo got it in place of an answer. Now, when you don’t dictate the wording, the message is written by that contact’s own AI Agent at the moment it sends — reading the conversation as it stands then, in the language the contact is writing in, following everything you’ve set up. If you do give the exact words, they’re still sent word for word, untouched. One knock-on: the preview for a follow-up you didn’t write yourself now says the AI will write it at send time, rather than showing a placeholder that was never going to be sent. See Chat Interface.
-
A failed message now tells you why, right in the chat. When a message couldn’t be delivered, the email you received named the actual reason — but hovering the message in Chats only said “The provider rejected this message”, which left you opening your inbox to find out what the chat could have told you. The hover now gives the same plain-words explanation for the common WhatsApp failures — the 24-hour reply window closing, Meta blocking a marketing template to US numbers, a contact who opted out, a number that isn’t on WhatsApp — along with the provider’s error code for anything rarer. The little panel also now appears next to the message’s timestamp instead of floating oddly far to the left under long messages. See The Chat Interface.
-
Connecting WhatsApp Web no longer spins forever on a connection that already worked. People pairing a number were left watching a loading spinner that never finished — one report ran past twenty minutes — and then discovered, on closing the window, that the number had connected fine and was already receiving messages. The window only ever recognised a handful of outcomes, so anything else, including a phone whose link had been revoked and needed a fresh scan, left it waiting silently with nothing to click. Pairing is now bounded: whatever happens, the window either finishes or tells you it has been waiting too long and offers Retry, along with a note to close it and check your channel list because the number may already be connected. Waiting for you to scan the QR code is untouched — that can take as long as you like. See WhatsApp Web.
-
Expired team invitations can be deleted again. An invitation that ran past its 7-day life stayed on the Team page with a delete button that did nothing every time you clicked it, so the row could never be cleared — the only way to tidy the list was to resend an invitation you didn’t want to send. Deleting an expired invitation now works exactly like deleting a pending one. See Team Management.
-
Changing a first or last name now actually changes the name you see. Editing First name and Last name under Settings → Profile saved correctly, and then nothing on screen changed — the old name stayed in the menu, in the account switcher and at the bottom of messages your team sends, and it survived refreshing the page and even signing out and back in. Behind that, an account was carrying an older copy of its name from the day it was created, and the app was showing that copy instead of the name you had just typed. Names everywhere now come from the First and Last name on the account, so a rename shows up straight away, on every screen, with nothing to re-enter. If both name fields are empty, screens fall back to the account’s email address as before. See Account Settings.
-
On a phone, you can see who you’re talking to again. The header above an open conversation had grown to seven controls sitting beside the contact’s name — a back arrow, the photo, pin, star, create-task, search and the three-dot menu — and on a phone screen there was nothing left for the name itself, which shrank away to nothing on a busy chat. The header now keeps the name, the search icon and the three-dot menu on small screens, and moves pin, star and create task to the top of that menu, where they’re one tap away. Status pills fold up the same way: the most important one stays visible and the rest collapse into a small +2, which names what it’s hiding when you press and hold it. On a computer nothing moves — every control is still exactly where it was. See The Chat Interface.
-
Lifetime plans are no longer shown monthly subscriptions to buy. The Billing page offered the three monthly plans to every account, including accounts on a lifetime tier that already owns its plan outright — so the one page meant to confirm what you’d paid for instead read as an invitation to start paying again. Those cards are now hidden on a lifetime plan; tier changes for those accounts happen where the plan was bought. Credit top-ups, auto-recharge, usage history and What’s included in your plan are all unchanged, and accounts on a monthly plan still see the full set. See Subscription Tiers.
-
YouTube links now arrive with a real preview — and your chat thread shows it too. A message with a YouTube link reached the contact as a blank card: no video title, no thumbnail, just the word “YouTube” over a line of generic text, sometimes in a language nobody in the conversation speaks. The reason is that a link’s preview is built by whoever sends the message, and YouTube no longer hands the video’s details to anything that isn’t a person clicking — so there was nothing to put on the card. The video’s real title, channel name and thumbnail are now attached before the message leaves, so contacts get the same rich preview they’d see if you’d sent the link from your phone. Your own conversation view shows the card as well, above the message text, on their messages and yours — click it to open the video. The message itself is untouched: the link stays exactly as you typed it, and links to other sites are unaffected. See Chat Interface.
-
You can test a tag’s webhook from your Agent again — and the test now sends what the real thing sends. Setting a webhook URL on a tag in an Agent’s Tags tab left you with no way to check it: the Test button next to the field existed only in the campaign editor, and accounts moved to Agents don’t have a Campaigns menu to reach it from. So the only way to try a URL before trusting it was to sign in to the classic app. The button is now on the Agent’s Tags tab too: save the tag, click Test, and a sample payload goes to your URL immediately — with the reason shown if your endpoint refuses it, and no effect on the automatic pause that protects a repeatedly failing webhook. The test payload has been corrected as well, on both the Agent and the campaign side: it used to invent an event name and shape (
tag_triggered, with a singletagvalue) that live deliveries never use, so an automation built and verified against a test would sit silent forever. Tests now send the exactcontact_tags_updatedshape —added_tagsandremoved_tagsarrays and the full contact — that a real tag change sends. If you built a workflow against the old test payload, point it at the fields shown in Webhooks and it will start seeing real events. See Creating Tags. -
Tag webhooks now fire on accounts using the new Agents experience. Setting a webhook URL on a tag is how you report a funnel outcome — “Deal Won” lands on a contact, your endpoint hears about it, your ad platform or CRM records the conversion. On accounts moved to Agents, that never happened: the URL you saved in the agent’s Tags tab was written in one place and read from another, and contacts on those accounts aren’t attached to a campaign, which the sender also insisted on. Nothing failed visibly — the tag was applied, the webhook simply never left. Both halves are fixed: the tag’s URL is now read from the agent as well as the campaign, and a contact with an agent no longer needs a campaign for the webhook to send. Accounts on Campaigns are unaffected, and where both are configured the campaign’s URLs still win. See Webhooks.
-
Every webhook now carries the ID you dedupe on, and test deliveries no longer teach the wrong event name. Two things made building a reliable receiver harder than it should have been. The
X-Webhook-Deliveryheader — the unique ID for one event, documented as the way to recognise a repeat — was only being sent on some events, so a receiver that deduped correctly on those silently double-counted the rest; it’s now on every delivery. And the Test button sent six events under a different name than the real thing (chatConcludedwhere the live event sayschat_concluded, and the same for the contact paused, resumed, unarchived, do-not-disturb and new-message events), so a receiver built and verified against a test would ignore every real event of that type. Test payloads now match live deliveries exactly, including thead_referralfield. The full list of event names is in the Webhooks guide. -
Ad click IDs can now be read back through the API. The Click-to-WhatsApp click identifier (
ctwa_clidand the rest of the ad referral) was only ever delivered by webhook — so if your receiver was down when a lead arrived, the ID was gone for good and the conversion could never be reported. Contacts returned by the API now include it, both on a single contact and on the contacts list, so you can reconcile after an outage instead of losing the attribution. See Click-to-WhatsApp Attribution. -
Buying a number in a country where you’re already approved no longer fails. Regulatory compliance is approved for one country and one type of number, but the purchase was only matching on the country — so an account approved for, say, a UK toll-free number had that approval attached to a UK mobile purchase, which the carrier rejects. The error then told you to complete compliance you had already completed, and submitting the right form afterwards didn’t reliably help. Purchases now use the approval that matches the number you’re buying, an approval for a different type no longer blocks anything, and if the carrier does turn a number down the message names which types you’re approved for. See Phone Numbers.
-
Switching to the classic app is no longer a one-way door. Clicking Classic app at the bottom of the sidebar remembers your choice for 90 days — which was working a little too well: signing out of the classic app dropped you back on the classic sign-in screen, and nothing in that app offered a way back, so the only escape was clearing the site’s data in your browser settings. Two changes fix it. The classic app’s sidebar now has a New dashboard link that brings you straight back, and signing out of the classic app returns you to the current sign-in screen instead of pinning you to the old one. (The classic app has since been switched off altogether, so there is nothing left to switch between — see “The classic app has been retired” above.) See the Welcome guide.
-
A Find Leads search that finds nothing now tells you why, instead of just saying “0 businesses found”. If your filters removed every result, the page said nothing was found, which reads as “there are no businesses like this here” and sends you off doubting the market or your keyword. It wasn’t always true: a search could pull in 60 real businesses and then discard all of them because of a filter you’d set. The most common culprit is Category contains, which matches Google’s own category name for a business (things like “Beauty Salon” or “Air Conditioning Contractor”) rather than the business name, so natural wording like “aircon service” or “esthetician” can match nothing at all. A minimum rating of 5 is the other one: it keeps only businesses with a flawless score. The empty page now says how many businesses were found, names the filters that removed them and how many each one took out, and offers a Clear filters button so you can search again in one click. The Category contains field also explains what it matches. Worth knowing: your filters carry over from one search to the next, so a value you set for an earlier search is still applied to the next one until you change or clear it. Nothing is charged for a search that returns no leads.
-
A phone number you bought can now be connected to WhatsApp at any time, not just in the minute after you buy it. Buying a number is only the first half — it has to be registered with WhatsApp in Meta’s own window before it can send or receive anything. That window opened once, right after the purchase, and if you closed it or bought the number from Settings rather than during setup, there was no way back to it: the number sat on your Channels page looking connected, quietly unable to message anyone, while still costing its monthly fee. Now the row says Setup not finished and carries a Finish setup button that reopens the WhatsApp window pointed at that exact number, as many times as you need. Buying a number from Settings also walks you into the step automatically, the way it always did during first-time setup. If you have a number in this state, open Settings → Channels and click Finish setup on it. See Phone Numbers.
- The AI now shares the real page a fact came from — and can no longer make up a link. Knowledge imported from your website always remembered which page each answer came from, but the AI itself was never shown those page addresses. So when a customer asked to actually see something — a product range, a pricing page — the AI knew the thing existed but had no link to give, and in rare cases it would invent a plausible-looking web address instead. Both halves are fixed: every piece of website-sourced knowledge now carries its page address into the conversation, so the AI links customers to the exact page on your site, and a strict rule now forbids it from ever constructing or guessing a link — if it doesn’t have a real one, it says so. Nothing to set up; if your knowledge base was built from your website, your AI is already sharing real links. See FAQ Management.
-
Deleting a message in a test conversation now takes the AI’s answer with it. The trash icon on one of your own test messages used to remove just that one bubble, leaving the AI’s reply to it sitting in the thread — an answer to a question that was no longer there. Besides looking odd, that leftover reply stayed part of the conversation the AI remembers, so it could quietly steer later test replies. Deleting your message now also removes the AI’s response to it, up to your next message. The pencil (edit) and restart icons work as before, rewinding everything after the message. See Test your agent in the Playground.
-
An AI Agent Function saved while you typed could multiply into duplicates — and silence the agent. Saving happens automatically as you edit, and a fault in how the builder checked for the function it had already registered meant each autosave could register the ability again instead of updating it — filling your Custom Functions page with copies and, once two copies with the same name reached an agent, stopping that agent from replying at all (its try-out chat included). The duplicate registrations are cleaned up, the check reads the right records now, and two extra guards went in behind it: the builder removes any stray copies it finds on every save, and an agent that somehow ends up with two same-named abilities keeps the first and ignores the rest instead of going quiet. See Automations.
-
Accounts fully moved over to AI Agents no longer see “Extract from campaign”. That button exists for one job: pulling the bot out of a classic campaign so it can become a reusable Agent. On an account that has already made the move to Agents, the old campaigns aren’t doing anything anymore — so the button was a door to nowhere useful, sitting next to New agent on the AI Agents page and inside its create dialog. It’s gone on moved-over accounts now, everywhere it appeared. Accounts still running classic campaigns keep it exactly as before, since for them it’s still the quickest way to turn an existing bot into an Agent. See AI Agents.
-
The automation builder’s add-step picker now drags, searches everywhere, and the canvas behaves. A round of polish on building automations by hand. The + on a step now pulls: grab it and a connection line follows your pointer — release it on empty canvas and the step picker opens right there, with the step you pick created at that exact spot, already wired up. Dragging from a step’s output dot (including a condition’s true/false) works the same way, clicking the + still opens the picker in place, and you can also drag any item straight out of the picker onto the canvas. Its search box used to quietly look through only the tab you were on, so typing “sheets” while on the Logic tab found nothing; it now searches built-in actions, your connected apps and logic steps all at once, grouped by kind. An app step you hadn’t picked an action for yet showed a line of internal code text on the canvas (“composioToolkits.acti…”) — it now says Choose an action… until you pick one. Dropping your first trigger no longer zooms the canvas all the way in on it, and adding the next step with a card’s + button places it to the right, following the flow, instead of stacking it underneath. The buttons, tabs and the Simple/Advanced switch around the builder also got the same glass look as the rest of the app. See Automations.
-
You can type a reply yourself on Email, LINE and iMessage conversations again. Your AI has always been able to answer these conversations on its own, but when you stepped in and typed a reply by hand in Chats, the message wouldn’t go: you’d get “Couldn’t send your message. Please try again.” and nothing was sent, however many times you tried. The inbox was checking your reply against a list of channels that hadn’t kept up with the newer ones, so it turned away messages the sending side could handle perfectly well. Email, LINE, iMessage and Instagram private conversations now accept a typed reply like every other channel. Nothing to change on your side — open the conversation and send. See Email and Chat Interface.
-
Find Contradictions now flags the things that actually matter, instead of burying them. The knowledge base audit was reporting far too much: on a large library it could come back with hundreds of “conflicts”, most of which weren’t disagreements at all. Two comparison pages quoting different starting prices for someone else’s product, an article noting how often it gets reviewed, three separate guides that each unlock with their own keyword — all read alike to the audit, so all got flagged, and the handful of genuine problems (your own pricing, plan limits or feature availability described two different ways) were lost in the pile. The audit now works out what each disagreement is actually about and only raises it when the subject is your own business, so the list is roughly a third of what it was and far more of it is worth acting on. Two versions of the same help article no longer argue with each other either — the newer one just wins. Re-running the audit now also closes anything that has stopped disagreeing since last time, and puts any FAQ that was being held out back into your bot’s knowledge, so the list drains instead of only growing. Separately, a reply the audit occasionally couldn’t read would silently drop that batch’s findings altogether — around one batch in ten — which is fixed, so genuine conflicts are no longer missed. See FAQ Management.
-
A connected MCP server can no longer leave your AI silent. Attaching an MCP server to an agent hands the AI a list of actions that server can perform, written by whoever runs it. If any one of those descriptions was written in a way our AI provider refuses to accept, the provider rejected the whole conversation rather than just that action, and the agent stopped replying everywhere until the server was removed — in the try-out playground and on every live channel, with nothing on screen to say why. Shopify stores were affected: connecting a store’s built-in
/api/mcpendpoint silenced the agent, because the cart action it advertises carries a stray field the provider rejects. Descriptions like that are now cleaned up automatically before the AI sees them, so a badly-written action degrades to a slightly looser description instead of a mute agent. Nothing to change on your side; if you removed an MCP server because of this, you can attach it again. See MCP Servers. -
You can stop a knowledge base import that’s running — and it now tells you what it will cost before it starts. Importing a whole website could turn into a much bigger job than it looked: a docs site that publishes every page in twenty languages is twenty times the pages, and the New pages found window showed page counts without ever mentioning credits. Worse, once it was running there was no way out — the delete buttons were switched off for exactly the pages that were still waiting, which is precisely when you’d want them. Three things change. The picker now shows the estimated credit cost of your selection and your current balance right above the import button, and asks you to confirm again if the selection is large or would use more than half your credits. A domain with pages still waiting gets a Stop import button — stopping is free, because a page that hasn’t been read yet was never charged for, and the confirmation tells you how many were already mid-read and will finish. And the delete buttons stay usable throughout, so removing a page that’s still queued genuinely stops it. See FAQ Management.
-
If your own AI key runs out mid-import, the rest is held instead of billed to your credits. This one is for anyone using their own AI key (BYOK), where importing pages uses no AI credits. If that key stopped working part-way through a large import — usually because the balance on your AI provider account ran dry — we quietly switched the remaining pages onto your AI credits and kept going. On a few thousand pages that added up fast, with nothing on screen to say it had happened. Now the remaining pages are paused instead, and nothing is charged while they wait. Top up your provider account and press Resume to finish on your own key at no credit cost, or press Resume anyway to finish on your AI credits — the confirmation spells out which one you’re choosing. Pages already imported are always kept. See FAQ Management.
-
The chat widget preview now shows the rest of your edits, not just the colours. The live preview beside the Manage panel followed your appearance edits as you made them, but everything else needed a Save changes and a reload before you could see it. So switching the Proactive popup bubble on, rewriting its message or its two buttons, changing the opening message, adding a starter question, turning on lead capture or the privacy notice, hiding the emoji or attachment button, adding a WhatsApp, Instagram or Messenger link: none of it moved the preview. All of that is live now. Turn the popup on and it appears in the preview straight away, with your own wording on the buttons. Saving still does the same job it always did, which is publishing what you see to your site. The one thing the preview can’t show is the allowed-domains list, since that’s checked by our servers rather than drawn on screen. See Chat Widget.
-
The chat widget’s “Before we start…” form follows your theme too. The form that asks a visitor for their name and email, and the privacy notice that can sit in front of it, were still drawn the old way: a plain white card on a hard black shade, ignoring your theme and your Corners choice. On a Glass or Midnight widget that was the first thing a visitor saw, and it looked like it belonged to a different product. Both are now the same frosted card as the rest of the widget, on a softer shade that suits dark colour sets, with your Corners choice applied. Their small print (the line under the title, the “(optional)” next to Phone, the close button) was being painted in a faded version of your brand colour, which on a green or yellow brand was hard to read and looked like a link. It’s a normal muted grey now, and it lightens automatically on dark themes. The same faded-brand colour was used for message timestamps, so those are cleaner as well. One more thing fixed along the way: clicking into any field, in the form or in the message box, now shows a clear ring around it. Nothing to change on your side. See Chat Widget.
-
The chat widget’s popup bubble now follows your theme. The little bubble that pops up next to the chat button to invite people in was the one part of the widget the style themes never reached. Whichever theme you picked, it stayed a plain white card with the same corners and the default font, so a Glass or Midnight widget greeted visitors with a piece of the old look. It’s part of the theme now: frosted and translucent under Glass and Midnight, and it follows your Corners and Font choices like the rest of the widget. Two smaller things went with it. A widget with no logo uploaded showed a broken-image icon in the bubble and in the chat header, and now shows a neat initial in your brand colour instead. And the decline button (“Maybe later”) was printed in a pale version of your brand colour, which was hard to read on light brands. It’s a normal muted grey now. There’s nothing to change on your side. Your site picks it up automatically. See Chat Widget.
-
Contacts you assign to a campaign now appear in that campaign’s broadcast audience. Using Assign to campaign on a contact added them to the campaign but not to the campaign’s contact list, and a broadcast draws its audience from that list. So a contact you had just assigned was missing when you picked that list under Contact List in the broadcast setup, and the total never moved — it looked like a sync delay, but the contact was simply never added. Assigning now puts the contact in the campaign’s list as well, and they show up in the broadcast audience straight away. The Send opening message checkbox is unchanged: leave it unticked and the contact still receives nothing on assignment. Contacts you assigned before this fix are added to the list the next time you assign them to that campaign. See Broadcasts and Moving from Campaigns to Broadcasts & Agents.
-
Quick replies keep their line breaks. A saved quick reply is often a small script — a greeting, a couple of bullet points, a sign-off — but the box you typed or pasted it into was a single-line field, so every line break was quietly dropped before it saved. The chip then sent the whole thing as one run-on paragraph. Both the add and edit boxes under Settings → Profile → Quick replies are now proper multi-line boxes: press Shift+Enter for a new line (Enter still saves), or paste a message that already has line breaks and it keeps them exactly as written, right through to what your customer receives. Replies you saved before this change kept the flattened text — open one, put the line breaks back, and it will send correctly from then on. See Account Settings.
-
Opening a photo from a chat on your phone no longer crowds the top of the screen. Tapping an image in a conversation opened it full-screen with the zoom and close buttons pressed right up against the top edge, tucked under the status bar, and the photo itself reaching up behind them. On a phone those buttons now sit lower with clear space around them, and the photo sits evenly between the top and bottom of the screen instead of being pushed up against the controls. On a computer the viewer is unchanged.
-
The expand button in the photo viewer now actually expands the photo. The third button in the photo viewer looked like a full-screen control but only ever reset the zoom, so pressing it on a freshly opened photo did nothing at all. On a computer it now opens true full screen: the tabs and address bar step out of the way and the photo takes over the whole display, edge to edge. Press it again, or press Esc, to come back. On a phone, where the viewer already covers the screen, it grows the photo until it meets the edges instead, and the whole picture always stays in view. The icon shows which one you will get, and double-clicking the photo still zooms the way it always did.
-
Find Leads now asks for a country, and stays inside it. Town names repeat all over the world, so a search for a smaller place could quietly wander abroad: looking for hotels around Durham, Ontario returned more results from Durham in England than from Canada, along with businesses in Germany, India and Australia — because when Find Leads widens a search to nearby towns, several of those Ontario town names are also famous cities somewhere else. Country is now its own field at the top of the search form, with a searchable list and flags, and it is required. Everything downstream respects it: nearby towns are only suggested inside that country, and any business that turns out to sit outside it is dropped before it ever reaches your list — which also means it is never charged for, since you only pay for leads you actually receive. Searches you ran before this change are untouched.
-
The Reset button on Find Leads now really stops a search. Reset only ever cleared the page in front of you — the search itself carried on in the background, so it reappeared the next time you opened Find Leads, still showing “Finding emails…”. Because only one search can run at a time, a search that got stuck this way also blocked you from starting a new one. Reset now stops the search properly: the page clears, it stays cleared, and you can search again straight away. Leads already found are kept in Saved Leads, and a search you stop is never charged for. Separately, a search interrupted by a platform update now picks itself back up instead of stalling, and one that genuinely can’t finish is closed off within half an hour rather than spinning indefinitely.
-
A reply from our team in Champ now reaches you by email if you’ve left the app. When Champ hands your question to a real person, that person’s answer can take a while to arrive — and until now it landed only inside Champ’s chat panel, so if you’d closed the app in the meantime, nothing told you it was there. You now get their reply by email, about fifteen minutes after it’s sent, if you haven’t opened Champ to read it by then. Open the panel while a reply is waiting and no email goes out — you’ve already seen it. See Meet Champ.
-
English now carries the US flag in the language picker. The Language list showed English under a British flag while the app itself is written in American English, which several US customers read as the wrong option. It shows the US flag now. The language, and every translation in it, is unchanged.
-
A chat on Do Not Disturb now looks like one. Opening a conversation with Do Not Disturb turned on gave you no sign it was on: the header still read AI on, the status bar above the composer still said the AI was active, and the message box still let you type and hit send — but nothing was ever going to leave that chat, and a message sent from there simply vanished with no error. Do Not Disturb is now impossible to miss. A red banner sits across the top of the conversation, the header toggle reads DND, the status bar says so, chat rows in the list carry a red DND pill, and the composer is replaced by a short explanation with a Turn off button — one click and you’re messaging again. Sends that are refused for any other reason now surface a proper error instead of quietly disappearing. See Chats.
-
PDFs and other documents your AI sends now arrive with their real file name. When the AI shared a document from its media library over a WhatsApp connection that uses your own Meta app, the file reached the customer as “Untitled” — the name was right in your dashboard, but the person on WhatsApp had no idea what they’d been sent. Documents now carry their proper file name on arrival, so a brochure lands as a brochure. Nothing changes about how you upload or send media.
-
WhatsApp contacts now get their name filled in automatically. Someone messaging your WhatsApp Business API number showed up in your contacts as “Unknown Unknown”, even though WhatsApp shares the sender’s profile name — so your chat list filled with anonymous rows and your AI couldn’t greet anyone by name. New contacts are now named from their WhatsApp profile automatically, and a contact stuck as “Unknown” fixes itself the next time that person messages you. Names you’ve set yourself are never touched, and junk profile names (like a phone number used as a display name) are ignored rather than saved.
-
Pairing a rented number with WhatsApp connected by QR is now stopped before it can go wrong. QR pairing links a phone that already runs WhatsApp on the number you enter — but a number rented through the platform is a virtual number with no phone behind it, so that pairing could never finish. The connect window still accepted it, and trying left the number stuck as “Disconnected” and hid its Finish setup button, with no way back. The app now explains this the moment you enter a rented number and points you to Finish setup on the Channels page, which connects the number through the WhatsApp Business API — what it’s actually for. Two smaller fixes ride along: when a pairing fails because the QR was scanned with a different phone than the number you entered, the window now says exactly that instead of a bare “Disconnected”, and the connect code for the browser-extension route is shown on screen instead of hiding behind an “Advanced” link.
-
Connecting WhatsApp through your own Meta app no longer waits on a message that could never arrive. The last step of the connection wizard asked you to send a WhatsApp message to your number and waited — but a number that isn’t activated for WhatsApp’s servers yet can’t receive anything, and the activation only ran when you pressed Verify connection on that very screen. Skip the button and the setup sat on “Waiting for your first message” forever, your test messages stuck on a single grey tick. The wizard now activates the number as soon as you connect it and runs the final check by itself, so the connection completes without you sending a thing. And if Meta still needs something from your side — verifying the number, for instance — the connection card now says exactly what, and carries its own Verify connection button to run the check again once you’ve fixed it, instead of leaving a full Reconnect (secrets and all) as the only way forward.
-
You can now filter for the contacts your AI has actually talked to. There was no way to tell those apart from the ones only your team ever answered: AI replies just says the AI is allowed to answer someone, and Has ever replied is about the contact writing back. Contacts now carry a Talked to the AI flag, set the first time your AI writes to someone and never cleared afterwards. It’s a quick chip above the Contacts table, a switch in Filter, and a smart list rule — and because the first and last AI conversation are both recorded, you can also build a list of everyone your AI handled in the last 30 days, which keeps itself up to date as the month rolls on. Every contact that ever spoke to your AI already counts, going all the way back. See Organizing Lists & Contacts.
-
“Talked to AI” is now a chat filter too. The filter shipped on Contacts first, but the question usually comes up while you’re looking at conversations, so it’s now a chip on the Chats page as well, with its own count. Worth knowing how it differs from the one beside it: AI Active means the AI is switched on for that chat, while Talked to AI means it has actually replied at least once. A chat you later paused still counts, because the flag is set the first time the AI writes and never goes away. See Chat Filters.
July 2026
Published: July 6, 2026
New
- Star your important chats — and get notified the moment they message you. Mark any conversation as important with the star on its chat row or in the conversation header, and star individual messages (an address, an order detail) from the message menu so you can find them again later. A new Important filter chip shows only your starred chats, and a new Important contact messages notification category alerts you — bell and push — every time a starred contact sends a new message, so a key customer never drowns in a busy inbox. Stars are shared with your whole team. See Chat Interface.
- Install the new dashboard as an app, and get push notifications from it. The new web dashboard can now be installed to your home screen or desktop like a native app, and it can send real push notifications. A new Push on this device card at the top of Settings → Notifications turns them on per device, with a test button to confirm they’re arriving and a switch-off that only affects that device. Enable it on every computer or phone you want notified; which events come through still follows the per-event Push toggles on the same page. See Notifications.
- Dates across the dashboard now follow your language and date-format preference. If you use the dashboard in another language, dates used to appear in English regardless — weekday names like “Sat” instead of 週六, and day/month order that ignored the Date Format setting in your profile. Every date in the app now follows your interface language, and the Date Format preference in Settings → Profile gains a new Automatic (match my language) option that uses your language’s own convention — for example, Traditional Chinese shows 2026/7/28. Automatic is now the default; if you had explicitly chosen International or US format, your choice is unchanged. See Account Settings.
- Guarantee how many messages one AI reply can split into. The Max messages per response limit has always been a strong instruction to the AI, which it almost always respects — but occasionally a chatty reply slipped through as extra message bubbles. A new Enforce max messages switch in the campaign and agent editors’ Response limits section makes the limit a guarantee: anything over it is combined into the last message instead of being sent separately. It’s off by default, since combined messages can feel a little denser than the AI’s natural pacing — turn it on if split replies are causing problems for you. See AI Bot Setup.
- Quick replies — send your go-to messages with a single tap. Save the messages you type over and over (greetings, opening hours, pricing one-liners) as presets, and they appear as a row of chips just above the message box in every chat — tap one and it sends immediately. It’s opt-in so it doesn’t crowd the chat screen if you don’t use it: turn it on and manage your list under Settings → Profile → Quick replies (up to 20 presets, editable any time). See Chat Interface.
- Point your chat widget at a specific campaign or agent, per page. Every chat coming through your website widget used to go to the same place, no matter which page it started on. Now the install code can name its destination: put your sales campaign on the pricing page and your support agent on the help page, from the one widget. Grab the code from the ⋮ menu on any campaign (Add to website), from the </> button on any agent, or by setting Route these chats to in the widget’s Manage panel and copying the snippet underneath. Inline embeds can carry a different destination per box, so one page can host several. Anyone already mid-conversation stays with whoever they started with. See Chat Widget.
- Test bot changes safely before they go live — Save, Try Out, then Publish. Editing a campaign’s bot or an AI Agent used to be instant: the moment you saved, real customers got the new behavior, finished or not. Saving now creates a draft — the Try Out chat uses it straight away so you can test exactly what you changed, while live conversations keep running on your previous setup. When a draft exists, an amber banner at the top of the editor lists what’s unpublished; click Publish to live when the replies feel right, or Discard to reset back to the live setup. This applies to instructions and the playbook, response settings and the AI model, active hours, the opening message, extra knowledge text, and the AI’s contact-update abilities. (Knowledge links like FAQs and sources, media, and custom functions still apply immediately, as before.) See AI Agents and Setting Up Your AI Bot.
- Reuse an approved WhatsApp template in a broadcast — no new review. WhatsApp broadcasts need a WhatsApp-approved template for the opening message, and until now every broadcast meant writing one and waiting out WhatsApp’s review again. The broadcast wizard’s Message step now has a Use an approved template button that lists the templates WhatsApp has already approved on your account — pick one and the broadcast is ready to launch immediately. It also works as an escape hatch when a submission is stuck in review. See Broadcasts.
- Pick your own chat widget button icon. The floating chat button on your website no longer has to be the standard chat bubble: the widget’s Manage panel now has a Launcher icon picker with six built-in icons (chat bubbles, a paper plane, a question mark, and more), an option to reuse your uploaded logo, and an option to upload any image of your own — a team member’s photo works great for a personal touch. Existing widgets keep the classic icon until you change it, and changes go live on your site automatically. See Chat Widget.
- Message variations (Spintax) for SMS and WhatsApp Web broadcasts. Sending the exact same text to hundreds of contacts is the fastest way to get a number flagged. The broadcast wizard’s Message step now supports spintax — write variations yourself, like
{Hi|Hello|Hey}, and one option is picked at random for every contact — or click Add variations with AI to have variations woven through your whole message automatically, ready to review before launch. Personalization variables are always preserved. AI generation uses 1 credit per run (0.25 on the Max rate), or runs on your own AI key if you’ve connected one. A live counter shows how many unique versions your message can send as. See Broadcasts. - Send a time-critical broadcast without waiting for batching. Large broadcasts are normally sent in batches over time so carriers don’t flag your number for a sudden spike — but that pacing is useless when the message only matters right now, like a webinar link going out five minutes before the call. A new Time-critical send toggle in step 4 of the broadcast wizard skips the automatic batching and sends your whole list in one go. Your provider’s own daily limit still applies, and if you’ve configured drip settings yourself those still win. Use it for warm audiences expecting your message, not for cold outreach. See Broadcasts.
- See exactly what your plan includes. The Billing page now lists every feature and limit that is actually active on your account: your channel, contact and campaign allowances, AI response limits, API access, and more. Anything extra that has been added to your account shows up here too, even when it doesn’t have a separate menu of its own, so you can confirm a feature is still there instead of having to ask. Find it under Settings → Billing, just below your current plan. See Billing System.
- Dark mode for the new dashboard. The new dashboard now has a dark look to go with the light one. Pick Light, Dark, or System (which follows your device’s own setting, switching automatically when it does) under Settings → Profile → Appearance — or use the moon/sun button at the bottom of the left sidebar to flip between them with one click. Your choice applies instantly and is remembered on the device you’re using. See Account Settings.
- Comment-to-DM replies can now vary their wording. When a campaign’s First response is set to Exact text, the public comment reply and the first DM both accept multiple wordings: click Add variation to write your own, or Generate variations with AI to have a few written from what you already typed (one AI credit; you can edit them before saving). Each comment then gets one wording picked at random, so a busy post doesn’t fill up with identical copy-pasted replies. Sending still costs 0 credits. See Comment-to-DM.
- Your knowledge base can now catch itself contradicting itself. A new Find contradictions button on the Knowledge Base page scans your FAQs for pairs that give conflicting answers to the same question — different prices, different feature claims, different rules. Conflicts where one answer comes from a clearly more trustworthy source (your help docs or a hand-written FAQ) are resolved automatically; the rest land in a review panel where you pick the answer to keep, with an Accept all for the ones the audit already has a recommendation on. Losing answers are held out of your bot’s knowledge rather than deleted, so every decision is reversible. New imports are checked automatically too: a freshly added page whose FAQs contradict your existing knowledge is held back until you review it, so an import can never silently change what your bot tells customers. See FAQ Management.
- The new dashboard now speaks your language. The entire new web dashboard — chats, campaigns, contacts, settings, and everything in between — is now available in every language the app is available in (see Account Settings for the list). It follows the language you’ve already picked under Settings → Security & General, so if your account isn’t set to English, the dashboard switches over automatically — no reload needed when you change it. If a small corner hasn’t been translated yet, it shows English rather than a blank label. See Account Settings.
- A notification bell, right in the dashboard. The left sidebar now has a bell that collects your important alerts in one place — a WhatsApp connection that needs reconnecting, a campaign that was paused for low engagement, a chat waiting for a human, low credits, new appointments, and more. An unread counter shows on the bell, clicking an alert takes you straight to the page where you can act on it, Mark all read clears the list in one click, and any alert can be dismissed with its X. A View all notifications link opens a dedicated page with your full history and an All/Unread filter. Which events land here follows the same per-category preferences you already control on the Notifications settings page, where the In-App channel can be switched per category. See Notifications.
- Get alerted about messages from paused contacts. A new notification category, Messages from paused contacts, tells you whenever someone whose bot is paused sends you a new message — so replies that the AI won’t answer don’t slip through unnoticed. Turn it on (and pick email, push, or in-app) on the Notifications settings page, where it’s grouped by your chosen notification frequency to avoid inbox overload. See Notifications.
- See system status at a glance. A new Status page shows whether the services behind your account — the app, messaging, campaigns, and your data — are running normally, so you can quickly tell whether a hiccup is on our side. Each area turns amber the moment things get slow, not only when they’re fully down, and a 90-day uptime history of green/amber/red bars gives you an honest track record of each service’s reliability. Open it any time from the Status card at the bottom of the left sidebar, where a colored dot always shows the current state. See System Status.
- Two-factor authentication (2FA). Add a second step at sign-in so your password alone isn’t enough to get into your account. Turn it on in Settings → Security & General using an authenticator app (most secure), a text message (SMS) code, or an emailed code — or more than one. You’ll also get one-time recovery codes to save in case you lose your phone. See Account Settings.
- Connect Telegram (Beta). Link your existing Telegram account so your Telegram chats land in the shared inbox and your AI bot can reply. Connect from Settings → Channels with your phone number and a login code — no bot or extra number to set up. See Telegram.
- Turn your email inbox into an AI channel (Beta). Connect the mailbox you already use for support — Gmail, Outlook/Microsoft 365, or any custom IMAP mailbox — or grab a ready-made address, and your AI bot reads new emails and replies automatically from your own address. See Email.
- Use an Android phone as an SMS sender (Beta). Pair an Android phone running the free, open-source SMS Gateway app and send and receive texts through that phone’s own number and carrier plan — no separate SMS account required. Best for low-volume, conversational texting. See Android Phone as SMS Gateway.
- Import your existing Telegram chats. When you connect a Telegram account you can now choose to bring your recent one-to-one conversations in as contacts, so you don’t start from an empty inbox. The AI bot stays paused on imported contacts by default, so importing never triggers replies to old messages. See Telegram.
Telegram, Email and the Android SMS gateway are newly available to everyone and still maturing — expect the occasional rough edge, and tell support if anything doesn’t work as described.
-
Know the moment a new message lands. While the chat inbox is open, a short sound plays when a new message arrives, and the browser tab shows a count of new arrivals with a matching red badge on the tab icon — so you can spot them from another tab without switching back. The count clears as soon as you return to the tab, and the speaker icon at the top of the chat list turns the sound off if you’d rather work in silence. See Chat Interface.
-
Privacy blur — hide customer details on screen. A new switch in Settings → Security & General blurs contact names, phone numbers, email addresses, message text, profile pictures, and photos shared in chats everywhere they appear, so your screen is safe to share on a call or in a recording. Everything stays fully usable for you — it just can’t be read by onlookers. The setting is remembered on the device you’re using. See Account Settings.
-
Switch a webhook off without deleting it. Every webhook now has an on/off toggle. Switch one off and it stops receiving events but keeps its address, its selected events and its signing secret, so you can switch it straight back on when your endpoint is ready — handy while you rebuild or debug the system on the other end. Webhooks can now also be deleted from the settings page, which previously had to be done in the main app. See Webhooks.
-
Verify that a webhook really came from us. Webhooks can now be signed. Generate a signing secret on any webhook and every delivery arrives with a signature your system can check, so a request from anyone who happens to know your webhook URL can be told apart from a genuine one. Worth turning on if your webhooks feed billing, a CRM, or anything else that acts on the data automatically. Off by default, and set per webhook. See Webhooks.
-
Retry webhooks that fail. Switch on Retry failed deliveries for a webhook and a delivery that fails is retried after 1 minute, 5 minutes, 30 minutes and 2 hours — so an event isn’t lost just because your system was briefly down or restarting. Temporary problems (server errors, timeouts, connection failures) are retried; a webhook address that rejects the request outright is not, since retrying would only repeat the rejection. Off by default, because retries mean the same event can arrive twice — see the docs for how to recognize a repeat. See Webhooks.
-
Decide per campaign whether the AI may create tasks. A new Allow AI to create tasks toggle on each campaign’s AI Abilities step lets you keep one campaign’s bot from adding follow-up tasks to your task board while other campaigns still can. It’s on by default, so nothing changes unless you switch it off; the account-wide Tasks switch in Settings → Profile → Features still turns the whole task system on or off everywhere. See Custom Functions.
-
Choose which MCP server tools each campaign can use. You could already curate a server’s tools account-wide; now you can narrow them further per campaign. On the AI Abilities step, expand the tool list under an enabled server and switch off what that campaign shouldn’t call — one campaign can be read-only while another books and creates. A campaign can only narrow the account-wide selection, never re-enable a tool you switched off globally, and campaigns you don’t touch keep following the account-wide selection automatically. See Choosing which tools an Agent can use.
-
The campaign overview now shows what the AI knows and may do. Each campaign’s overview page has two new panels: Knowledge (how many FAQs and knowledge sources are linked, and whether AI web search is on) and AI abilities (custom functions, MCP servers, and the contact-update and task permissions) — with one-click links into the right editor step to change any of it.
-
Preview a message with one of your real contacts. Wherever you write a message with personalization variables (a campaign’s opening message, your AI agent’s opening message, and WhatsApp templates), the preview now has a Preview as picker. Choose any contact, by name, phone or email, and the preview fills in that person’s own details: their name, their phone and email, and their custom fields. Until now the preview always used a sample contact called John Doe, so you couldn’t tell how the message would read for the people you’re actually writing to. If the contact you pick has no value for a field, the preview shows the same gap they would see, which makes an awkward sentence easy to catch before you send. Switch back to the sample contact at any time. Picking a contact only changes the preview: it never sends anything, and it doesn’t change the message you’re writing.
-
AI Agents — build your bot’s personality once, use it everywhere. Every campaign’s bot is now also available as its own reusable AI Agent: the same instructions, knowledge, and behavior, editable from its own page and automatically kept in sync with every campaign it’s attached to. Create a new Agent from scratch, or turn an existing campaign’s bot into one with a single click — nothing about how that campaign runs changes. See AI Agents.
-
Broadcasts — a dedicated place to send and monitor your outreach. Broadcasts is the new home for one-off and ongoing sends: pick your audience, write the opening message, choose which AI Agent (if any) should handle the replies, and set your schedule, all from one page with live delivery and reply stats. Any existing campaign that already sends messages shows up here automatically as a linked “Classic campaign” entry, fully kept in sync with the campaign editor, so you can manage it from either place. See Broadcasts.
-
Entry Points (Preview) — routing rules for who answers an incoming conversation. A new Entry Points system lets you define rules such as “this keyword routes to this Agent” or “a new follower gets this Agent,” managed from each Agent’s Entry Points tab, plus a Default Agents screen for setting per-channel defaults in one place. These rules are a preview of routing that’s coming soon — today’s actual routing still follows your existing campaign settings — but you can build and review them now ahead of the switch. (Historical: at the July 2026 release Entry Points were a preview and classic campaign settings still decided routing. Since 12 August 2026 Entry Points decide routing on every account, and the Default Agents screen has been replaced by the “Who answers new conversations” panel on the AI Agents page.) See Entry Points.
-
A dedicated Lists page. Manage your contact lists from Contacts → Lists: create a list, rename it, copy its ID, and delete it — keeping its contacts, or removing them too, each with its own confirmation so the two are never mixed up. Every list shows its member count and how many broadcasts or campaigns automatically message new people who join it, and you can expand a list to search its members, remove one, or add contacts directly. Worth knowing: adding a contact to a list can trigger an automatic opening message if a broadcast or campaign is set to message new list members. See Organizing Lists & Contacts.
-
Send a broadcast to one contact, or hand them to a different AI agent, from the chat itself. The ⋯ menu on any conversation now has Send broadcast…, which sends one of your active broadcasts’ opening message to just that contact (it tells you instead of sending twice if they already received it), and Assign AI agent…, so you can pick which agent handles that contact’s replies — or choose No agent to let your team handle them — without moving them to a different campaign. See Chat Interface.
-
Review the AI’s optimize suggestions before they go live — now in the new dashboard too. Running Optimize with AI on a campaign in the new web dashboard no longer fires and forgets: the dashboard now waits for the run to finish and opens a review screen showing every proposed change side by side — what each playbook field says now versus what the AI suggests. Keep the changes you like, switch off the ones you don’t, and review suggested FAQ additions, edits and removals one by one (an FAQ change is only applied if you explicitly accept it). Apply saves exactly your selection, Reject all restores the playbook to how it was, and closing the review keeps the suggestions waiting so you can decide later. See AI Bot Setup.
-
Comment-to-DM can now send your exact words, credit-free. A new First response switch on the campaign editor’s Setup & Channels step lets a comment-to-DM campaign answer with text you wrote yourself instead of an AI-written reply: one field for the public comment reply (leave it empty to skip replying publicly) and one for the first DM. Exact-text responses cost 0 credits no matter how viral the post goes — ideal for “comment a keyword, get the link” lead magnets — and the AI takes over from the customer’s next message as usual. See Comment-to-DM Automation.
-
Pause all your AI replies with one master switch. A new Pause all AI messages toggle, in the AI responses card of your account settings, stops your AI from replying to any message — across every channel and every campaign — the instant you turn it on. Messages still arrive and you can reply to people yourself; flip it back off and your AI picks up again everywhere it was enabled. It’s the fastest way to go quiet for a holiday, an outage on your side, or while you sort something out, without touching any of your individual campaign settings. See Account Settings.
-
Two new dashboard languages: Traditional Chinese and Mongolian. The new dashboard can now be used in 繁體中文 (Traditional Chinese) and Монгол (Mongolian). The dashboard is available in every language the app is available in (see Account Settings for the list). Pick yours under Settings → Security & General → Language — the dashboard switches over immediately. See Account Settings.
-
Many more currencies, now with flags. The currency picker in the new dashboard has grown from 6 options to nearly 40 — including the New Taiwan Dollar (NT$), Mongolian Tugrik (₮), Singapore Dollar, Hong Kong Dollar, Thai Baht, Philippine Peso, and many more — each shown with its country flag and symbol, with a search box to find yours quickly. Your chosen currency is used for deal values and money figures across the dashboard. See Account Settings.
-
Help for the page you’re on, one click away. Every main page in the new dashboard now has a small ? next to its title. Click it and the guide for that page opens right there in a window, so you can look something up without losing your place. Links inside the guide work as usual, and Open in Help Center takes you to the full documentation when you want to browse more. See Your Dashboard.
Improved
- Rename an AI Agent. Agents couldn’t be renamed after creation, which left duplicated Agents stuck with “(copy)” in their name forever. Click the Agent’s name at the top of its editor to rename it — press Enter to save, Escape to cancel. The new name applies immediately everywhere the Agent shows up. See AI Agents.
- Fill a knowledge group in one click. Adding a large FAQ library to a knowledge group meant ticking FAQs one at a time. The group’s add-FAQs picker now has an Add all shown row: type a search and add every matching FAQ in one go, or use it with no search to add your whole library. See FAQ Management.
- Link a whole website to an Agent in one click. The Link sources picker on an Agent’s FAQs & Knowledge tab used to list every imported page as one long flat list, so linking a big site meant ticking pages one by one. The picker now shows your sources as a tree — the website at the top, each section of the site as a folder, and the pages inside — with a select-all checkbox at every level: tick the site to link everything from it, tick a folder to link just that section, or expand and pick single pages. Uploaded documents get the same treatment under Files. See FAQ Management.
- Notification emails now say which account and channel they came from. If your notifications cover more than one account, alerts like “AI needs help”, a new task, a reopened chat or a new contact used to arrive looking identical wherever they came from, so tracking down the right conversation meant opening accounts one at a time. Those emails now lead with the account name in the subject line, for example
[Northside Clinic] AI NEEDS HELP, and the body carries an Account and a Channel row naming the channel and — where we can tell — the exact connected number or profile the conversation is on. Nothing to switch on. If your notifications only ever cover one account, your subject lines are unchanged. See Notifications. - The new dashboard works properly on your phone. A full sweep of the new interface at phone sizes fixed content that was cut off or overlapping on small screens: the dashboard’s date-range picker and campaign tables, the campaign list’s status filter, contact lists and the contact record’s tabs and stats, the agent editor’s steps and save bar, the broadcast wizard and status timeline, the knowledge base toolbar, and several settings pages. Wide tables and boards now scroll smoothly sideways instead of hiding their columns, buttons wrap onto a second line instead of disappearing, and row actions that only appeared on mouse-hover are now always visible on touch screens.
- See your website chat widget while you set it up. The chat widget settings in the new dashboard now include a live preview: a sample web page with your actual widget running on it, right beside the settings. It shows your saved colors, position, logo and welcome popup exactly as visitors will see them, reloads every time you save, and you can click the chat button in the preview to try the widget out. See Chat Widget.
- See when a campaign, agent or broadcast was last edited. The Campaigns, AI Agents and Broadcasts lists now show a Created and a Last edited time for every row, and each list starts with the most recently edited item at the top, so whatever you were last working on is the first thing you see. Hover a time to read the exact date and hour. You can also sort any of the three lists by name, by when something was created, or by when it was last edited: click a column heading to sort, click again to reverse it.
- Arabic and Hebrew now get a proper right-to-left layout. When your language is set to Arabic or Hebrew, the new dashboard no longer just translates the words — the entire screen now mirrors, the way a right-to-left app should: the menu moves to the right, panels, lists and buttons swap sides, and arrows point the way you’d expect while reading right-to-left. Switch language under Settings → Security & General and the layout flips instantly, no reload needed. See Account Settings.
- Use one phone number on both Telegram and WhatsApp. If the same number is on both Telegram and WhatsApp (Web), you can now connect it as both channels at once. They run as two separate connections, each with its own status, warm-up, and limits — connecting one no longer replaces or blocks the other. See Telegram.
- Send voice notes on more channels. The microphone button in the chat box now appears on WhatsApp, WhatsApp Web, Instagram, and Messenger, so you can record and send an audio message wherever the channel supports one — previously it was limited to WhatsApp. On WhatsApp Web your recording now arrives as a proper press-to-play voice note rather than a downloadable audio file. It stays hidden on channels that can’t carry audio (SMS, the chat widget, and custom channels). See Chat Interface.
- Paste a screenshot straight into a chat. Copy an image, click into the message box and press Ctrl+V (Cmd+V on Mac) to attach it — no saving to your desktop first. A preview appears before anything is sent, so you can check it and cancel if it’s the wrong one. See Chat Interface.
- Send a file with a message attached. When you attach or paste a file you can now add a caption, so the photo or document and your message arrive together as one WhatsApp message instead of two. Anything you had already typed is carried into the caption for you. Available on WhatsApp and WhatsApp Web for photos, videos and documents — Instagram and Messenger only accept a file or text in one message, never both, so the caption box isn’t offered there. See Chat Interface.
- Documents in a chat now show what they are. A PDF, spreadsheet or Word file in a conversation appears as a file card with its name and a colour-coded type badge, instead of an anonymous “Open document” link — so you can tell a contract from a price list without opening both. Documents that arrive without a file name show their type instead. See Chat Interface.
- Chat filters now cover your whole inbox. Selecting a filter like Open, Unread, or Attention now searches across all of your chats, not just the ones already loaded on screen, so matching conversations show up even if you hadn’t scrolled to them yet. The number on each filter is the true total across your whole inbox, and “Load more” keeps working no matter how many chats you have. See Chat Interface.
- Campaigns now pause themselves when an opener isn’t landing. If fewer than 5% of contacts reply, we pause the campaign and email you instead of continuing to work through your list — this protects your sending number’s reputation and leaves your remaining contacts untouched so you can fix the opener and resume from the campaign page. We only do this once a campaign has reached at least 100 contacts, so a quiet first batch won’t stop a good campaign; below that we send the warning email and keep sending. See Scaling WhatsApp Outreach.
- Consistent phone number entry everywhere. Every place you type a phone number — signup, connecting WhatsApp/Telegram/iMessage/Android and Twilio numbers, two-factor setup, and more — now uses the same field with a searchable country-code picker and a “Remove number formatting” option for numbers that don’t fit the usual format. Same look and behavior across the whole app.
- See exact message stats per number and channel on the dashboard. The dashboard’s Channel Health panel now breaks activity down per connected number or account: messages received and sent, how many replies your AI handled, how many contacts each number talked to, and any failed sends — exact totals for your selected time range, not estimates. Great for spotting which numbers do the heavy lifting and which need attention. See Your Dashboard.
- See a contact’s message stats at a glance. The chat detail panel and the contact record now show an Activity stats panel for each contact: total messages, how many they sent you and how many you sent them, how many replies were handled by your AI versus a human teammate, and credits used — so you can size up a conversation without scrolling through it. See Chat Interface.
- Hear new messages as they arrive. The inbox can now play a short chime when a new message comes in while you have it open, with a speaker button at the top of the chat list to turn the sound on or off. Your choice is remembered on that device. See Chat Interface.
- Spot new messages from another tab. When the inbox is open in a background tab, the tab title now shows a count of new arrivals and a matching red badge appears on the site icon — so you can see them without switching back. Both clear the moment you return to the tab. See Chat Interface.
- See where your contacts are with a new Contacts by country panel. The dashboard now shows a breakdown of your new contacts by country for the selected time range, worked out from each contact’s phone number, with the biggest countries at the top. Contacts without a readable phone number (for example Instagram or Messenger contacts) are counted separately as “no country” so your totals still add up. Handy for spotting which markets your audience is growing in. See Your Dashboard.
- A clearer Inbox panel on the dashboard, focused on what needs you. Since your AI handles most conversations on its own, the Inbox panel now leads with the chats that actually need a person. “Needs attention” shows conversations your AI flagged for a human to take over, and turns amber when there are any. “Awaiting your reply” shows who is still waiting to hear back from you, with a breakdown by channel. Two footer counts round it out: how many chats you have paused the AI on and are handling yourself, and how many have been waiting more than 24 hours so older leads do not go cold. The old “Unread” count, which stayed at zero for most people, has been removed. See Your Dashboard.
- Connect WhatsApp Web with a phone-number code, not just a QR scan. When connecting or reconnecting a WhatsApp Web number, you can now choose Link with phone number instead to get an 8-character code that you type into WhatsApp on your phone (Linked Devices → Link a Device → Link with phone number instead). It gives the same result as scanning the QR code, and it’s handy when you can’t scan — for example when WhatsApp is on the same phone you’re setting up from. See WhatsApp Web.
- Choose exactly which MCP server tools your bot can use. When you connect an MCP server, you can now turn its individual tools on or off instead of exposing all of them. Edit a server and use the new Tools section to switch tools on or off, or use Enable all / Disable all. Once you’ve curated a server, any tool it adds later stays off until you enable it, so nothing new is exposed to the bot without your say-so. See Connect MCP Servers to Your Bot.
- Hover a message to see exactly when it was sent. The time under a message only shows the clock time, which isn’t much help in a chat that spans several days. Hover it to see the full date and time, the message’s current status and when it reached it, and — if the message didn’t get through — the reason why, in plain language. Messages that reached the channel but bounced back now show a clear “Not delivered” marker instead of no marker at all; the most common cause is replying to a WhatsApp contact more than 24 hours after their last message. See The Chat Interface.
-
The campaign editor is regrouped around what the AI knows vs. what it may do. The Custom Functions step is now called AI Abilities and gathers everything the AI is allowed to do in one place: custom functions, MCP servers, whether it may update contact names or save extra collected info (previously on the AI Instructions step), and the new task permission. AI web search moved to the FAQs & Knowledge step, next to the FAQs and knowledge sources it works alongside — it’s a way for the bot to find answers, not a channel setting. See Custom Functions and Real-Time Web Search.
-
The campaign editor no longer lets unsaved changes slip away. Nothing auto-saves — instead, moving to another step with unsaved changes now asks what to do (save and continue, continue without saving, or stay), and closing, refreshing, or leaving the editor with unsaved edits asks for confirmation first. Enabling custom functions or MCP servers for a campaign now also waits for the step’s Save changes button instead of applying the moment you flip a toggle, so you can change your mind before anything is stored.
-
Bookings can now be switched on or off after a campaign is created. The Bookings toggle and provider choice (built-in calendar, Zenchef or Formitable) used to be available only in the campaign-creation dialog; they now also live on the campaign’s AI Abilities step, so you can enable or disable appointment booking on an existing campaign at any time.
-
Inbound campaign health now speaks up only when something’s wrong. The Monitoring section’s health card for incoming campaigns used to say only “live and receiving messages” — even when messages were arriving and the AI wasn’t replying at all. That silent-failure case now shows a clear warning with the message/reply counts and hints about the usual causes (AI mode, active hours, paused chats). When everything is healthy, the card stays out of the way — the status badge and the analytics tiles already tell that story.
-
The browser tab now names the campaign you’re looking at. Campaign overview and editor tabs show the campaign’s actual name (e.g. “Edit · Summer Promo”) instead of a generic title — or no title at all, which is what the editor showed before.
-
Read a contact’s task without leaving the contact. Clicking a task on a contact’s Tasks tab used to send you off to the Tasks page, so you lost your place on the record and had to navigate back. It now opens a panel beside the contact with the task’s details, where you can also tick it off or delete it. The panel links through to the full task record when you need it, and closing it leaves you exactly where you were.
-
Pages you’ve already opened come back instantly. Moving between your pages used to reload each one from scratch every single time, so you sat through a spinner to see a list you had looked at seconds earlier. Each page now reappears immediately with what you last saw and quietly refreshes in the background, so it updates without ever going blank. This covers the dashboard, daily summaries, chats, contacts, deals, tasks, campaigns, agents, broadcasts, appointments, templates, knowledge base, the media library and more. A few pages deliberately still load fresh every time, because showing you a remembered answer there would be worse than waiting a moment: the system status page and automation runs that are still in progress.
-
Pages start loading before you click. Rest your pointer on an item in the left sidebar and that page begins loading straight away, so by the time you click it is usually already there. This now also works on individual rows — hover a contact and their full record is ready to open — on the New Broadcast button, and on the steps of the campaign and agent editors, where moving forward or back between steps is instant. Passing over things on your way somewhere else doesn’t trigger any of it.
-
A page that genuinely has to load now shows its shape, not a spinner. On a first visit you’ll see a preview of the page’s layout while it loads, and the heading, filters and search stay put and usable the whole time instead of the page emptying out and rebuilding itself.
-
Dead ends across the app now show you the way forward. A sweep of the whole dashboard replaced dozens of spots where you could get stuck with no explanation. Highlights: pickers that need something you haven’t created yet (an availability, a template, a list, a campaign, an agent) now say so and give you a button to create or connect it right there — for example, enabling bookings on a campaign without any availabilities now offers Set up availability instead of an empty dropdown that seemed to do nothing. Buttons that are switched off now explain why and link the fix instead of just sitting grey. A list that fails to load now says it failed and offers Retry, instead of looking identical to “you have nothing here yet”. Deleting a pipeline stage or task status now warns you when deals or tasks are sitting in it, and launching an outgoing campaign with an empty contact list is now flagged before you hit send. Running low on credits, hitting a plan limit, or an expired channel connection now always comes with a link to the place that resolves it.
-
Create the missing thing right where you need it. Wherever a dropdown asks you to pick something you haven’t made yet, you can now create it on the spot instead of leaving for another page — and the new item is selected for you automatically. This covers booking availabilities inside the campaign editor and the appointment form, contact lists in the broadcast wizard, WhatsApp templates (new ones show as awaiting approval, honestly, rather than pretending to be ready), the agent picker when choosing who handles broadcast replies, task and deal stages, and knowledge sources and FAQs. A few pickers deliberately still point you elsewhere: ones that only accept live campaigns, where a half-configured new campaign wouldn’t show up anyway.
Fixed
- The New Message webhook now actually fires. Subscribing a webhook to New Message never delivered anything — the event was listening on a message feed the platform stopped writing to, so it sat silent while every other event worked. It now fires on every message in a conversation, in both directions, and it’s the one event that carries the message text: a
messageblock with the body, direction, status, channel and timestamp. If you’ve been polling the API to read conversations, or wondering why Replies and Deliveries arrive without the words that were sent, this is the event you want. See Webhooks. - The task board now updates the moment you act. Marking a task done from its detail view left it sitting in the To-Do column until you switched pages, and dragging a card between columns could take a few seconds to land. Both now update instantly, with the save happening in the background — if a save fails, the card moves back and you’re told. Duplicate column names could also make one task appear in two columns at once after a refresh; column identifiers are now kept unique.
- Removing a FAQ from a knowledge group works now. Unticking an already-added FAQ in the group’s picker silently did nothing — the only workaround was deleting the whole group. Removal now sticks, checkmarks update the moment you click instead of after reopening the dialog, and a group’s FAQ count reflects what’s really in your library: deleting or de-duplicating FAQs updates the count instead of leaving “no longer available” leftovers inflating it.
- Exported FAQ files are named after your brand. Downloading your FAQ library produced a file whose name didn’t match the app you were using. Exports now use the product name your account runs under, falling back to a neutral “faqs” filename.
- Broadcasts could get stuck on “Sending” without ever going out. Launching a broadcast moved it to Sending, but a fault while scheduling the send left it parked there permanently — no messages, no credits charged, and no way to retry short of rebuilding it. The scheduling fault is fixed, and if a send ever fails to start now, the broadcast returns to Draft so you can simply launch it again.
- Large broadcasts were paced far more slowly than they should have been. Every broadcast was being throttled against a WhatsApp Web sending limit regardless of which channel it actually used, so an SMS broadcast on your own Twilio number crawled in batches of 20 a day and could never speed up, no matter how well it was performing. Broadcasts now pace against the real limit of the number they’re sending from, and a well-performing send is allowed to scale up as intended.
- The In-App notification toggle in Settings now works. In-app alerts (the notification bell) are on by default for every notification category you have enabled — but unchecking the In-App box in Settings → Notifications didn’t actually stop them, and the box showed unchecked even while alerts were arriving. The checkbox now shows the real state (checked whenever a category will reach the bell) and unchecking it genuinely turns that category’s bell alerts off, without affecting email or push. See Notifications.
- A filter pill flew across the screen when switching pages. Moving from Contacts to Deals or Tasks made the highlighted filter pill slide up the page from where it had been on the previous one. It now simply appears in place.
- The campaigns list jumped down the page while it loaded. The channel routing panel above it reserved room for five channels no matter how many you actually had connected, so once your real channels appeared the panel grew and shoved the campaign list down just as you went to click it. It now reserves the right amount of room, and remembers it between visits.
- Contact photos now show on your contacts pages, not just in Chats. A contact’s profile photo appeared in the inbox, but the contacts list and the contact’s own record showed their initials instead, even when we already had the picture. Photos now appear everywhere a contact does. Contacts who never had a photo (and channels that don’t share one) keep showing initials, as before.
- The new-message sound wasn’t actually playing. The chime announced above never sounded for anyone — the audio file it reached for couldn’t be found, and the failure was silent, so the inbox simply stayed quiet. It plays properly now. If you had already turned the speaker off, that choice is still respected. Note that browsers block audio until you have clicked somewhere on the page at least once, so the first chime arrives only after you have interacted with the tab. See Chat Interface.
- Campaign reply rates were showing 0% even when contacts were replying. Replies to a campaign weren’t being counted, so a campaign’s reply rate sat at 0% no matter how well it was doing. That also meant “low engagement” warning emails could arrive about campaigns that were performing perfectly well, and campaigns were sending in smaller and smaller batches than they needed to. Replies are now counted correctly, and reply rates reflect what’s actually happening. Campaigns that were running while this was broken won’t be judged on the period when replies weren’t recorded. See Scaling WhatsApp Outreach.
- Duplicating a campaign no longer copies the original’s stats. A duplicated campaign started out showing the original’s sent count, replies, and reply rate as if it had earned them — which in some cases produced reply rates above 100%. Copies now start from zero. Duplicating a scheduled or running campaign is also safe now: previously, deleting the copy could cancel the original’s scheduled sends.
- Team members with Admin access are no longer stuck in view-only on Billing, Team, Phone Numbers, and Settings. After switching into an account, an Admin could open these pages but every action came back as “view only” — they couldn’t add a payment method or manage billing, invite or edit team members, buy or manage phone numbers, or remove settings items like webhooks and short links. Admins now have full edit access to these areas, matching their role. Editors and Viewers are unchanged. See Team Management.
- Telegram chats no longer show the wrong person’s name. A Telegram conversation could be labelled with another contact’s name and username, making it look like the message came from — or was sent to — the wrong person. Names are now matched to the sender they actually belong to, and existing contacts correct themselves the next time that person messages you. See Telegram.
June 2026
Published: June 26, 2026
New
- Your AI bot now knows which Instagram ad a contact came from. When someone clicks a “Click to Instagram Direct” ad and messages you, the platform captures the ad they came from and tells the AI bot its name — no keyword or trigger setup needed. Just reference the ad in your bot instructions (for example “if the contact came from the ‘Pack Glow’ ad, lead with the glow bundle”), and the bot tailors its replies to that ad. The bot sees the ad’s name from Meta Ads Manager, and if a contact later comes from a different ad, it updates to the most recent one. See Instagram DMs for details.
- Connect external MCP servers so your AI bot can use their tools mid-conversation. Point the bot at a Model Context Protocol (MCP) server once — paste its address and an access key — and every tool that server offers becomes available to your bot automatically, with no per-tool setup. When the server adds a new tool, your bot can use it without any extra work on your side. Register servers in Settings → MCP Servers, then choose which campaigns can use each one (up to 5 servers per campaign). Available on plans that include developer tools.
- LINE is now a messaging channel. Connect a LINE Official Account and handle LINE chats in your inbox alongside WhatsApp, SMS, Instagram, and Messenger — with the AI replying automatically just like on every other channel. Setup is self-serve from the channel settings: create a Messaging API channel in your LINE provider console, paste in the Channel ID, Channel secret, and access token, then plug the returned webhook URL back into LINE. Once connected, inbound LINE messages create contacts, route to your campaigns, and trigger bot replies and follow-ups exactly as your other channels do.
- Danish (Dansk) is now a supported language. Pick Dansk from the language dropdown on signup or in account settings, and the app interface, plus AI-generated replies will use Danish. Existing accounts can switch any time from Settings → General Settings → Language.
- Bulk-add contacts to a list, or tag them, in one action. Select multiple contacts on the Contacts page and apply a list or a tag to all of them at once, instead of opening each contact one by one. The bulk list write is treated the same as a manual edit, so the contacts sync straight through to wherever that list feeds.
- Chat widget: ask visitors for their phone number, and hide the upload and emoji buttons. A new lead-capture toggle lets the widget request a phone number before the chat starts, and two more toggles let you hide the file-upload and emoji buttons if you want a leaner, more focused widget. All three live in Settings → Chat Widget and apply instantly to the embedded widget.
Improved
- Connect MCP servers with OAuth sign-in, not just an API key. When you add an MCP server you can now choose OAuth instead of pasting a key — save the server, click Connect, and approve access in a secure sign-in window (like “Sign in with Google”). The connection is kept fresh automatically; if it ever disconnects, click Reconnect. See Connect MCP Servers.
- Knowledge base import now lets you pick exactly which pages to include. When you import a website, the page picker now starts with nothing selected so you choose just the pages you want, rather than importing the whole site and trimming afterward. The picker has search and A→Z sort to find pages fast even on large sites, the page cap has been raised so big domains import in one pass, and a live cost estimate refines itself as the scan progresses so the number you see matches what you’re billed. Cancelling a refresh is now a true no-op — nothing changes unless you confirm.
- See why a WhatsApp message template was rejected — and fix it without starting over. When a template submission is declined, the exact rejection reason is now shown on the opening-message screen and in the campaign editor, so you know what to change. You can edit the rejected template and resubmit it in place, instead of deleting it and rebuilding from scratch.
- Help docs now open in your selected language. The in-app help and documentation now load in whatever interface language you’ve chosen, so the articles match the rest of the app instead of defaulting to English.
- Set a custom public reply for comment-to-DM campaigns. When a campaign monitors comments and replies to move the conversation into DMs, you can now write the exact public comment it posts back. The field only appears when comment monitoring is switched on, so it stays out of the way when it doesn’t apply.
- Appointments: offer overlapping arrival windows with the new Slot interval setting. In the event editor you can now choose how often a new appointment start is offered, separately from how long the appointment lasts. Leave it on Same as appointment length for the usual back-to-back slots, or pick Every 15 minutes, Every 30 minutes, or Every 1 hour to offer overlapping windows - for example a 2-hour visit startable every hour (8:00-10:00, 9:00-11:00, 10:00-12:00…). Perfect for field services and dispatch that quote a 2-hour arrival window and want to ask the customer “what time works best for you?” The AI never double-books: any window that clashes with an existing booking is removed automatically. Existing events are unchanged.
- Inbox search results are sorted by most recent activity. Searching your chats now lists the most recently active conversations first, so the chat you’re looking for is usually at the top.
- Follow-ups now go out in your customer’s language automatically. On every channel except the official WhatsApp Business API, your pre-written follow-up templates are translated into whatever language the conversation has actually been happening in, right before they send — so a chat that’s been in Dutch gets a Dutch follow-up instead of the template’s original language. Names, links, prices and branding are preserved, and if there’s no clear language signal yet it falls back to your campaign language. Official WhatsApp Business API follow-ups still use the Meta-approved template in its approved language, since WhatsApp locks templates to one language.
Fixed
- Appointments: availability now correctly offers your true opening time. When a contact asked about a specific day, the earliest slot could be skipped (for example an event open from 6:00 AM only offered from 8:00 AM). Opening-time slots are now offered as expected, and availability is shown in your event’s time zone.
- Quick follow-ups now fire when they’re the only follow-ups enabled. If you turned on quick follow-ups but left every follow-up cycle off, the follow-up engine stayed dormant and nothing went out. Quick-only follow-ups now schedule and send as expected.
- Fixed a crash when resuming a saved onboarding draft. Returning to a half-finished onboarding wizard — particularly one with uploaded files — could hit a gray-screen crash loop. Resuming a draft now restores cleanly so you can pick up where you left off.
- WhatsApp template names no longer get clipped. Long template names, and names in right-to-left languages, now display in full in the template list instead of being cut off.
May 2026
Published: May 1, 2026
Improvements
- WhatsApp Web outgoing campaigns now pace every send 30–90 seconds apart. Sending 30+ first-touch messages to brand-new contacts in a single burst is the single most ban-likely thing you can do on WhatsApp, especially on a freshly paired number. Outgoing campaigns sent via a paired WhatsApp Web number now space every send by a random 30–90 seconds, with each message scheduled independently — so a 34-contact campaign quietly rolls out over about 25 minutes instead of 30 seconds. Drip mode and the related batch-size, frequency, and weekday settings are hidden from the campaign editor when WhatsApp Web is your only channel, because the per-send pacing replaces them. Pause and resume still work — pause cancels every pending send, resume rolls the remaining contacts forward at the same 30–90s cadence starting from when you resume. No change for campaigns sent via the official WhatsApp Business API.
- The AI bot can now read contact custom fields. Values stored in a contact’s custom fields (company, position, location, or any other field you’ve added) are now passed to the bot as part of the contact context on every reply. Previously custom fields were only used for personalisation tags in outbound templates — the bot itself couldn’t see them, so asking “what’s their company?” came back empty. Works in test mode and in live conversations; fields with empty values are skipped, so there’s no prompt bloat for contacts who haven’t been enriched.
- New webhook event: Daily Summary Created. Subscribe a webhook to the Daily Summary Created event and you’ll get a POST with the full daily summary the moment it finishes generating each morning — including the stats (conversations, messages, human alerts, bookings, sales, new contacts), every section’s markdown content, the contact map, and any tasks the AI auto-created from the recap. Useful for piping the daily recap into Slack, email digests, Notion, or a dashboard alongside your own metrics.
- WhatsApp Web sends via the public API are now free. The
POST /v1/whatsapp-web/sendendpoint no longer deducts the 1-credit-per-message platform cost — WhatsApp Web runs through your own paired number, so we’ve dropped the fee for sends triggered from your own automations, webhooks, or integrations. Inbox sends and bot replies on other channels are unchanged. - Stop the AI from renaming your contacts. A new Allow AI to update contact names toggle on each campaign’s bot settings page lets you lock contact names in place. Turn it off if you use the contact’s name field as a manual label (for example “ReservationDate ClientName”) and don’t want the AI overwriting it with what it picks up from the conversation. Email updates from the AI are unaffected, and existing campaigns keep the previous behaviour until you flip the toggle off.
- Group linked knowledge base sources by domain on the campaign FAQ tab. The Linked Knowledge Bases card in a campaign’s FAQ step now groups linked sources by their website (or under a single Files group for uploaded documents). Each domain row shows the page count and a Remove all from Campaign button, so unlinking a 70-page site is one click instead of seventy. Click a domain to expand and pick individual pages to remove. A separate Deleted sources group appears if any of your campaign’s linked sources no longer exist, with a one-click bulk-remove for the dangling references.
- Refresh a knowledge base source in one click — no more re-linking to campaigns. Clicking Refresh next to a knowledge base source now re-scrapes (or re-reads) the content, regenerates the FAQs from any sections that changed, and automatically re-attaches every refreshed FAQ to whichever campaigns the source was already linked to. Previously, refreshed FAQs came back without their campaign association, so the per-campaign FAQ retriever would silently skip the new entries — you had to remember to re-add the source to every campaign that used it. Now Refresh is genuinely one click; the surviving unchanged FAQs are left alone, and only the truly new or rewritten ones get re-propagated. Refresh on a source that wasn’t attached to any campaign is unchanged.
- Tag any contact via the API, including ones without a phone number. The
POST /v1/tagsendpoint now accepts acontactIdparameter alongside the existingphoneNumberandemaillookups. Use it to apply tags to Instagram, Messenger and chat widget contacts that don’t have a phone number — thecontactIdreturned in webhook payloads is the same value the API now accepts, making closed-loop automation straightforward.
- Better AI responses on long conversations. The AI now has better recall across very long chats. Previous messages are automatically summarised in the background so the bot retains context from the full conversation history, not just the most recent exchanges — without any extra cost or setup required.
- GIFs in chats now play automatically and loop. Animated GIFs received on WhatsApp, Instagram and Messenger arrive as short video clips, and used to render as a frozen first frame with a play button — so they looked broken until you tapped them. They now autoplay silently and loop in place, the same way every other messaging app handles GIFs. Longer videos are unaffected and still open with playback controls.
New
- Economy AI tier is deprecated. With Max now costing half as much as Economy and using a newer-generation model, there’s no remaining reason to pick Economy. The option stays visible (greyed out, labelled Deprecated) on campaigns that are already on Economy so it’s clear which tier the bot is using, but once you switch a campaign away you can’t switch back. New campaigns can’t pick Economy at all. Existing Economy campaigns keep running on Economy until you change them — there’s no forced migration, no surprise behaviour change. The recommended swap is Economy → Max (cheaper, faster, smarter).
- Max — a new AI tier powered by our in-house model, 4× cheaper than Pro. The campaign bot’s AI Quality picker now has a Max option alongside Pro and Economy. Max runs entirely on our own infrastructure and charges 0.25 credits per AI action, compared with 1 credit on Pro — that’s a 75% reduction for every reply, every tool call, every chat summary, every FAQ ingestion chunk, every contact tag, and every campaign generation. It’s also faster on most chats. Max is the new default on freshly created campaigns for eligible accounts; existing campaigns keep their current tier until you change it. For users on plans that include credits, Max meaningfully extends how far your monthly allowance goes; for users who’d otherwise consider bringing their own AI provider key, Max usually costs less than your direct API bill while saving you the setup. Existing Pro campaigns are not changed — Pro stays available for users who want the original premium model.
- Real-time credit estimates when adding a knowledge base. When you paste a URL in Add Knowledge Base Source (or in step 1 of campaign creation) and click Discover, the picker now shows a live estimate of how many credits the import will actually cost — broken down by chunks and pages, not just by URL count. Previously the estimate was a rough “1 credit per page” rule of thumb, which under-counted content-heavy pages by 3–10×. Now the number you see matches the number you’re billed. The estimate also accounts for your selected AI tier, so Max users see the lower estimate immediately rather than a Pro-rate quote that gets corrected at import time.
- Connect multiple WhatsApp Web numbers and route leads across them with Short Links. You can now pair more than one WhatsApp Web session to the same account — useful for sales teams that split lead volume across several phones, or for warming up new numbers in parallel without retiring the old one. A new Short Links page in Settings lets you create a short link that spreads incoming leads across the WhatsApp Web numbers you choose. The platform generates the link ending for you, on your own (or your agency’s) domain. It routes each new lead to the number with the most headroom left on its daily cap, so traffic spreads evenly. Toggle sticky routing so the same visitor always lands on the same number, prefill the opening message, and turn follow-ups off for any number that’s still warming up.
- Find and merge duplicate FAQs across your entire knowledge base. A new Dedupe FAQs button on the FAQ settings page scans every knowledge base you’ve imported — across all your domains, uploaded documents, and manually-added entries — and merges duplicates into a single FAQ. When two FAQs say the same thing in different words, the system either keeps the better one or combines them into a single, cleaner FAQ that captures both. The job runs in the background, so you can close the page and keep working; live progress (“Pass 2/5 · 14 removed”) shows in the header while it runs, and a result chip tells you how many duplicates were merged when it finishes. Useful any time you’ve imported both a marketing site and a help center, or when your knowledge base has grown faster than you can clean it up.
- Link a whole knowledge base to a campaign in one click. Each knowledge base on the FAQ settings page now has a Link to campaign… action, so you can attach an entire scraped site (or uploaded document) to a campaign without opening it FAQ by FAQ. Sources from the same website are automatically grouped under a single Domain: yoursite.com (24 pages) header with a Link all to campaign… action — so a 24-page scrape becomes one decision, not 24. On the campaign’s own FAQ tab, each linked knowledge base shows an Added to Campaign state with a one-click Remove from Campaign button, so you can see at a glance which sources are powering this bot and unlink them just as fast. The AI continues to pull from any individual FAQs you added directly, so existing campaigns are unaffected.
- Faster campaign FAQ tab on large knowledge bases. Campaigns with thousands of linked FAQs now open and stay responsive on the FAQ tab. Large legacy FAQ lists are summarised behind a Show all expander instead of rendering eagerly, and the page no longer opens dozens of background data streams to draw the same list. If you’ve ever felt the tab lag when deleting a source or clicking Add to Campaign, that’s fixed.
- Assign chats to a team member. Each chat in your inbox can now be assigned to a specific person on your team, so it’s clear who owns the follow-up. Open a chat, hit the three-dots menu, and pick an assignee — or leave it as Unassigned to keep it in the team queue. The inbox has a new Assignee filter so you can quickly narrow to Mine, Unassigned, or any specific teammate, with an unassigned counter to show how much is still up for grabs. Assigned chats also surface a small initial badge on the inbox row and an “Assigned to {name}” line in the chat header so ownership is visible at a glance. Two helpful auto-assignments happen on your behalf: when a chat triggers a human alert (the chat is automatically assigned so it’s not orphaned in the queue) and when you pause the AI on a previously unassigned chat (whoever stepped in becomes the owner). Existing assignments are never overwritten — you can always reassign manually.
- iMessage as a messaging channel (Beta). Connect a Mac running BlueBubbles and start sending and receiving iMessages through your inbox alongside WhatsApp, SMS, Instagram, and Messenger. Setup takes ~10 minutes — install the open-source BlueBubbles server on your Mac, paste your server URL and password into the iMessage settings, then plug the returned webhook URL back into BlueBubbles. Currently invite-only while we polish the experience — reach out to enable it on your account.
- Indonesian (Bahasa Indonesia) is now a supported language. Pick Bahasa Indonesia from the language dropdown on signup or in account settings, and the app interface, plus AI-generated replies will use Indonesian. Existing accounts can switch any time from Settings → General Settings → Language.
- Bring your own SMTP server for transactional emails. A new option in account settings lets you connect any standards-compliant SMTP server — EmailIt, Postmark, SES, or your own host — so account emails (invites, password resets, notifications) are delivered from your domain instead of ours. Paste host, port, username, password, and from-address; we run a real connection check, store the password encrypted, and send a test email to your account email so you know it works before any real traffic flows through it.
- Respect each contact’s local time when sending follow-ups. Two new toggles in Settings → Security & General let you defer automated follow-ups so they only go out between 8 AM and 8 PM in the contact’s own local time, derived from their phone number’s country code. A second toggle, US strict mode, additionally blocks Sunday sends to US contacts — recommended for staying inside US TCPA / Florida FTSA expectations. New accounts have both toggles on by default; existing accounts can turn them on whenever you’re ready, with no change to current behavior until you do.
- Browser push notifications — get notified of new messages with the tab closed. Enable browser push notifications from Settings → Notifications and you’ll get a desktop alert when a contact replies, when a human alert fires, or when something else needs your attention — even if the app tab isn’t open. Works in Chrome, Firefox, Edge, Safari (macOS), and on iOS when the app is installed as a PWA. Previously invite-only; now available on every account.
- Embed the chat widget inline on a page, not just as a floating bubble. A new Embed inline on page (advanced) snippet in Settings > Chat Widget > Get Code lets you drop the chat panel into a specific spot on your site — a contact-us section, a help tab, a sidebar — instead of (or in addition to) the floating bubble in the corner. The snippet is a
<div data-chat-widget="…">you size with your own CSS plus a single shared loader script that handles every inline embed on the page. Reuses the same configuration as the floating bubble, so avatar, opening message, lead capture, starter questions, and FAQs all work the same. - New “Features” section in Settings. A dedicated Features section in Settings now hosts on/off toggles for optional account features — starting with Tasks (kanban / table / list / calendar for managing customer follow-ups) and Daily Summaries (an AI-generated recap of yesterday’s conversations and activity each morning). Switch a feature off if you don’t use it, or back on whenever you want. Both default to on, so nothing changes unless you flip a toggle.
- Bring your own Twilio account for WhatsApp (advanced). A new SMS Provider page in Settings lets you switch WhatsApp Business API onto your own Twilio account instead of the platform’s default managed setup — useful if you’ve already got an established Twilio account with warmed-up numbers and approved WhatsApp templates you want to keep using. Paste your Account SID and Auth Token, confirm the warnings, and the system validates the credentials, releases any phone numbers currently held on the default setup, then swaps over so all future outbound goes through your account. Switching is destructive (numbers and templates on the previous setup don’t transfer) and you can switch back any time. A 24-hour cooldown between switches prevents accidental churn. Most users should stay on the default setup; this is only here for users who specifically want it.
Improved
- Auto-assign incoming contacts across your team. A new toggle at the top of the Team settings page distributes brand-new chats evenly across your team without you lifting a finger. When it’s on, every contact that messages you for the first time is assigned to whoever — owner or team member — has the fewest contacts assigned in the last 30 days, so inbound volume balances itself over a rolling window. Existing chats keep their current assignee, manual reassignment still works, and the human-alert and pause-AI auto-assignments from before are unchanged. Leave the toggle off and nothing changes — this is purely additive for teams that want hands-off load balancing.
- Refreshing a knowledge base source now only charges for what actually changed. When you hit Refresh on a website or document in your knowledge base, the cost now scales with the sections that need to be re-analysed — not a flat fee for the whole source. If nothing has changed since the last refresh, it costs nothing; if only a couple of sections were edited on the page, you pay for just those. Matches how initial imports are already priced, so you can refresh aggressively without worrying about being penalised for pages that haven’t moved.
- Cleaner knowledge base import for accounts using their own AI keys. If you’ve connected your own Anthropic API key (BYOK) the knowledge base import flow no longer shows credit estimates — those numbers don’t apply to your account, since your provider bills you directly. The page picker and import button now show just the page count, with no misleading credit figures.
- Chat summaries are now readable. The conversation summaries on the right side of each chat — and the full summary view that opens when you click one — now render with proper formatting (headings, bold, lists, links) instead of showing the raw markdown characters. Click any link in a summary to open it directly, and select and copy any portion of the text.
- One-click archive on every inbox row. Each chat in the inbox now has a small archive icon at the trailing end of the row, so you can clear out a finished conversation without opening the three-dot menu first. The icon flips to an unarchive variant when you’re viewing the Archived list, so getting a chat back into your inbox is also a single click. Bulk select and the in-chat archive toggle still work exactly as before — this is purely an extra shortcut for cleaning up your inbox faster.
- The AI no longer keeps replying to a 👍. When a contact’s last message is just an emoji (no words) and the AI’s previous reply wasn’t a question, the AI now treats it as a friendly “thanks, we’re done” and quietly closes out the chat — no second-guessing reply two minutes later. The conversation reopens automatically the moment the contact sends a real text message, so nothing is lost — you just stop seeing those awkward bot follow-ups to a thumbs-up.
- Visitors can now close the chat widget’s pre-chat form. When the lead capture or privacy consent form is shown to a website visitor, a close (X) button now sits in the top-right of the modal. Tapping it dismisses the form and collapses the chat back to the floating bubble — particularly important on mobile, where the form previously took up the full screen with no way out except filling in the fields.
- More accurate voice note and video transcriptions. Voice notes and the audio in videos are now transcribed through a dedicated speech-recognition model that’s noticeably more accurate, especially on short clips, multilingual recordings, and audio with background noise or stutters. The AI gets a cleaner read of what your contacts actually said, which leads to more on-topic replies. No setup required — every voice note and video sent to or from your inbox uses the new transcription automatically.
- The AI shares more accurate links to your website. When a contact asks for the page or listing of a specific product, service, or topic, the AI now scans all your configured website URLs in parallel, ranks the matching links across every page, and returns the most relevant one — instead of stopping at the first hit on whichever page came first. Detail pages built with page builders like Elementor, Webflow, or JetEngine (where listings are wrapped in click-anywhere overlay links) are now included, and non-Latin-script content (Hebrew, Arabic, Cyrillic, CJK, etc.) is preserved end-to-end so the AI can read and quote it back. Search queries are now also phrased in the website’s own language, which improves results when your contacts chat in a different language than your site.
- Filter the inbox by channel. A new Channel dropdown sits alongside the existing inbox filters (Unread, Open, Closed, AI Paused, etc.) and lets you narrow the list to a single messaging channel — WhatsApp, SMS, Instagram, Messenger, Chat Widget, iMessage, and so on. The dropdown only shows channels you’ve actually connected, so accounts that haven’t set up iMessage won’t see it cluttering the list. Picking a channel replaces the active filter (single-select, same as the other filter pills).
- Unread chats now stand out in the inbox. Each chat row shows a numeric unread badge (“3”, “12”, “99+”) and a bolded contact name when there are inbound messages you haven’t opened yet, so you can scan a long list and immediately spot what still needs a reply — and how much. Chats where the AI is paused get a warning-coloured left edge and a “Paused” badge so they don’t get forgotten in the noise, and any unread chat that’s been sitting for over a day escalates to a stronger highlight to draw your eye to it first. A new Unread filter at the top of the inbox lets you collapse the list to just the chats that need attention — opening or replying to a chat clears its unread state automatically.
- Open a chat in a modal from Deals and Daily Summaries. The chat icon on a deal card and the contact links inside a daily summary now pop the conversation open in a modal on top of the page you’re on, instead of yanking you over to the inbox and losing your place. Close the modal and you’re right back where you started — useful when you’re scanning a pipeline or skimming a summary and just want a quick look at what was said.
- Chat widget protected against automated abuse. The embedded chat widget now issues each visitor a short-lived session token on load and verifies it on every message. This closes a gap where automated scripts could send large volumes of messages to your widget and burn through your credits without any real visitor being involved. Legitimate visitors are unaffected — the token is handled invisibly in the background.
- Long-press “Resume AI” to skip the follow-up. Tapping Resume AI works the same as before — the AI picks up the conversation and evaluates whether to schedule a follow-up automatically. If you want to resume without a follow-up, long-press the button instead: a small prompt lets you choose “Just resume” (no follow-up scheduled) or “Resume + Follow-up” (the default behaviour).
- Daily Summaries opens on yesterday by default. Today’s summary is generated overnight, so landing on the page used to mean staring at an empty state until you manually clicked back a day. The page now opens on yesterday’s summary directly — the date picker and Today/Previous/Next controls work the same as before if you want to move around.
- Clearer “How does the conversation start?” step in onboarding. The second onboarding step has been simplified: pick whether your customer messages you first or you reach out to them first. The previous “I do both” shortcut has been removed because it loosened the rest of the wizard’s recommendations more than people expected — if you run both inbound and outbound workflows you can still set them up by picking “I message my customer first” plus a follow-up or review-collection use case in the next step, and adding more campaigns afterwards.
- Graduated reminders when a payment fails. When a subscription payment fails you’ll get a friendly reminder email and a heads-up banner inside the app right away, while the platform retries the charge in the background. If it stays unresolved after a week, outgoing campaigns and manual sends pause so a delinquent account can’t keep accruing usage. After two weeks, AI replies pause as well and the app switches to read-only — you can still update billing or log out, but everything else is locked. The moment payment goes through, all of this clears automatically within minutes; no manual restart needed.
-
Channels page now explains why a WhatsApp number is offline. When a connected WhatsApp API number goes offline, the reason is now shown directly below the number on the Channels settings page — for example, “Your WhatsApp Business Account has been disabled by Meta. Go to Meta Business Manager to review and resolve any policy violations, then reconnect.” Previously the number just showed a red dot with no explanation, leaving you to contact support to find out what happened.
-
The chat now shows why the AI didn’t reply. When the AI skips a message — because the contact’s campaign requires a keyword trigger that wasn’t in the message, because the message arrived outside the bot’s active hours, or because of a credit or billing issue — a small amber label now appears inline in the conversation at that moment. You no longer have to guess why a contact got no reply; the reason is visible right in the timeline.
-
Export your “Try out the AI” test conversation. While testing your AI agent in the campaign builder, an Export Chat button now sits next to Restart at the top of the test conversation. It downloads the whole back-and-forth as a plain text file formatted like a normal chat export — each line shows the time, who sent it, and the message — so you can save a transcript, share it with a teammate, or keep a record of how the AI responded.
Questions about this release? Contact Support.
April 2026
Published: April 28, 2026
New
- Get notified the moment a customer messages you, even when the tab is closed. Browser push notifications are rolling out in beta. Turn them on per device from Notification settings, then pick which categories should pop a desktop notification — useful for unread chats, human-handoff alerts, and anything you don’t want to miss while the app is in the background. Available on Chrome, Edge, Firefox, and recent Safari.
- The AI can now Google search. Your AI assistant can look up general information on the web during conversations, not just on your configured website. Useful for answering questions about external topics, businesses, or anything the visitor brings up that isn’t on your own site.
- Japanese language support. The app interface is now available in Japanese. Switch from your account language settings.
Improved
- See AI follow-ups the moment they’re sent from a task. When you approve an FAQ task with “Send AI follow-up” turned on, the chat with that contact now opens automatically in a preview window so you can watch the message arrive — no more switching to the chat page to check what was sent.
- Clearer onboarding — pick the conversation direction first. Onboarding now starts with a single question: does your customer message you first, or do you message them? Use cases that don’t fit your answer drop to the bottom of the list and explain why, so you can’t accidentally set up an outbound campaign when you meant to answer inbound DMs.
- Channel routing changes are now explicit. When you reactivate an incoming campaign, or save edits to one, the app no longer silently moves channel routing away from another active campaign. If a conflict is detected you’ll see a confirmation dialog naming the campaign that currently owns each channel — pick “Take over” to switch routing, or cancel to leave things as they were. Saving an edit with no channel changes never touches routing.
- WhatsApp variant picked in onboarding is the one you get. If you connect WhatsApp Web in onboarding, only WhatsApp Web is enabled on the campaign — even if you have a separate WhatsApp Business API number connected from before. Same in reverse for the Business API.
- Filter the deal pipeline by date. Two new filters at the top of the pipeline let you narrow the board to deals created in a specific window, scheduled to close in one, or both. Each filter works independently and clears with a single tap, so you can answer questions like “what’s closing this month” or “what came in last week” without leaving the board.
- Bring-your-own-key AI cost tracking is now exact. If you connect your own Anthropic API key, the AI cost shown on your billing page now lines up with what you see in the Anthropic console — down to the cent on most days. Previously a handful of background AI calls weren’t being recorded, and the longer-lived prompt cache wasn’t being priced quite right, which left a small gap between the two numbers.