What's new in August 2026
- CRM
Flows: fewer triggers, and the data you needed was already there
A pass over what starts a flow. The list is shorter, most triggers stopped asking a question they already knew the answer to, and several things that looked broken were.
Triggers no longer ask which object they are about
Nearly every flow used to open by making you pick an object - including the ones that could not possibly need it. A form already knows what it wrote. A meeting enrolls the contact it matched. A webhook’s job is to accept data, not to classify it. Only Record created, Record updated, On a schedule and Manual still ask, because for those the object genuinely is the question: “a record was created” is not a thing that happens, “a deal was created” is.
A flow that already has an object set keeps it - it is still filtering, so hiding it would mean a flow silently not running with nothing on screen to explain why. The panel now shows it and offers one button to drop it.
Field changes, the chat triggers and campaign feedback are retired
Existing flows on any of them keep running exactly as they did. They simply are not offered any more, and each one’s panel now names what to use instead.
Field changes was a second way of saying what Record updated already says: narrow it to the field, then use a Filter step for the value. The eight chat triggers all fired after the chat runtime had already written or matched a record, so Record created reaches the same moment without asking anyone to know the difference between “lead captured”, “agenda completed” and “lead qualified”. Campaign email feedback pointed a flow at a bulk send, where every open enrolled a run - the volume case automation is worst at, and the one campaign reporting already answers.
A new trigger for the mail your team actually sends
Sales email engaged fires on one-to-one email sent from a record’s timeline: opened, clicked, either, replied, bounced or marked as spam. Opens and clicks enroll on the first one only, so someone re-reading the same email four times starts one run rather than four. Replies are genuine replies - we match the message back to the one you sent, so a forwarded chain does not count.
The meeting time comes with the meeting
Every meeting trigger now hands the flow the booking itself - start and end time, duration, the booker’s timezone, host, location, join link, and the reschedule and cancel links - so “remind them the morning before” does not need a lookup step. Load recent data on a meeting trigger loads a real meeting, rather than asking you to pick an object from a control that is no longer there.
The webhook accepts whatever you send it
It used to accept JSON objects and reject everything else with a 400 - including
application/x-www-form-urlencoded, which is what most form tools post. It now reads JSON (objects, lists or a bare value), form posts, file uploads, XML, CSV, JSON lines, plain text and query parameters, and reads the bytes rather than trusting the content type, because senders mislabel constantly. There is no payload shape that produces “this sample has no readable fields” any more.And you no longer have to publish a flow to test its webhook. The URL was rejecting your own test payloads until the flow went live - which meant publishing something you had not finished building in order to finish building it. A draft now accepts and stores payloads for mapping; publishing is still what makes it run.
Captured test data reads as fields and values
The Test data panel showed dotted paths and raw values. It is now a two-column table with the field name in plain words and the value formatted - dates as dates, yes/no instead of true/false - with the token to type by hand on hover.
Four fixes
- Add another step did nothing on a flow that was still just its trigger.
- Listen for test data took two clicks: the first one started listening and the panel immediately said it had not.
- The trigger tile on the canvas was the same orange bolt whatever the flow listened to, so every flow looked identical on the board. It now shows its own trigger’s icon and colour, matching the picker.
- The engagement condition and the meetings booking-page filter were never saved. You set them, the flow autosaved, and they came back empty - so those flows ran on every booking page and every engagement type. Both persist now.
- Email Infrastructure
You can send from your root domain without touching your website
If your website lives at
acme.com, you could not send frominfo@acme.com. Not because of anything to do with DNS - because of us.What was wrong
A domain had to be verified before you could send from it, and verifying meant pointing the domain at Solstral and waiting for a certificate. That is the right requirement for a domain serving your website or your CRM login. It is the wrong one for email, and at a root domain the record it asks for is your website.
So the customers most likely to want a root-domain address - anyone with a live marketing site - were the ones who could never have one. The product was telling them their DNS could not do something their DNS was perfectly capable of.
What changed
Proving you own a domain and pointing a domain at us are now two separate things. Sending needs the first. Hosting needs both.
Every record email asks for sits on a subdomain -
_domainkey,bounce,link,_dmarc. Nothing is added or changed at the root, so the record serving your website is untouched and so is the MX record carrying the mail you already receive. That was always true; the product just would not let you act on it.Adding a domain now asks one question: is it for sending email, or for hosting a website or the CRM? The answer decides which records you are asked for, and it is not a decision you can get stuck on - attaching a site to an email-only domain adds the hosting records at that point.
One set of records, one sitting
Your DKIM records are themselves proof you control the domain: nobody can publish them on a zone they do not hold. So there is no separate ownership record to publish first and no second trip to your DNS host - you publish the records for sending and the domain verifies on those.
The bounce address is also set up automatically now rather than waiting behind a toggle. Without it your SPF authenticates against Amazon’s domain instead of yours, which leaves DMARC relying on DKIM alone. It has always been available; it now arrives in the same list as everything else, so there is one visit to your DNS panel instead of three.
The DNS screen tells you which record is wrong
It used to be a flat list of name-and-value pairs with no status on it, sitting under a separate panel that reported status per feature. Nine records, one typo, and the only thing on screen was that the domain was still pending.
It is now one list, grouped by what each record actually does for you - Required (nothing sends without it), Recommended (it sends, but lands worse) and Optional - with a light on every row: green when we can see it in your DNS, amber when we cannot yet. Each record opens to show what to paste and says in one line why it is being asked for. Optional extras start collapsed, so a domain that is sending perfectly stops looking like it has six unfinished jobs.
And an address with no mailbox behind it
Adding
info@orhello@used to send a confirmation link to an inbox that does not exist. There has always been a path for organisation-owned addresses that needs no link - the verified domain is the proof - but it lived in a different card, so nobody found it. Say the address belongs to the organisation rather than to you and it is added straight away, with replies routed into the CRM and threaded onto the right record. - CRM
Extra workspaces are now a plan you pick - and two tabs finally work
One login has opened several workspaces for a little while now. Three things about that were wrong, and all three are fixed.
An extra workspace is a purchase, and you choose the plan
Creating a second workspace from the switcher used to drop it on the Free plan. That is a strange thing to hand somebody who already pays you, and a stranger thing to leave lying around: a new workspace is a fresh set of free limits, and nothing stopped anyone collecting them.
Now Create workspace opens a page that shows the same plans the pricing page sells, and you choose one. Monthly or annual, side by side, with the limits that actually differ between them. Free is not on the list - an additional workspace is something you buy.
Because the plan is charged for up front, the workspace is not created until the payment goes through. There is no half-made CRM sitting on the wrong plan waiting for an upgrade nudge, and no read-only shell you cannot even set up.
Your card is already on file, so we do not ask for it again
Billing details belong to the person paying, not to one of their CRMs. Your card, billing address and tax number now sit with your account and every workspace you pay for bills against them - so a second workspace is a confirm step rather than a second card form. Each workspace keeps its own subscription and its own invoices, and can be cancelled on its own.
Trials are counted per person. If you have had one, your next workspace starts on the paid plan immediately - you have already seen what the trial was for.
Two tabs, two workspaces, both correct
Until now the workspace you were in belonged to the session, so switching in one tab quietly moved every other tab with it. We used to catch that with a warning that stopped the stale tab. The warning is gone, and so is the reason for it: each tab now acts in the workspace it is showing, whatever the others are doing. Open one client in one tab and another next to it.
Invoices arrive as invoices
Payment receipts now carry the invoice PDF as an attachment, plus a link that opens it without signing in - so whoever files them does not need a CRM login to do it.
- Email Infrastructure
You can now require encryption on mail sent to your domain - carefully
Five days ago we shipped TLS reporting and said the point of it was to make it safe to require encryption later, rather than merely prefer it. That is now on offer.
What it does
MTA-STS publishes a policy that tells every other mail server two things about mail addressed to your domain: it must be delivered over an encrypted connection, and it may only be delivered to the mail servers you name. A server that cannot do both stops rather than falling back to sending in the clear.
Hosting that policy is the reason most products skip this - it has to be served over HTTPS on a subdomain of your domain, with a valid certificate. We do that for you. You publish two DNS records, we serve the policy and issue the certificate, and there is nothing to renew.
Why it starts in testing, and stays there until you have evidence
This is the only setting in Solstral that governs mail arriving at your domain rather than mail you send. Everything else on that screen affects your own campaigns; this affects invoices from your accountant, replies from your customers, and password resets from every other service you use. Get the mail-server list wrong and those messages are refused - not bounced back to you, but rejected at somebody else's server, silently.
So it opens in testing mode, where senders report failures and deliver anyway. All of the visibility, none of the risk. Turning on enforcement is a separate, deliberate step, and the button stays disabled until your TLS reports show a clean run - no failed connections, over a real window, with actual traffic behind it. If there is no evidence yet, the answer is no. Same order we take with DMARC: evidence before enforcement.
The list is on screen before anything is published
The mail servers your policy will permit are read from your own MX records and shown to you, by name, before you publish. That list is the whole blast radius, and you are the one who can tell at a glance whether it looks right.
We re-check it every day afterwards. If you move mail provider - Google Workspace to Microsoft 365, say - your MX changes, and a stored policy naming the old servers would become your outage. We notice, rebuild the policy and re-announce it so senders pick up the new list instead of enforcing the old one. If we cannot look your records up on a given day, we leave the policy exactly as it was rather than guessing.
Turning it off is a thing that happens, not a thing you delete
Deleting the DNS records does not cancel a policy. A sender that cannot fetch a policy keeps using the one it already has - so removing the records early locks in whatever was last published, for up to a week, with no way for anyone to reach it.
Switch off therefore publishes a withdrawal, and the screen tells you the date the records can safely come down. The Remove button is disabled until then. It is one of the few places in the product where we make you wait, and it is the difference between changing your mind and being stuck with it.
- Marketing
Subject lines read properly, and a reply to a test send comes back
Two things that quietly did not do what they looked like they did.
Campaign subject lines are shown as they will read. Every table listing a campaign printed the subject exactly as stored, so a subject written the way the tag menu suggests - Your monthly update from {{workspace.name}} - appeared with the brackets still in it on the dashboard, in the campaign list and in A/B results. Your brand name now fills in wherever the app already knows it. Tags that depend on the recipient are deliberately left visible, because with no recipient in view that is the honest answer to what a subject will say.
Replying to a test send now reaches the CRM. A test carried no reply address at all, so a reply went to the sending mailbox and vanished - and the only way to discover that was to send the real campaign, which is the one thing a test is meant to save you from. Tests now follow the campaign’s own reply setting, and the confirmation tells you where a reply will land.
Two related fixes: a follow-up email now inherits the timeline settings of the campaign that spawned it, instead of quietly logging nothing; and when a campaign both logs its sends and routes its replies, the send is recorded on the record once rather than twice.
- Marketing
The email builder: edit on mobile, and a toolbar that does what it looks like
Mobile is now a view you can edit in, not just a preview. The top-right switch used to run two separate ideas together - the width you are working at, and whether you were looking at the finished email - so the width most of your recipients actually read at was the one width you could not touch. You built at full width and hoped. Desktop and Mobile now choose the canvas width and both are fully editable; Preview is its own button and compiles the real email at whichever width you have selected. Multi-column rows stack on the mobile canvas, because that is what they do in the delivered email.
The formatting toolbar works from a selection now. Bold and italic behaved as long as your cursor was still in the block; the list and clear-formatting buttons looked identical and did nothing, because by the time you clicked them there was no selection left to act on. The builder now remembers the last text you selected and puts it back before the command runs - and the buttons grey out, with the reason in the tooltip, when there is nothing to act on. A link you add is also visibly a link: coloured and underlined on the canvas, as are bulleted and numbered lists, which previously applied correctly and looked like plain text.
Padding is per side. One horizontal value could not express an image bleeding to one edge, or text indented on one side only. Top, right, bottom and left are set separately on every block type. Text and heading blocks also gained justified alignment. Nothing built before this shifts.
A blank campaign opens on a starter layout - image, heading, paragraph, footer - so you begin by typing rather than by arranging, and the compliance footer is there rather than remembered. Every block is ordinary: move it, restyle it, delete it.
Also: dragging a populated columns block no longer flickers, the toolbar on a block inside a column stops overlapping its neighbours, Templates moved next to the test-send bar where it belongs, and the campaign list gained a send-date filter - upcoming, the last 7/30/90 days, or a range - which drives the calendar view too.
- Billing
Changing plan mid-month now does the fair thing in both directions
Two different situations were being treated as one.
Moving up happens immediately. You asked for more capacity because you need it now, so you get it now. We charge only the difference for the rest of the period, with credit for the time you had already paid for on the old plan, and your renewal date does not move.
Moving down waits until the period you have paid for ends. You bought this month at the higher tier, so you keep it: nothing is removed early, nothing is charged today, and there is no refund to chase. Your billing screen shows the date the change lands and what will be over the new plan's limits when it does - in your own numbers, before you confirm rather than a month later. You can call the change off at any point before the date.
Switching from annual to monthly follows the same rule, because a year has already been paid for. Switching plan during a trial charges nothing and never shortens the trial.
Billing is now five tabs rather than one long page - your plan, usage, change plan, discounts, and payment and invoices - and the plan comparison shows what each tier actually includes instead of only its price.
- CRM
Every way into a workspace now proves the email address
Signing up from the website has always emailed you a link before an account existed. Being invited into a workspace did not - accepting an invitation set your password and let you straight in, on the strength of the link alone.
That is sound when we put the link in your inbox. It is not sound for a CRM we set up and hand over: that link gets pasted into an email, a chat, or read down a phone, and whoever opens it has proved they hold a URL, not that they can read the mailbox.
So accepting an invitation now takes you back out to your inbox. You set your name and password, we email a single-use link, and that link brings you back to carry on. It is one extra click, and it means the address on a workspace is always one somebody demonstrably reads - which matters most for the owner, because that address is where password resets, billing notices and every security alert will go for the life of the account.
The check is enforced in one place that every page passes through, rather than at each entry point, so there is no door it does not cover. Accounts created before this exist unchanged and are unaffected.
Setting up a workspace also got two small fixes: a confirm-password field, so a typo can no longer lock you out of the account you are in the middle of creating, and a show-password eye on both fields.
- Billing
A clear path from a CRM we set up for you to a plan you choose
When we build and hand over a CRM, it runs on terms agreed with a person rather than a price list - no card, no subscription, and until now no way for that arrangement to ever end except by suspending the workspace outright.
There is now a date. After the conversation, we set the date your current terms run to, optionally the plan we suggested, and a note of what was actually agreed. All three appear on your own billing screen from that moment - the date, the suggestion, and our words rather than boilerplate.
Nothing changes on the day it is set. You keep working exactly as before, and you can choose a plan whenever suits: the day we speak, the day before the deadline, or any point between. Subscribing clears the date automatically.
If the date passes with no plan chosen, the workspace becomes read-only. Every record, email, report and file stays exactly where it is and stays readable - nothing is deleted, and nothing is deleted later either. Choosing a plan restores editing immediately, with nothing to restore.
You get an email a week before, and one on the day, both of which say the same thing this does and invite a reply if the timing is wrong.
- Email Infrastructure
Two invisible failures made visible: unencrypted mail, and email that looks machine-made
Both of these were already failing. Neither of them told anyone, which is the point.
You can now see when encryption fails
Mail between servers is normally encrypted. When it cannot be, the fallback is to send it in the clear anyway - and neither end reports it. An expired certificate on your mail host, a misconfigured MX record, a sending provider quietly downgrading: all of it is invisible from both sides, indefinitely.
TLS reporting is now offered on every sending domain. Publish one TXT record and the servers that deliver to you send a daily report of every connection where encryption failed or a policy did not validate. We collect and read them for you. One record, nothing to maintain, and genuinely no downside - it changes nothing about how your mail is handled, it only makes the failures visible.
This is also the groundwork for requiring encryption rather than preferring it. That is a much bigger step, because an incorrect policy makes mail to your domain undeliverable rather than merely unencrypted - so it is deliberately not on offer until these reports show a clean run first. Evidence before enforcement, the same order we take with DMARC.
Automated email now looks like a real system sent it
A sign-in notice from Solstral landed in a customer’s junk folder while every authentication check on it passed - SPF, DKIM, DMARC, all green. The reason had nothing to do with cryptography. Authentication proves who sent a message. The envelope is most of what says a real operator sent it, and that message had almost none of one: a bare address on the From line with no name in front of it, no plain-text version for clients that do not render HTML, nothing identifying the organisation, and nothing telling an out-of-office responder not to reply to it.
Every automated email the product sends now carries those things. Where we know your brand, it is your name on the From line rather than a bare address. Each message is also individually identified, so your inbox stops collapsing three separate sign-in alerts into one thread and hiding the two you needed to see.
Nothing here overrides a choice you made: an address you set, a subject you wrote, a campaign’s own unsubscribe link all stay exactly as they are. It fills in what was blank. And it is applied centrally rather than template by template, which is the actual fix - the original defect was one template quietly missing what fourteen others had.
- Email Infrastructure
Replies come back on your domain now - and nothing invites a reply that bounces
This started with a bounce. A reply to a test email came back rejected - “554 … Downstream server error” - because the address it was sent from was send-only. There was no mailbox behind it and no Reply-To pointing anywhere else, so the reply went to an address that cannot receive mail. The recipient thinks they answered you. You never hear from them. Two things changed. First, every email the product sends now carries a Reply-To that reaches a real destination - meeting invites and reminders, survey requests, subscription confirmations, support acknowledgements, and every test send. One-to-one mail and campaigns already did this; nothing else did, and each of those was one reply away from the same silent failure. There is one deliberate exception: if an address is one a person actually reads, it is left alone. Quietly diverting someone’s mail into the CRM because we could would be its own bug. Second, and optional: replies can now arrive on your own domain. Publish one MX record and replies go to reply.yourdomain.com instead of a shared address on ours. Why bother, when the shared address worked? Because a Reply-To on a domain unrelated to the one you send from is exactly the shape phishing takes, and filters and people both notice. To be precise about it: Reply-To is not part of SPF, DKIM or DMARC and cannot fail authentication - anyone telling you otherwise is wrong. It is a trust signal, not an auth check. But it is a real one, and it was the last piece of your email still wearing our name. It also made the address shorter, which sounds cosmetic and isn’t: on the shared domain the workspace has to be identified by a 52-character token in the address itself, which pushes past the length limit the standard sets once anything is added to it. On your own domain the domain identifies you, so the address is simply reply@reply.yourdomain.com - and it carries your brand name in front of it rather than arriving as a bare machine-generated string. Turning it off is safe. Replies fall back to the shared address, which has always worked and still does. Nothing bounces, nothing is lost, and the reply still threads onto the right record either way. - CRM
Flows says which step is wrong now - and stopped offering steps that did nothing
A pass over the flow builder aimed at one thing: making it readable without being taught. The save error that told you nothing is gone. Saving a flow with a half-filled condition answered “String must contain at least 1 character(s)” - technically correct, and useless across a flow with forty steps. It now says “Update record (‘Notify the owner’) - condition 1 has no field chosen”, opens that step, and outlines the exact control in red. The information was always there; the validator knew precisely where the problem was and the message threw it away before it reached you. Activation failures speak the same language, and every problem in the banner has a Show me link. The settings panel is half again as wide, and you can drag it wider. A condition is three parts - field, operator, value - and they were being crushed into a fixed 340 pixels; below a certain width they now wrap to a second line instead of shrinking to stubs. The list of 38 steps no longer sits underneath the step you’re configuring, so setting one up doesn’t mean scrolling past your own settings. Flow cards are cards again - Pause and Edit, with duplicate, rename, export, move and delete behind a menu. Test data now follows your trigger. Every captured sample records which trigger produced it, and the builder was ignoring that: switch from Record created to Form submitted and you carried on mapping fields from a record you would never receive. Samples for other triggers are hidden rather than deleted, so switching back brings them straight back. “Record updated” can now watch specific fields instead of firing on every change - leave it empty and it behaves exactly as before. And deleting a field tells you what it breaks, before you delete it. Which automations, which forms, which lists, each one linked, with the offending step named. Live automations block outright; paused and draft ones warn. Renaming a field has always been safe - the underlying key never changes - and the field editor now shows you that key so anyone writing it by hand uses the right one. Six steps were retired: Send SMS, Send WhatsApp / DM, Publish social post, Update product, Update stock and Do in parallel. Two of them had never had a settings panel at all - you could add them, and they could never be configured, and they silently did nothing. That was found by a new test that checks every step in the palette is wired end to end: a name, a settings panel, something that runs it, and a readable error when it isn’t finished. A flow that already contains a retired step still opens, still saves, and still runs everything around it - the step itself is marked in red as removed, with a delete button, rather than vanishing quietly. Social posting, WhatsApp and SMS all remain available where they belong; it is only the automation steps that are gone. - CRM
Four ways to split a flow became one
The flow builder offered Filter, If / else, Branch by value and Paths as four separate steps. They were four names for one function - send this record one way, send that one another - and choosing between them was a decision nobody should have had to make. There is now one step: Branch. Give it as many routes as you need, each with its own conditions, then say what happens when a record matches none of them: carry on, leave the flow, or take its own path. One route that leaves the flow is a filter. Two routes is if/else. Several routes on one field is branch-by-value. The panel tells you which of those you’ve just built, in a sentence, at the top. Nothing in your existing flows changed. An if/else you built last month still has its Yes and No connectors, still points at the same steps, still behaves identically - no conversion, no rewiring, nothing to check. The three older steps still run exactly as they always have; they simply aren’t offered when you add something new. Open one and it offers a Convert button that rewrites it as a Branch and reconnects every output to the same step it already went to. It is one click, it is optional, and there is no deadline. Where a step can’t be converted faithfully we don’t convert it - guessing at routing is worse than leaving it alone. The random split stayed separate, renamed A/B split, because it isn’t routing: it’s for running an experiment, and folding it in would have blurred the one genuinely different thing in that group. - CRM
Every automation run now shows what each step ran with, and what it changed
The Runs tab could tell you a step passed or failed and nothing else - and opening a run shoved every row below it down the page. Both are fixed. Runs are a table now, and clicking one opens a panel over the list rather than pushing it around. Inside: the data that started the run, then every step with its own duration, and - the new part - an Input tab showing what the step actually ran with. Not the template you wrote, the finished thing: “Follow up with Acme”, not “Follow up with {{record.name}}”. The step that failed opens expanded, because that’s the one you came to look at. And each step links to what it did - the record it created, the conversation it replied in, the list it added someone to, the API it called and the status it got back. The difference between “this run failed” and “this run failed because the HTTP step got a 422, here’s the response”. Runs from before today show “not recorded” rather than pretending to have an empty input. Elsewhere in flows: round-robin now works when your team is a set of linked records and not just a team-member field - that gap was why round-robin ownership looked impossible for a lot of setups; assigning replaces the current link rather than quietly adding a second, and someone who’s been deleted is skipped instead of silently taking their turn. Conditions can look beyond the record, so “only continue if the form said the budget is over 5,000” works without first saving that answer somewhere, and “only continue if we found nothing” is now a real duplicate check. “For each” offers you the lists you can actually loop over instead of asking you to know the syntax - and deliberately doesn’t offer the ones that would silently loop zero times. Setting fields is one list again, where typed text and data from the trigger go in the same box, instead of two panels that each set the same field without knowing about the other. And “Get stored value” and “Store a value” are one step called Stored value, with Read / Set / Increase. - AI Assistant
The email the assistant is writing now sits beside the chat - and it won’t overwrite your words
Asking the assistant to draft an email used to give you the email in the conversation. Ask for it shorter and you got a second one. Ask again and you had three, all nearly identical, scrolling away above you, and no way to tell which one was real. There is now one draft, in a panel beside the chat. It stays put while the conversation scrolls, it survives a reload, and every change goes into that one email rather than producing another copy. The part that matters is what happens when you’ve typed into it. Once you’ve touched the draft, the assistant stops writing into it. Ask for a rewrite and the change arrives as a suggestion - your version stays exactly as you left it, with the proposed wording shown above it, struck-through before and plain after, and two buttons: use theirs, or keep yours. Nothing is lost either way. That is deliberate and it isn’t caution: an assistant that silently replaces a half-written email in a panel you weren’t looking at is one you switch off, and rightly. It also won’t merge the two versions into sentences neither of you wrote, which looks like it worked and is worse. It says so honestly, too - “I’ve suggested a rewrite, it’s waiting for you” rather than “done”. Send goes from the panel, and sends exactly what you were reading: if anything moved the draft between you reading it and pressing the button, it tells you and asks you to look again rather than posting something you never saw. It names what’s missing - no subject, no recipient, empty body - while you’re writing, instead of at the moment you press Send. Your permission to send from that address, and whether the recipient has unsubscribed, are re-checked at the moment of sending, on exactly the same path the rest of the product uses. - Billing
See exactly what’s spending your AI credits, and who
Credits were being spent correctly all over the app - the assistant, the chatbot answering visitors, AI steps inside automations, social drafts, campaign checks, inbox reply drafts - but the billing page could only tell you the total. “Why did we use 4,000 credits last month?” had one answer: “the AI did.” Billing now itemises it. Two charts under your credit balance: what’s spending them, and who’s spending them, over 7, 30 or 90 days. The row that usually explains the bill is the one with no name on it. The chatbot answers strangers on your website, and automation AI steps run at 3am whether or not anyone is watching - both are grouped as “Automatic”, because they genuinely aren’t anybody’s doing, and they’re the easiest spend to not notice. Attribution is written by the same code that charges the credit, so a feature can’t bill you and stay out of the chart - if you were charged for it, it’s in there. Voice input also now costs a credit like every other AI action, and tells you if you’re out before recording rather than after. The per-person view is admin-only. - AI Assistant
Describe a form and the assistant builds it - wired to the right fields
“Make me a contact form that saves to Contacts, with name, email, company and a message.” It builds it, puts first and last name side by side, and connects every answer to the actual field it belongs in. It always builds a draft. Publishing is a separate step you confirm, so asking for a form can never put a page on the public internet - you look at it first, and it has no working link until you say so. It refuses to guess at fields. If you ask it to save an answer somewhere that doesn’t exist, it says so and lists the fields that do, rather than saving a form that looks perfect and quietly discards that answer on every single submission - which is the kind of thing you discover months later when you notice none of your leads have a phone number. It also tells you if a question isn’t being saved anywhere at all, in case that was deliberate. And it won’t give you duplicates. Forms default to updating the existing person when someone fills it in twice, matched on their email address, instead of creating a second copy of them. - AI Assistant
Hand the assistant a spreadsheet and it works out the columns - and what’s wrong with them
Import has always guessed at your column names. It now gets a second opinion. Paste a CSV to the assistant, or point it at one, and it proposes a mapping column by column, tells you which headers it couldn’t place, and - the useful part - tells you what’s wrong with the data before you import it. It cleans what people actually type.$1,200.00,(1,200)and1200 AUDare all twelve hundred.+61 (0) 400 123 456and0400-123-456are both phone numbers.Jane Doe <jane@acme.com>is an email address.N/A,-andunknownare all empty.closed-wonis your existing Closed Won stage. Blank rows and the header line some exporters repeat halfway down the file are dropped rather than imported as records called “Email”. What it won’t do is guess. Dates read day-first, the way the rest of the product does - but04/25/2026could only be month-first, so that row is read that way and says so. A percentage is flagged rather than divided by 100, because we don’t know whether the field wants 15 or 0.15 and being wrong there is wrong in every row at once. A value matching two dropdown options asks you which. Anything unreadable keeps its original value and gets listed - one odd cell never fails a row, and nothing is ever silently rewritten: every change is shown, grouped and counted, for you to approve before a single record is written. - AI Assistant
The assistant can now reach every part of the app
The last gaps are closed. It can answer for itself now: “how much AI have we used, and who’s using it?”, “what have I missed?”, “is anyone actually visiting the site?”, “did that automation fire - is anything failing?”, “how’s the ticket queue?”, “why isn’t my email reaching them?”. That last one is the quiet one: an address that has unsubscribed or bounced will never receive anything, and until now nothing would tell you. Teams, not just roles. “Give Sam access to Deals” used to have no good answer - the assistant could only change someone’s role, and promoting people to admin to fix a visibility problem is how workspaces end up with five admins. It now manages teams properly, and tells you up front if team permissions are switched off, so you don’t set access and wonder why nothing changed. And it can reply to customers in the shared inbox - confirm-gated, because that goes to a real person and can’t be recalled. It sends through exactly the same path the inbox screen uses, which matters more than it sounds: on social channels, writing a reply without properly delivering it means you see it in the thread and your customer never does. - AI Assistant
The assistant now remembers your business between chats
Every conversation used to start from nothing. Tell it on Monday that you only sell to trade, and on Tuesday it asks again. It now keeps notes. When you tell it something that will still be true next week - what you sell, when your busy season is, what you call your customers, which tools live outside the CRM, how you like your answers - it writes it down and starts from there next time. There are two sets of notes: one about the business, shared with everyone and editable by admins, and one about how you personally work, private to you. Ask it “what do you remember about us?” and it will tell you, exactly. Tell it to forget something and it forgets it, and says which lines went. Two deliberate limits. The notes are capped - when they fill up, older ones are compressed rather than allowed to grow - so this costs a rounding error per message rather than a little bit more every day forever. And it remembers facts, never instructions: anything phrased as a standing rule (“always do X”, “never ask before Y”) is refused. That’s not fussiness. Notes get written from things it read in your records and emails, and a remembered instruction would be a way for text someone else wrote to change how the assistant behaves in your chats, weeks later, with nobody watching. - AI Assistant
The assistant can add fields now, not just read them
“Add a renewal date to deals.” “Contacts need a lead-source dropdown with referral, website and event.” “Deals should link to a project.” It does them - including the fiddly ones: a link between two objects creates the matching field on the other side, a lookup checks it can actually read the field you named, and a formula is validated against your real fields before it’s saved rather than silently computing nothing on every record. This is the thing that was holding the rest back. Ask it to build a form and map an answer to a field that doesn’t exist yet, and its only option used to be to tell you to go and make it first. It won’t delete fields. Deliberately: deleting one destroys that data on every record at once, and deleting a link tears down the whole relationship. Adding and renaming are reversible; that isn’t, so it stays a decision you make on the screen with the warning in front of you. It also won’t let you end up with “Phone” and “Phone number”. Ask for a field that already exists under a slightly different name and it points at the existing one instead of quietly making a second. Renaming is always safe - the underlying key never changes, so reports, forms and automations keep working. Admin only: editing a value and changing what values are possible are different powers. - AI Assistant
Ask the assistant to set up your company email, and it sets up your company email
Until now, asking the assistant how to send from your own address got you a link to Settings. Which is what a search box does. It now does the work. Ask it, and it takes the domain from the address you mentioned, registers it, and hands you the DNS records in the chat - each one with its own copy button, sorted so DKIM (without which nothing sends) doesn’t look like the same kind of thing as BIMI (a logo). Tell it you’ve added them and it re-checks, and tells you which specific record is still outstanding rather than just “not verified”. When ownership goes green it switches sending on and hands you the DKIM records the same way. Open Settings afterwards and you’ll find it exactly as if you’d done it by hand - because it did do it by hand: every one of these runs the same code the settings screen runs, so there is no second way for the setting to be written and no state the assistant can leave behind that the screen can’t show. And a new question it can answer: “why didn’t my email send?” now gets a real diagnosis - whether a domain is verified, whether DKIM is outstanding, whether you personally have an address you’re allowed to send from - and one next step rather than a list of everything imperfect. Permissions are unchanged: verifying a domain is an owner/admin action, so if you’re a member the assistant tells you precisely what to ask your admin for instead of refusing. - AI Assistant
Ask the assistant to change a setting, invite someone, or find out who changed what
It can now operate the settings screens rather than pointing at them. Any workspace setting. “Show dates as day/month/year”, “make members read-only for records”, “require two-factor for admins”, “only let people with an acme.com address be invited” - it reads the current value, shows you exactly what would change from what, and asks before doing it. Every value is checked before anything is written, so one bad value changes nothing rather than leaving half a policy in force. And people. Invite someone with the right role, change a role, disable a sign-in, remove someone - with the same rules the screen enforces: an owner can’t be demoted or removed, nobody can change their own role, and re-enabling someone re-checks your seat count. It also reads the audit trail now: “who changed this deal’s value?”, “who removed Sam?”, “what did the assistant itself do yesterday?” - all answerable in chat. Anything that decides who can log in asks for confirmation first, even where clicking the same toggle in Settings doesn’t. A wrong field value on a record is visible on the record; a wrong security policy is only visible when somebody can’t get in. - AI Assistant
Ask the assistant what’s overdue, and it knows
The helpdesk was the last big screen the assistant couldn’t see. Now: “what’s overdue?”, “what’s unassigned?”, “what’s on my plate?”, “raise a ticket for Acme about the failed install”, “assign #1042 to Sam”, “mark it solved”. It reports the SLA state in words - on track, due soon, breached - rather than making you read timestamps. It respects your mailbox permissions exactly. A shared inbox is divided up on purpose, and the assistant only ever sees tickets in mailboxes you have access to. Ask about one you can’t see and it says there’s no such ticket - because confirming a ticket exists but isn’t yours to read is a disclosure in itself. It also won’t assign work to a teammate who can’t open the mailbox it lives in; that’s worse than leaving it unassigned, because it looks handled. And it keeps your reporting honest. Raising a ticket’s priority re-targets its deadline from when the ticket was raised, not from now - so an already-late ticket stays late instead of quietly getting a fresh window. Solving one tells you it has emailed the customer a satisfaction rating, so nobody marks a ticket solved “just to see”. - AI Assistant
Talk to the assistant instead of typing
There’s a microphone button in the assistant composer now, in both the full chat and the floating panel. Press it, say what you want, press stop - and the words appear in the box. They appear in the box, not in the conversation. The transcript is never sent automatically: you read it, fix the word it got wrong, and press send yourself. That’s deliberate rather than cautious - an assistant that can archive records shouldn’t act on a sentence nobody checked, and “did we hear back from Dell?” is one mishearing away from something you’d rather it didn’t do. The recording is never stored. It exists in memory for as long as the transcription takes and is then gone - not saved to the conversation, not written to disk, not in any log. It goes to the same provider that already powers the assistant, so no new company is involved, and cancelling means the audio never leaves your machine at all. It works in Chrome, Safari and Firefox, stops itself after five minutes if you forget, and if your browser blocks the microphone it tells you where to unblock it rather than just failing. - AI Assistant
Ask the assistant to look at your website - it reads the actual page
“Is the call to action on my home page strong enough?” It reads what the page really says - headings, copy, every button and where each one links - and tells you. The most common problem it finds isn’t the wording: it’s a button with perfect copy that links nowhere, which you can’t spot by reading the page. It also flags a page with no call to action at all, and one where four different asks compete for attention (repeating the same ask down a long page is good practice, and it knows the difference). SEO, written for you and filled in. Ask it to check your site and it lists every page with a missing, too-long, too-short or duplicated search title or description, worst first. Ask it to write them and it drafts from the page’s own headline plus what it knows about your business, shows you, and saves them when you agree. It sticks to what’s checkable - whether your description gets cut off mid-sentence in search results - rather than claiming things about rankings nobody can verify. Copy changes go to the draft. When it edits a headline or a button label it changes exactly that one thing, leaves every image, colour and layout choice alone, and saves it as a draft - your live website doesn’t change because of something said in a chat. You publish when you’re happy. The one exception is SEO on an already-published page, which is live immediately - and it tells you that before doing it. - AI Assistant
“Is it too early to message them again?” - now an answerable question
Ask the assistant about any contact and it answers from what actually happened: when you last emailed, when they last replied, when anyone last spoke to them, and how many messages have gone unanswered. The answer is the same every time you ask it. It’s worked out from the record’s history rather than judged in the moment - an assistant that says four days is fine on Monday and too soon on Thursday isn’t advice, it’s a coin toss. And it knows when to tell you to stop. The suggested gap widens with each unanswered message - a few days, then a week, then a fortnight - and after four with no reply it says so plainly: another one is more likely to cost you the relationship than win an answer. Most bad outreach isn’t badly written, it’s the fifth one. If they’ve unsubscribed or bounced, that’s a flat no regardless of timing. If they replied after your last message, it just says the ball’s in your court. - Reporting
Reports can finally answer “who have we gone quiet on?”
The most-asked reporting question there is was the one report builder couldn’t answer. Activities - notes, calls, emails, meetings - live in their own table, and a report runs over one source at a time, so there was no way to reach an interaction date from a contact or company row. You could chart email volume by month, but you couldn’t ask which customers hadn’t heard from anyone since March. Every object now carries its own recency, derived from its real timeline. Five new fields on contacts, companies, deals and every custom object:Last activity,Last email sent,Last reply received,Last call or meeting, andDays since last activity- the last of which is a number, so you can filter on> 180and group the result by owner. Inbound is deliberately separate from outbound. “We emailed them” and “they wrote back” are different facts, and only one of them is engagement. And the mirror image: the Activity and Email report sources now exposeRecordandRecord type, so you can group the interactions themselves by who they were with - your ten most-emailed accounts last week, in one report. A record with no activity at all reports as empty rather than as zero days, because never contacted is not the same as contacted today. The AI assistant picks all of this up automatically and will stop hedging that it’s working from recent record edits rather than a verified interaction - it now has the verified interaction. - AI Assistant
Send it in three weeks - unless they get back to you first
Draft an email with the assistant and tell it when to go: “in 3 weeks”, “next Tuesday”, “tomorrow”. It works out the date, shows it to you, and asks before queuing anything - because the send happens when nobody is watching. The useful part is the condition. “Follow up in three weeks unless they reply first” is a real setting, not a reminder to check. If they write back before then, the follow-up doesn’t go, and it tells you why it didn’t - “they replied on the 3rd” - rather than silently doing nothing, which is indistinguishable from a bug. You can also make it “unless anything happens on that record at all”, and schedule to several people in one go, then cancel the whole batch with one instruction. Two things it deliberately won’t do. It won’t treat a colleague’s email about the same customer as “they replied” - you still owe them the follow-up. And it re-checks, at the moment of sending, that you’re still allowed to send from that address and that the recipient hasn’t unsubscribed in the meantime. Three weeks is long enough for both of those to change. - Email Infrastructure
Every sending domain gets its own page - and the records it was asking for now actually appear
Email setup had grown past the space it was living in. Every sending domain - its DNS records, its authentication, its warm-up, its footer - was crammed into one row of a list, and the symptoms were exactly what you'd expect from that. Each sending domain now has its own page. The email settings screen is a list of domains at a glance: status, DKIM / SPF / DMARC / BIMI as four dots you can read in a second, how many records are still outstanding, and warm-up progress if it's running. Click one and you get everything for that domain in one place. Three things that were plainly broken are fixed. Turning on the bounce address told you to publish an MX and a TXT record, and then - the moment you reloaded the page - didn't show you the records. It sat there saying "waiting on DNS for bounce.yourdomain.com" with nothing to copy. The records now appear every time, alongside the DKIM ones, because a trip to your DNS host should cover everything at once. DMARC now offers you a record in every situation where there's one worth publishing. Previously, if you sent from a subdomain likemail.acme.comandacme.comalready had a DMARC record, you were shown nothing at all - you inherit the parent's policy, so there was technically nothing missing, but you also had no way to give the sending subdomain its own. And when you were monitoring atp=none, the page told you to "move to quarantine once your reports look clean" without ever giving you the value to move to. Both now hand you the exact record. We still never publish or change a DMARC record for you - it governs every system that sends as your domain. And BIMI is finally reachable. The logo-in-the-inbox setup existed but had no upload button anywhere, so there was no way to use it. You can now upload your SVG, and it's checked against BIMI's requirements the moment you choose the file - square, no animation, no scripts, a<title>, the right profile declared - rather than being rejected by a certificate authority days later with no explanation. The warm-up ramp now counts everything, and shows you where it's up to. It was only counting campaign sends, which meant marketing emails sent from a flow went out completely uncapped and invisibly - a brand-new domain limited to 20 a day could be pushed well past that without anything noticing. All bulk mail now draws on one budget, one-to-one and transactional mail still always sends but counts toward the total, and the domain page shows "Day 3: 47 of 75 sent today". Nothing is ever dropped for being over budget: it waits for tomorrow's allowance. A marketing footer per brand. The postal address every marketing email legally has to carry belongs to whoever is sending it, so if you send as two companies you can now set the address, privacy policy and terms per sending domain, with the workspace defaults filling in anything you leave blank. It resolves per email, so a campaign rotating across brands puts the right address in each one. Replies now find the right mailbox. A reply to something you sent came back to a single workspace-wide address, which meant replies tosales@andsupport@arrived indistinguishable and unassigned. They now route to the mailbox that owns the address, and auto-assignment runs on them like any other message. Two smaller things. The one-click "add these records for me" button for DNS providers that support it now appears on the email screen, next to the records it would be adding, instead of only on the Domains tab. And a domain whose records have all gone green but which still shows as awaiting DNS now says why - the certificate is issued after your DNS is confirmed, which takes its own few minutes - rather than looking stuck. - CRM
One date picker across the whole product, and folders you can rename and safely delete
Two things that were never anyone's headline feature and were quietly costing everyone time. Every date field in Solstral now uses the same calendar. Until today they were the browser's built-in date boxes, which meant the CRM looked like a different application depending on which browser you opened it in, ignored your theme entirely, and in some of them offered no calendar at all - just three grey boxes you tabbed between. There is now one picker: a proper month grid in your workspace's colours, with today marked, Today and Tomorrow shortcuts, a clock column for the fields that need a time, and past or future dates greyed out where a date genuinely can't be chosen - a booking window's end date won't offer a day before its start. You can still just type. The field takestoday,tomorrow,+7,+2w,25/12or a full date, and reads it when you leave the field - if it can't read what you typed it leaves your existing date alone rather than guessing. Dates are read the way they're written here: 3/4 is 3 April. One deliberate exception: public forms on your own website keep the native control, because on a visitor's phone the operating system's own date wheel is better than anything we can draw, and those pages carry your styling rather than ours. And folders can now be renamed and deleted everywhere they exist - flow folders, website folders, the Content Library, email templates, and the label groups in your shared inbox. Some of those could already do both, some could only delete, and the flow folders couldn't be renamed at all: a typo in a folder name was permanent. Every rail now has the same pencil and cross on hover. Deleting a folder tells you what's in it first. If it holds anything, the confirmation names the count - “Onboarding holds 3 flows” - and states plainly that deleting the folder keeps every one of them and moves them to Unfiled. That was always true; it just wasn't said, and “Delete folder?” reads like it will take the contents with it. Nothing inside a folder has ever been deleted along with it, and nothing is now. Renaming also catches a name you already have in that spot before it fails, rather than after. - Email Infrastructure
One place to add a domain - and email authentication that tells you what actually matters
Domains could be added in two places: Settings → Domains, and again inside Settings → Email. They were separate lists that knew nothing about each other, so the same domain could exist in both, in different states, with two sets of DNS records and two Check buttons. There is now one front door. You add a domain once, in Settings → Domains, and prove you own it once. Everything else borrows it: turn on sending in Email, attach it to a website in Sites, or make it the address the CRM itself is served from. You are also no longer asked what a domain is for while you're adding it - a question that came before the domain was even verified, and which you had to answer before you could know. Adding a domain proves ownership and nothing else; what it's used for is a consequence of using it, and the row now states that in plain words rather than in badges. A fix that had been quietly infuriating: a domain waiting on DNS couldn't be removed. If you added one, marked it for the CRM app and mistyped it, it was stuck in your list permanently - it was serving nothing, but being intended for the app counted as being in use. Remove now works unless something would genuinely break, and when it won't, it tells you exactly what to undo first: the website publishing on it, the sending addresses using it, or the CRM being served from it. Email authentication is now ranked rather than listed. DKIM, SPF, DMARC and BIMI used to look like four equally mandatory chores. Each now says what it does, how much it matters and what happens if you skip it - DKIM required, SPF and DMARC recommended, BIMI optional. Two are new. An optional bounce address puts SPF on a subdomain you own instead of Amazon's, so your mail passes on either SPF or DKIM rather than DKIM alone; it only ever touches a dedicated subdomain, so it can't disturb the SPF record covering your everyday business email. And DMARC is now read and explained - including the trap where a sending subdomain inherits its policy from the root domain, or has it overridden by ansp=tag, which is how people end up atp=rejecton paper and unprotected in practice. We never publish or change your DMARC record: it governs every system that sends as your domain, not just us. Where you have none, we offer a monitoring-only value to copy. BIMI - your logo beside your emails - is there too, deliberately labelled optional and gated on DMARC actually being at enforcement across all your mail, which is the usual reason a BIMI setup silently never shows up. And who owns a domain is now decided by DNS, not by who typed it first. Adding a domain used to claim it globally: if any other workspace had already addedacme.com- verified or not, in use or not - you simply couldn't, and there was no way through except contacting us. Registering a domain now claims nothing. Several workspaces can be part-way through setting up the same one, and the first to publish the DNS record keeps it; the others are told plainly that it's gone rather than being left with a domain that never turns green. If a verified domain later loses its DNS record, it releases the name for whoever proves it next. Finally, one-click DNS setup is live for providers that support the open Domain Connect standard: you approve the records at your own DNS provider and they're created there, with no credentials ever reaching us. - CRM
Report a bug from the assistant, a signup that no longer dead-ends, and error messages that name the problem
You can now report a bug or ask for a feature by telling the assistant. Describe what went wrong in your own words and it files the report - with the page you were on and any errors your browser recorded already attached, so you never have to go looking for them. Anything resembling a password or key is stripped out first, and the report is saved in the CRM before it’s emailed, so it still reaches us if the emailing part is what’s broken. Signing up no longer dead-ends. Starting from a plan on the website took you to a page that could only add you to an existing workspace, so a brand-new customer submitted their email and heard nothing. One address now does both: if your company already has a workspace you join it, and if it doesn’t we start you a new one. If we can’t deliver the verification email we say so on the spot instead of showing “check your email” for an email that was never sent - and there’s a “send it again” link on the confirmation screen. Starting a signup with an address that already has an account now gets a “you already have one, here’s the sign-in link” email rather than silence. “Validation failed” now says which field. Every form error that used to be those two words now names the field as it appears on screen and what’s wrong with it. Automated social replies are labelled. Replies published by a comment rule now carry a visible automated-reply line, honouring the per-account setting that previously had no effect; replies a person writes or approves are untouched. The messaging-window warning in the inbox now matches the platform’s actual rule - a blocked Instagram or Messenger thread explains that the seven days a human agent gets have run out, instead of quoting a 24-hour limit you’d just been told didn’t apply. And the AI assistant works again on the current OpenAI models, where every tool-using request was failing; when it does hit a problem it now explains it in plain terms instead of printing the provider’s raw error. - CRM
The waitlist is gone - start a free trial and you're in today
Until now, clicking “Start free” put you on a waitlist and you waited for us. That's over: signing up now creates your workspace immediately and starts a free trial of the full product. Not a demo, not a sandbox with the good parts removed - the real CRM, with real limits, on your own data. We ask for a card at signup so the trial rolls straight into a paid plan when it ends rather than stopping dead in the middle of your week; nothing is charged until the trial is up, the exact date and amount are shown before you enter anything, and cancelling is one click from your billing settings. The trial is now a plan in its own right, which sounds like an internal detail and isn't: it means the trial has its own published limits on the pricing page, the plan it turns into is named up front, and both can change without anything being buried in code. If you cancel, your workspace drops to the Free plan - your data is never deleted, it's all still there and still readable, and anything you're over the Free limits on simply stops until you upgrade again. And if you're one of the teams we set up and invoice directly, none of this changes: you're on a plan we assigned, with no Stripe subscription and no card on file. - CRM
Flows and agendas now share one record, and the assistant can build an agenda for you
A small but important correctness fix, and a shortcut. First the fix: a conversation flow's Capture lead step used to match or create a contact entirely on its own. Now that a bot can also be running an agenda in the same conversation, that was a way to end up with two contacts for the same person in one chat - the agenda creating one from an email, the flow creating another from a name. Both paths now bind to the same record: if the conversation already has one, the flow fills the empty fields on it rather than creating a second, and it doesn't overwrite anything already there. Flows also gained a Set agenda step, so a scripted path can hand goal-seeking back to the bot once the scripted part is done - the agenda picks up on the next turn, so you never get two questions in one reply. Second, the shortcut: the AI assistant (and any MCP client) can now list, create, test, publish and assign agendas. "Build me a bot that pre-qualifies leads from the pricing docs" is one instruction instead of a tour of four screens. Testing through the assistant is a real dry run - nothing is written and no credits are spent - and publishing is the only one of those that changes what customers experience, so it's the only one gated as a live change. - CRM
Every value your chatbot writes now says where it came from - plus dry runs and agenda stats
When software fills in your CRM for you, the obvious question is how do you know that's right? Agendas now answer it. Every value a bot learns is recorded with its provenance: whether it matched a recognised format (an email, a phone number, an amount) or was inferred by AI - and if so, which model and how confident it was - along with which record field it was written to, or why a write was refused. Open a chat conversation in the Inbox and you'll see a panel listing what the bot has gathered, with values it inferred marked AI, so an agent taking over knows which details to double-check rather than treating everything as equally solid. Fields you mark as personal data are redacted in that log - an email shows ass…@acme.com, a phone as its last four digits, free text as a character count. The real value still goes to the record where it belongs; the log keeps enough to recognise a value you already know and not enough to learn one you don't. Deliberately not a hash, either, since a hash of an email address is still a stable identifier. You can also set a retention window per agenda, after which the value payloads are cleared while the trail of what was written, when, by which model is kept - because the audit question is about the write, not the value. Two more things arrived with it. Dry runs: type a few messages a visitor might send and see exactly what the agenda would extract, which question it would ask, where each value would land, and how the person would qualify - with nothing written, no AI called and no credits spent. It also flags which turns would have needed AI, so you can see what an agenda costs before you turn it on. And stats: per-field asked / answered / written counts, completion and qualification rates, median time to complete, and the share of values that came from AI versus a free format match - a number that's both a cost signal and a trust signal. Agenda runs are also a first-class report source now, so qualification rates by agenda, by channel or over time work in the normal report builder and on dashboards, rather than being locked in a statistics panel. - CRM
Give your chatbot a job: gather details, qualify the lead, build the record as it talks
Your widget could answer questions. Now it can also get something done. An agenda is a set of objectives you give a bot - gather these details, qualify against these rules, then do this - that it pursues while it answers, rather than instead of answering. Start from a preset (Capture lead, Pre-qualify a lead, Book a meeting, Support triage) or build your own, and assign one or more to any bot. The behaviour is deliberately restrained, because a bot that interrogates people is a bot people close: it answers the visitor's actual question first and appends at most one follow-up question, it stays quiet for the opening turns so someone can say what they came to say, it never asks the same thing twice in a row, and it gives up on a question after a couple of tries and moves on. As it learns things it builds one record - not a new contact each time. The first identifying detail matches or creates the contact, and everything learned afterwards is added to that same record. It only ever fills fields that are empty: if a salesperson already typed a phone number, the bot won't replace it. And it can only write to the fields the agenda explicitly names, checked against your actual schema before it's allowed to go live, so an agenda can't quietly start writing somewhere you didn't intend. Most of what it extracts costs nothing - emails, phone numbers, links, amounts and menu choices are recognised outright, and only genuinely free-form answers use AI, and only when nothing else was found that turn. Qualification reuses the same condition builder as flows: score answers, set a threshold, and the visitor comes out qualified, disqualified, or - importantly - unknown. A lead is never binned for a question you never got round to asking. Qualifying, disqualifying and completing all fire automation triggers, so routing, notifications and follow-ups hang off them like anything else. Finally, agendas are versioned. You edit a draft and publish when ready; a conversation already underway keeps the rules it started with, so changing an agenda can never rewrite the terms mid-conversation. Publishing shows you exactly what's changing first, and because every past conversation still points at the version it ran under, you can always answer "what were the rules when this lead was qualified?" - CRM
Choose who answers your chat - and the bot now knows to get out of the way
A chat widget with a bot on it used to have exactly one behaviour: the bot answered everything. Now you choose, per bot, from four answering modes. AI first, then a human is the default and works as before - the bot answers and hands over when it isn't confident. AI only never escalates. Humans only keeps the bot silent, so a widget can carry a bot for after-hours without using it during the day. And the one most teams actually want: humans while we're open, AI otherwise - visitors reach a real person while someone is online and you're inside your office hours, and outside that the bot picks up instead of leaving them waiting until Monday. Both conditions have to hold for a human to take it, so an open-hours window with nobody actually online still gets answered. Underneath all four is one rule that can't be switched off: the bot stops the moment a teammate steps in. Replying to a conversation, or simply assigning it to yourself, takes it over - from that point the bot won't add another word to that thread, no matter which mode it's in. Previously this was inferred by checking whether anyone had replied yet, which worked but couldn't be undone; now it's an explicit state you can see and reverse. The conversation header in the Inbox shows Bot handling or You have it, with Take over and Return to bot beside it - so you can silence the bot before you start typing, and hand a resolved conversation back afterwards. Handing a live customer back to a bot is recorded in the audit log, because it's a real decision. Visitors can also just ask: "can I talk to a human" and similar phrasings route the conversation to your team. That check is deliberately conservative - it looks for an actual request rather than any mention of people, so asking whether you have a human resources module doesn't silence the bot. One quiet fix came with it: a widget outside office hours with a bot attached that wasn't going to answer used to send the visitor nothing at all. Your away message now appears whenever the bot isn't taking the turn. - CRM
Several knowledge bases, and each chatbot only reads the ones you give it
Your widget's knowledge used to be one undivided pile: every published article was readable by every bot on every widget. Now you can keep as many separate knowledge bases as you like - product docs, pricing and policies, reseller-only material, a support playbook - and grant each bot the ones it may answer from. Pick one, pick several, or leave it unset to read everything. That means two widgets on the same site can run genuinely different bots: a public support bot that only knows the help centre, and a partner bot that also knows the reseller terms. A base can also be marked bot-only, so it feeds answers without ever appearing in the widget's browsable Help tab - useful for internal guidance you want the bot to follow but not publish. Website crawls and Notion syncs now target a base, so importing your docs site doesn't dump pages into the same bucket as everything else. Nothing changed for existing setups: your current articles were moved into a base called "General", and every existing bot keeps reading everything until you narrow it - a bot with no selection is never a bot with no knowledge. Deleting a base never deletes what's in it either; its articles return to Unfiled and stay answerable, the same rule already used by media and template folders. The Knowledge tab has a rail down the left to move between bases, and each article can be filed or moved from its editor. - CRM
Visitors see the real person they're talking to - and the chatbot moves in with chat
Two changes to live chat. First, the widget now shows the actual teammate handling the conversation - the profile photo and chat name from their own profile, in the chat header as well as on their replies. Until now the header always showed a fixed brand avatar and a generic name like "Support", even while a named person was clearly typing back. It updates live: if a conversation is assigned to someone else, or picked up by a different person on the next shift, the header follows. The status dot now reports whether that person is around rather than whether anyone on the team is, because "the team is online" and "Sam is here" are not the same promise. The home screen's avatar stack shows whoever is genuinely online instead of a hardcoded list. A teammate with no photo uploaded gets their own initials, never the brand image with someone's name attached - and if you'd rather present a single faceless brand, one switch in the widget's Branding settings turns the whole thing off, for the header and the replies alike. Nothing else about the visitor's view changed, and no new information is exposed: agent names and photos were already shown on replies. Second, the AI chatbot is no longer a separate section. Bots, the knowledge base, FAQs and conversation flows were sitting under their own sidebar item, away from the widgets they run on - one product split across two places. They're now tabs inside Chat, alongside Widgets. Each tab is its own page, so you can link to and bookmark the knowledge base or a specific flow, and the back button behaves. Existing links keep working. - CRM
The shared inbox becomes a real inbox: labels, folders, notes, search and an editor that's already open
The shared inbox now works the way you expect an inbox to work. Labels are colour-coded and many-to-many - a conversation can be "Billing" and "VIP" at once, so labelling something never removes it from somewhere else - and you group them into folders in a new left-hand rail alongside standing views for Unread, Assigned to me, Unassigned, Starred, Snoozed, Closed and Archived, each with a live count. Deleting a folder never deletes what's inside it; its labels simply return to Ungrouped. Deleting a label removes it from conversations and touches nothing else. Search now covers message bodies, email subjects and senders - not just names - and any combination of filters can be kept as a saved view, private to you or shared with the team. Internal notes arrived: write a note in the thread, @mention a teammate and they're notified, and it's rendered in unmistakable amber so nobody confuses it with a reply - notes are never delivered to the customer, never reorder your inbox and never reopen a closed conversation. Everyday triage got faster: star to pin a thread to the top, archive to clear it without declaring it resolved (an archived thread comes straight back if the customer writes again), snooze with real choices - an hour, three hours, tomorrow, next week - rather than only a day, and bulk actions from checkboxes in the list to close, archive, assign, label or mark read across a whole selection at once. Keyboard shortcuts are the Gmail ones:j/kto move,earchive,yclose,sstar,uunread,aassign to me,rreply,nnote,llabels,/search,?for the list. Every row now shows a waiting timer - how long the customer has been waiting on a reply, amber past an hour and red past four - so a thread going cold is visible rather than discovered. Two long-standing annoyances are fixed. Replying to an email no longer means opening a dialog over the conversation you're reading: the full rich composer is now docked in the thread, open and ready to type into, with recipients and subject folded away until you want them. And a conversation from someone who isn't in your CRM yet no longer dead-ends: instead of a broken "View contact" link, the panel now offers suggested matching records - each with the reason it matched, whether that's the same email address, the same mailbox ignoring plus-tags, or a company that owns the sender's domain - plus a one-click create-and-link pre-filled from the sender. Consumer mail domains are deliberately never treated as a company match, so two people on Gmail are never mistaken for colleagues. Separately, the floating AI assistant bubble no longer sits on top of page controls anywhere in the app - the layout now reserves space for it. - CRM
Reporting grows past records: activities, email, campaigns, meetings, tickets and more - plus stage history, goals and forecasts
Until now the report builder could only see records - contacts, companies, deals and your custom objects. Everything else in Solstral kept its own private statistics panel that you could look at but not do anything with: you couldn't filter it, pin it to a dashboard, compare it to last month or export it. That's gone. Ten new report sources open up the rest of the product - activities, email, campaign recipients, meetings, tickets, inbox conversations, form submissions, automation runs, web events and stage changes - all in the same builder, on the same dashboards, with the same filters and exports. Ask "average hours to first response by agent", "meetings booked per host per week", "click rate by campaign" or "form submissions by referrer" the same way you'd ask anything about a deal. Rate metrics come built in, so opened, clicked, bounced, solved and no-show are things you can average into a percentage rather than counting by hand. Pipeline analytics arrived, and they needed something Solstral wasn't recording before: every stage change is now kept as history, so you can finally measure how long things sit in each stage, where deals stall, how fast they move and how many make it from one step to the next. Because a pipeline in Solstral is just a field with stages on it, this works for tickets, projects and any custom object you've given a pipeline to - not only deals. A re-opened deal correctly counts both visits to a stage rather than quietly under-reporting. Goals let you set a target for any metric by month, quarter or year, optionally per person, and track progress against it. Weighted forecasting uses the win probabilities already on your stages, so no setup is needed. Reports also got better at answering "compared to what": pick Compare to previous period and a number gains a change indicator, while a trend chart gains a dashed line showing the same window last time. Rolling ranges compare against the equivalent stretch immediately before, calendar ranges against the previous calendar period - so "last 30 days" means the 30 days before that, not last month. You can now also group by owner, which was the most obvious thing missing. Visually, charts were rebuilt: proper axes, gridlines, hover tooltips and legends, and five new chart types - combo, scatter, heatmap, pivot table and an improved funnel showing drop-off at each step. Click any bar, slice or row to open the records behind it, with the report's own filters and date range carried across so the list matches the number you clicked. Where a segment can't be reproduced exactly, the chart simply isn't clickable rather than showing you a list that doesn't add up. Dashboards became arrangeable: drag widgets into the order you want and set each one to a third, half or full width. And under the hood, reporting is now measurably cheaper to run than it was before this release - several tables gained the indexes these questions need, identical queries arriving at the same moment are answered once instead of many times over, and every report has a time limit so no single question can slow the system down for everyone else. - CRM
Free trials that end gracefully, and plan pricing you can change without a deploy
Two things changed about how Solstral is sold and paid for. First, trials. A workspace can now run on a time-boxed trial of any plan with no card required - which is how a workspace handed to you already set up should start. Three days before it ends you get an email, and when it does end the workspace becomes read-only rather than being cut off: every contact, deal, email and report stays exactly where it was and stays fully readable, and only changes are paused until payment details are added. Nothing is deleted, and no workspace is ever suspended for a billing reason. Adding a card unlocks editing immediately - the moment the subscription goes active, the lock lifts and the trial clears itself, with no waiting on anyone. Attempting a change while read-only explains the situation and points to the right place instead of failing silently, and a banner across the top means nobody has to discover the state by bumping into it. Team members who can't add payment details are told to ask an admin rather than being sent to a page they can't act on. Second, plans are now editable from Settings → Plans & pricing: prices, every usage limit, trial length, whether a trial asks for a card, and what happens when an account passes a limit - hard stop, bill the overage, or draw down prepaid credits. You can create an entirely new tier from scratch and it provisions itself with the payment provider on save. Two protections are built into that, and both are deliberate. Changing a price never changes what current subscribers pay: a new price is created and existing subscriptions stay on the one they signed up at, so nobody is repriced by accident - you migrate them when you decide to, not as a side effect of an edit. Changing a limit applies at each subscriber's next renewal rather than instantly, so no one loses capacity mid-month. Before anything saves, a panel spells out in plain English exactly who is affected: how many subscribers keep the old price, how many are already above a limit you're lowering, and what a change to overage behaviour means for them. - Marketing
Replies to campaigns and automated emails can now land back on the record
When someone replies to a marketing campaign or an automated email from a flow, that reply can now be captured in the CRM and threaded onto the timeline of the contact, company or deal it belongs to - instead of sitting unseen in a mailbox. Turn it on per campaign (and per send-email step in a flow) with a choice of two modes: route replies to the CRM, which sets the reply address to your CRM inbound address so responses come straight in, or also CC the CRM, which keeps your existing reply-to and logs a copy. Each send carries its own tracking code, so a reply is matched back to the right campaign and record. Click and open tracking are unaffected either way. Whichever mode you pick is remembered as your workspace default, so the next campaign and the next flow step start where you left off rather than making you choose again. - Marketing
Email builder rebuilt: forgiving drag-and-drop, blocks inside columns, and mobile that actually fits
The email builder no longer asks you to aim. Drag-and-drop was rebuilt on a proper drag engine, so blocks land where you're pointing instead of needing a precise hit on a thin line - and you can now drag blocks straight into a column, between columns, and back out again, rather than adding them through a settings panel. Dragging is forgiving in both directions: drop into empty column space to append, or onto an existing block to place it exactly there. 2, 3 and 4 columns are now three separate blocks in the palette instead of one block you had to reconfigure after dropping. Mobile rendering is fixed properly: multi-column rows now stack full-width on phones and images shrink to fit the screen instead of casting off the side, so the Mobile preview shows what recipients actually get. A block set to zero top padding now renders with zero top padding - the stray white gap above the first block is gone. Images changed too: the free-text image URL box is gone (it only ever let broken, unhosted links into emails), uploads now go straight into your Content Library so anything you add in an email is available everywhere else, and you can pick from the library - folders and all - without leaving the builder. Replacing an image no longer stacks up a growing pile of thumbnails; you see the current image with Replace, Library and Remove. Finally, the builder now saves reliably: an edit made in the moment before you click away is written rather than dropped, which is what made work occasionally vanish on return. The same fix covers the campaign Recipients step. - Marketing
Folders for the Content Library and the template library, plus template test sends
Two libraries just got organised. The Content Library now has folders - create, rename and delete them from the rail on the left, move any file into one from its card, and upload straight into the folder you're viewing. Deleting a folder never deletes what's inside it; files simply return to Unfiled. Those same folders show up in the email builder's image picker, so a large library stays navigable while you're designing. The email template library gets the same treatment and switches from cards to rows, so a few dozen templates stay scannable rather than filling the screen - each row shows its subject, folder and when it was last edited, with search across names and subjects. You can also now send yourself a test straight from a template, without first attaching it to a campaign: hit Send test, enter up to five addresses, and the real compiled email lands in your inbox for a rendering check. - Marketing
The form thank-you screen is now designed, not typed
What someone sees after submitting a form is now built on the Thank you tab - the same drag-and-drop canvas as the form itself, with headings, paragraphs, rich text, images and dividers. The old single-line "Thank-you message" box in the Actions step is gone, so there is only one place that screen comes from and no chance of a stale sentence quietly overriding the page you designed. Any wording you had already typed in the old box is carried across into the new canvas as a text block, so nothing is lost and you can now format it, add a logo or link somewhere useful instead of being limited to one line. New forms start with a thank-you screen already in place, ready to edit. Redirecting to your own page instead is unchanged. - CRM
Seven more product areas documented, and screenshots that actually capture
The knowledge base now covers the whole product rather than most of it. Seven areas that shipped without a feature record - the website builder, the shared inbox, tickets and SLAs, tasks and reminders, social engagement, web analytics and the AI assistant - are now in the structured feature catalogue, which means each one automatically has a reference page and appears in search, the sitemap and the machine-readable feed. Twelve how-to guides that had been left as short stubs were rewritten as full walkthroughs with numbered steps, cross-links and the reasoning behind each choice, roughly tripling their depth. There are five new guides covering the inbox, tickets, tasks, analytics installation and the assistant, and two new knowledge-base sections to hold them. Separately, the weekly screenshot capture has been repaired: it was failing silently every Monday - a login that was never awaited, no handling for accounts with multi-factor auth or a custom workspace domain, and two hardcoded record IDs that only existed in one workspace - while still reporting success. Every one of those failure modes now stops the run loudly instead of committing nothing, and a new demo-data seeder populates a workspace with realistic fictional records so the captured shots show a product in use rather than a wall of empty states.