Changelog
What's new
The product moves quickly. Everything that ships lands here first.

- Marketing
Email builder: one toolbar at a time, Library-only images, and HTML emails imported with their images
<p>More polish for the email builder, and a proper way in for HTML emails made elsewhere.</p><ul><li><strong>Only the block you point at shows its toolbar.</strong> A block inside a column shows its own actions, not the column block's too; point at the column block's edge or gap to get its actions. The toolbar stays up while you move towards it, even across another block, and you never see more than two: the selected block's and the one you are pointing at.</li><li><strong>Every image goes through the Content Library.</strong> Add image and Replace both open the Library, where you can upload too, so every image in an email is one you can find again.</li><li><strong>Tidier side panel.</strong> Mobile and visibility settings are at the bottom, Delete lives only on the block's own toolbar, and the text block's panel is gone: alignment, line spacing, colour and clean-up are on the toolbar above the canvas.</li><li><strong>HTML emails are sent as written.</strong> Style blocks, media queries, Outlook conditional comments and the doctype are kept; scripts, forms, frames and event handlers are still removed.</li><li><strong>Import an HTML email with its images.</strong> Drop a .zip, a folder, or the .html with its image files. The images are saved to a new Content Library folder, the email is pointed at those copies, and you see what was found, what is missing and what was removed before anything uploads.</li></ul>
- Marketing
Email builder: actions out of the way, shortcuts that match the toolbar, and uploads you can file
<p>A round of fixes to how the email builder feels while you edit.</p><ul><li><strong>Block actions sit beside the email.</strong> Move, duplicate, save, who sees it and delete now appear in the margin next to a block instead of on top of its text.</li><li><strong>Text is edited on the canvas only.</strong> Headings no longer have a second text box in the side panel, and a columns block's panel is styling only: number of columns, gap, padding inside each column, vertical alignment and a background colour per column.</li><li><strong>The toolbar shows what's on.</strong> Click into bold, italic or underlined text, a list or a link and its button lights up. ⌘B / Ctrl+B, I, U and ⌘K / Ctrl+K do exactly what the buttons do.</li><li><strong>Open links in a new tab.</strong> The link dialog has an Open in a new tab option, on by default.</li><li><strong>Uploads say where they go.</strong> Uploading an image (in the email builder, the Content Library picker, forms and social posts) now asks which Content Library folder to save it in, with a progress bar and a confirmation.</li><li><strong>Scroll while dragging.</strong> Hold a block near the top or bottom of the canvas and it scrolls; the mouse wheel works too.</li><li><strong>Divider padding in columns.</strong> The side panel now shows a block's real left and right padding inside a column (0 by default), so changing it does what it says.</li></ul>
- Marketing
Folders for campaigns and lists, and form redirects that work
<p>Two fixes for keeping marketing tidy and forms behaving.</p><ul><li><strong>Folders on Campaigns and Lists.</strong> Both pages now have a folder rail, like Email templates. Create, rename and delete folders, drag a campaign or list onto one to file it, or use Move to folder in its menu. New campaigns and lists land in the folder you're viewing, and duplicates stay beside the original. Deleting a folder never deletes what's in it.</li><li><strong>Redirect after submit.</strong> Forms and booking pages set to send people to another page now do, when the page is on a domain you've verified (including a sending domain, or any subdomain of one). For any other site, visitors get a clear Continue button instead of the thank-you screen.</li></ul>
- CRM Platform
New workspaces: one daily email allowance until the first review, and a bot check on signup
<p>More protection for the sending reputation every workspace shares.</p><ul><li><strong>One allowance for direct email until review.</strong> Until our team has reviewed a new workspace's sending (usually within one business day), it can send up to 20 emails a day in total through one-to-one email, Bulk send, the transactional email API and flow notifications addressed outside your team. Replies to emails people send you, notifications to your own team and test sends don't count. Once approved, the limit is gone.</li><li><strong>Bulk send pauses with marketing.</strong> If a workspace's marketing sending is paused, Bulk send from a record list pauses too. Single emails still go.</li><li><strong>A quick security check on signup.</strong> Creating a new workspace now includes a Cloudflare check that most people never see.</li></ul>
- CRM Platform
Import catches more addresses that would bounce
<p>The import preview's email check now catches more of the addresses that would bounce, before they cost your domain its reputation.</p><ul><li><strong>Every row is checked for a mail server.</strong> On large files, only the first 5,000 rows used to have their domains checked. Now the whole file is. If a very large file can't be fully checked in time, the preview says so.</li><li><strong>Addresses that bounced recently.</strong> An address that recently bounced as undeliverable when emailed from Solstral is flagged as <em>Bounced recently</em>, and campaigns skip it. As soon as any email to it is delivered again, it stops being flagged.</li><li><strong>More typos.</strong> Near misses of the big providers, like <code>gmaol.com</code> or <code>hotmal.com</code>, are flagged as a <em>Possible typo in the domain</em> with the likely correction. If the domain can't receive mail, it is marked as a definite typo.</li><li><strong>Many more disposable inboxes.</strong> The disposable inbox check now knows over 9,000 throwaway email providers instead of a few dozen.</li></ul>
- Marketing
Safer marketing sends: a first-send review, warm-up by default and campaigns watched as they send
<p>Every workspace shares the reputation of the servers its email goes out from, so one bad list can hurt everyone's deliverability. Four changes protect it.</p><ul><li><strong>Your first marketing send is reviewed.</strong> A workspace's first campaign or flow marketing email waits for a quick review by our team, usually within one business day, then goes out automatically. Test sends, one-to-one email and notifications are never held. Until then, up to 20 emails a day can be sent through the transactional email API, which is plenty to build and test an integration.</li><li><strong>New sending domains warm up by default.</strong> A new domain starts at 20 campaign emails a day and grows to unlimited over four weeks, so mailbox providers see steady growth. Once your sending is approved you can switch warm-up off.</li><li><strong>Campaigns are watched while they send.</strong> A large campaign sends its first 100 emails, waits 10 minutes for bounces, then carries on. If too many hard-bounce or are reported as spam, the campaign stops and you're emailed the reason.</li><li><strong>Undeliverable addresses are skipped.</strong> Malformed addresses, typo'd domains, disposable inboxes and test data are left out of every campaign and shown as skipped in the report.</li></ul>
- CRM Platform
Choose which flagged email addresses to import
<p>The import preview has always warned about email addresses that will bounce or are worth a second look. Now it groups them by reason, with a tick box for each. Untick a reason, such as <em>Shared role address</em> or <em>Typo in the domain</em>, and every row carrying it is left out of the import. The counts and the Import button update as you go, and nothing is left out unless you untick it.</p><p><strong>Show</strong> beside each reason lists example rows, and <strong>Download flagged rows</strong> saves every flagged row from your file with its reason, so they can be fixed and imported later.</p><p>Numeric QQ addresses (like <code>742981487@qq.com</code>) are no longer flagged as test data, because that is what a real QQ address looks like.</p>
- CRM Platform
Import CSV files of any size, with a progress bar
<p>The importer used to stop at 5,000 rows. It now takes a file of any size. The preview and the import both run in batches, with a progress bar showing how many rows are done and roughly how long is left.</p><ul><li>Very large files are slowed down a little so the CRM stays fast for everyone, and the import carries on by itself. A dropped connection is retried when doing so can't create duplicates.</li><li><strong>Stop import</strong> keeps every row imported so far. If an import stops early, it tells you which rows went in and how to finish.</li><li>The preview spots duplicate rows anywhere in the file, not only near each other.</li></ul><h2>Cells with several values</h2><p>When a column has lists in its cells, like <code>vip, newsletter</code>, the mapping step now explains what will happen. For a Tags or Multi-select field, it shows how one cell splits into separate values and which values are new. It also warns when rows will be skipped because a multi-select field doesn't offer one of their values. For a single-choice dropdown, it says the whole cell will be one value. It also flags <code>|</code>-separated lists, which aren't split.</p>
- Marketing
HTML and plain-text emails, and dynamic blocks that change per recipient
<h2>Three kinds of email</h2><p>Campaigns and templates can now be <strong>HTML</strong> (paste or write your own code, with a live preview) or <strong>plain text</strong> (just words, like an email from a person), as well as drag & drop. Pick one when you start, or switch with the <strong>Email type</strong> control above the editor. Switching never throws work away: each version is kept, so switching back brings your design back exactly. HTML is cleaned of scripts and forms, links are tracked and the unsubscribe footer is added if you left one out. Plain-text emails go out with a plain HTML copy so opens and clicks are still tracked.</p><h2>Dynamic blocks</h2><p>Any block, or a <strong>Dynamic block</strong> container from the palette, can be shown only to recipients who match a rule — the same conditions you use for lists and segments, plus <strong>In list or view</strong>. Dynamic blocks have a purple outline and a badge naming the rule. The rule is checked for each person at the moment their email sends, in campaigns, flow emails and one-to-one emails from a record. Use <strong>Preview as</strong> to see exactly what one contact would get. Dynamic blocks can be saved as saved sections too.</p><p>The campaign report shows each dynamic block’s reach — for example <em>Gold members: 312 of 4,000</em> — with buttons to list who got it and who didn’t.</p><p>If a rule can’t be checked — the email goes to a different object, or a field it uses was deleted — the block is left out and the builder, the Review step and the field-delete dialog all say so.</p>
- CRM Platform
See your data model as a map, and emails that keep their styling in Gmail
<h2>Data model map</h2><p><strong>Settings ▸ Objects</strong> has a new <strong>Data model</strong> view: a map of every object, its key fields and the relationships between them, with <em>1</em> and <em>many</em> marked at each end of every line. Click an object to highlight what it connects to and see all of its fields, pipeline stages, lookups and formulas in a side panel. Objects that aren’t linked to anything are set apart so they’re easy to spot. It’s read-only: drag cards to untangle the view, but nothing there changes your data.</p><h2>Emails that keep their styling</h2><p>Text pasted into an email from a web page used to bring invisible formatting with it. Gmail threw away the styling of any text that carried it, so a coloured, bold heading arrived as plain text, and the extra weight could make Gmail cut a long email short with “View entire message”. That formatting is now removed automatically, from saved emails too, and each text block has a <strong>Clean up formatting</strong> button that strips fonts, sizes and spacing carried over from a paste while keeping bold, italic, colour and links.</p>
- CRM Platform
Chat: goals that finish, a bot that knows when nobody's in, and replies that reach people who left
<p>A full review of website chat, and a fix for everything it found.</p><h2>Goals</h2><ul><li>When a visitor gives the last detail a goal asks for, the goal now finishes there and then: the completion message is sent and completion actions run. Before, the usual way a goal ended went unnoticed.</li><li>A visitor answering the bot's question (typing their email, say) gets a thank you and the next question, instead of the bot searching your knowledge for their answer and offering to fetch a colleague.</li><li>The answer to the last attempt at a question is kept, and a number, yes/no or choice is only taken from the reply to the question that asked for it.</li></ul><h2>People</h2><ul><li>Asking for a person works on every widget, and when nobody can come the visitor is told so straight away.</li><li>A handover is announced once, not on every unsure turn.</li><li>Office hours use your workspace timezone, and overnight hours work after midnight.</li><li>The widget header shows whoever is actually answering, the bot or a person.</li><li>"Online" and round-robin assignment only count teammates who can reply.</li><li>Replies a visitor hasn't read within 5 minutes are emailed to them, and their answer comes back into the chat.</li></ul><h2>Bots</h2><ul><li>A bot's <b>First message</b> is now shown when that bot is answering.</li><li>Whether the bot can hand over is decided by the widget's answering setting, as the editor says.</li><li>AI steps in conversation flows use AI credits like every other answer.</li></ul><h2>Safety and tidiness</h2><ul><li>Public chat endpoints are rate-limited, the lead form is checked on the server, and chat files count towards your storage.</li><li>A chat file can only be opened by the visitor it belongs to.</li><li>Deleting a widget with conversations archives it instead; deleting it for good needs its name typed.</li><li>Knowledge search no longer drops older articles in big workspaces, and rescanning a large website doesn't remove pages it simply didn't reach.</li></ul>
- Automation
Flows: pausing holds people in place, and After loop waits for the loop
<p>A full review of the flows engine, and a fix for everything it found.</p><h2>Things you will notice</h2><ul><li><b>Pause holds people where they are.</b> Pausing a flow used to cancel anyone whose wait ended while it was paused. Now they wait, and carry on when you resume.</li><li><b>After loop waits for the loop.</b> Steps on a For each step's After loop path run once every item has finished (or after 24 hours), not straight away.</li><li><b>A wait at the end of a flow ends it.</b> A flow finishing on a wait no longer starts again from the top when the wait is over.</li><li><b>The Run button works for flows that aren't about a record</b>, straight from the Flows list.</li><li><b>Testing a step for real says who it will act on</b> before it sends anything.</li><li><b>Two people editing one flow</b> are told, instead of one silently overwriting the other.</li></ul><h2>Rules that now apply everywhere</h2><ul><li>Enrolment settings (only once, not while already in the flow) apply to form, chatbot, booking and webhook flows, against the record the flow creates or finds.</li><li>People whose record is archived, deleted or merged away leave the flow.</li><li>Conditions no longer treat text like "Plan 1" and "Plan 2" as the same, and date conditions count days in your workspace's timezone.</li><li>Scheduled flows look at every matching record, not just the oldest 500.</li><li>A failed HTTP request follows the step's own error setting, retries only when retrying can help, and data with quotes or line breaks no longer breaks a JSON body.</li><li>An approval can only be answered by the people it was sent to (or an admin), and closes itself if the run ends another way.</li><li>Duplicating a flow copies its goal, unenrolment rules, schedule window, alerts and unpublished changes.</li></ul>
- CRM Platform
Inbox: safer replies, honest unread counts and a snooze that comes back
<p>A thorough pass over the shared Inbox, fixing everything a review turned up.</p><h2>Replies go where you meant</h2><ul><li>What you type is kept per conversation, so moving to the next thread never carries a half-written reply with it.</li><li>An email reply goes to whoever wrote last, with the other people on that message copied.</li><li>Files can be sent on website chats. On social threads the Attach button is gone, because the platforms never received those files.</li></ul><h2>Unread means unread</h2><ul><li>A conversation is marked read when someone opens it, not because it happens to be on screen in a background tab.</li><li>A new message from the customer brings a conversation back into the Inbox on every channel, including snoozed, archived and closed ones. Out-of-office replies and bounces no longer do.</li><li>Snooze offers later today, 9:00 tomorrow and 9:00 Monday, and a snoozed conversation returns unread.</li><li>Label counts match what the label shows, and the list has a Show more button.</li></ul><h2>Privacy and permissions</h2><ul><li>Everything you can do to a conversation checks its mailbox, including linking records and AI drafts.</li><li>@mentions only notify people who can open the conversation, and only on an exact name.</li><li>Deleting a mailbox asks where its conversations should go instead of making them visible to everyone.</li><li>Record suggestions respect record visibility.</li><li>Only the person who made a shared view, or an admin, can change it.</li></ul><h2>Merging and routing</h2><ul><li>Two website chats can't be merged, so no visitor is ever shown someone else's messages, and conversations must be in the same mailbox.</li><li>Round robin now rotates, prefers people who are online, and threads you start are assigned to you so the reply doesn't land in Unassigned.</li></ul>
- CRM Platform
Tickets: SLAs in business hours, reopening, automatic tickets and a page for every ticket
<p>A thorough pass over Tickets, so the numbers mean what they say and tickets fit into the rest of your CRM.</p><h2>SLAs you can hold people to</h2><ul><li>Each priority now has two targets: first reply and resolution, set in the new <strong>Settings ▸ Tickets & SLAs</strong>.</li><li>Targets can be counted in your <strong>business hours</strong>.</li><li>The clock pauses while a ticket is Pending (and, if you choose, On hold).</li><li>Only a real reply counts as a first response. Changing the status no longer does.</li><li>A ticket raised from a conversation starts its clock when the customer started waiting, and an earlier reply counts.</li><li>The owner is warned before a target is due. A breach tells the owner, the mailbox managers and your escalation list.</li></ul><h2>Tickets and conversations stay in step</h2><p>They share one owner. Solving a ticket closes its conversation, and closing the conversation solves it. A customer reply reopens a solved ticket within the reopen window, or starts a linked follow-up ticket after it. Mailboxes can raise tickets automatically.</p><h2>Satisfaction surveys</h2><p>The survey link now opens a confirm page, so mail scanners can't rate on the customer's behalf. Surveys only go out when someone replied, and low scores come back to the team.</p><h2>Everywhere else</h2><ul><li>Every ticket has its own page with history, the conversation and follow-ups.</li><li>The Tickets list has views, search, filters, sorting and paging.</li><li>Tickets appear on the contact's timeline and in reports, scoped to the mailboxes you can see.</li><li>New flow triggers and <strong>Create ticket</strong> / <strong>Update ticket</strong> steps.</li><li>Tickets over the REST API, and more ticket tools for the assistant.</li><li>Ticket numbers no longer skip, and two people can't raise duplicate tickets on one conversation.</li></ul>
- CRM Platform
Tasks: decisions you can find, due dates that stay put, and a list that only shows what you may see
<p>A pass over Tasks, from the list to the reminders.</p><h2>Waiting on your decision</h2><p>Approval requests from flows and change requests from the assistant now have their own section at the top of <strong>Tasks</strong>, one row per request, with Approve and Reject. They used to be hidden from that page even though the notification sent you there, and a request with no record appeared nowhere. A request can no longer be ticked off, edited, reassigned or deleted like a to-do, and expired requests close themselves instead of sitting overdue.</p><h2>Due dates are days</h2><p>A due date now means the same day for everyone. Anyone west of Greenwich saw tasks due a day early, and saving a task moved it back another day. The <em>Due today</em> filter and the <em>Today</em> section now always agree.</p><h2>Yours by default</h2><p>A new task is assigned to you unless you pick someone else or choose <em>Unassigned</em>. Before, the picker said “Me” and saved nobody, so those tasks were missing from <em>Assigned to me</em> and from Home. Existing tasks created that way have been given back to the person who made them.</p><h2>Reminders</h2><p>You can change or clear a reminder from the task’s edit form, and reassigning a task passes its reminder to the new owner. A reminder that fails to send is retried. When someone is deactivated, their open tasks become unassigned and admins are told how many.</p><h2>Privacy and speed</h2><p>The Tasks page now only lists tasks on records you’re allowed to see, and tasks on records in the bin drop off it. The list loads in pages, the calendar loads the month you’re looking at, search looks at the words in a task’s details rather than its formatting, and the record name on each task links to the record.</p>
- CRM Platform
Your Profile: confirmed email changes, one account across workspaces
<p>A security and reliability pass over your Profile.</p><h2>Changing your email now needs confirming</h2><p>Changing your sign-in email asks for your current password and sends a confirmation link to the new address. Nothing changes until you click it, and it then applies to every workspace you belong to. Workspaces that use single sign-on, or don’t let members change their email, keep it locked.</p><h2>One account, everywhere</h2><ul><li>A password change applies to every workspace and signs out every other device, whichever workspace it was using.</li><li>The Active sessions card lists all your devices, not just those that signed in to the current workspace.</li><li>Recovery codes work whichever workspace you land in, and regenerating them replaces every earlier set.</li><li>Two-factor can’t be switched off where your role requires it, and switching it off emails you a notice.</li></ul><h2>Smaller fixes</h2><ul><li>Your photo now shows up in the signature recipients see, and on your public booking page.</li><li>Uploaded photos are checked by their content, not their file type.</li><li>Unsaved edits on one Profile card are no longer wiped when you save another.</li><li>Quick changes to notification toggles no longer undo each other, and a failed save says so.</li><li>Disconnecting a Google calendar no longer breaks a Gmail inbox or calendar that shares the same Google sign-in.</li><li>Searching Settings for “password”, “2FA”, “signature” or “timezone” finds your Profile.</li></ul>
- CRM Platform
Reporting: reports, dashboards and goals in one place, and numbers you can trust
<p>Reports, Dashboards and Goals are now one module, <strong>Reporting</strong>, with a tab for each and one entry in the sidebar.</p><h2>One switch</h2><p>Settings ▸ Platform ▸ Modules and team permissions now have a single <strong>Reporting</strong> switch instead of separate Reports and Dashboards ones. If you had turned Dashboards off on its own, Reporting now decides both. Old links to <code>/dashboards</code> and <code>/goals</code> open the matching tab.</p><h2>A new look</h2><p>A reports library with search, favourites and recently viewed; a full-screen editor with Configure, Filters and Style tabs and drag-and-drop fields; a report page with a headline that says what changed and a side panel of the records behind any bar; and dashboards with goal cards, text notes and filters that apply to every tile. Charts now use your brand colour.</p><h2>Numbers you can trust</h2><ul><li>Dates are counted in your workspace time zone, so a deal won late on the 31st lands in the right month.</li><li>“This month vs last month” compares the same number of days, instead of a part month against a whole one.</li><li>Reports only count records you are allowed to see, and module sources respect team permissions.</li><li>Pipeline and won-value templates count open and won deals correctly, and time-in-stage only counts finished stays.</li><li>Deleting a report removes its tiles from every dashboard, and the warning lists which ones first.</li></ul>
- CRM Platform
Content Library: SVG logos that show up, safer deletes, and a storage limit that counts
<p>A round of fixes to the Content Library and everything that uses it.</p><h2>SVG logos work everywhere</h2><p>For security, SVG files in the Library are never shown directly as images, which meant an SVG logo picked for a website, a form, the chat widget or a share card showed as a broken image. Picking an SVG outside the email builder now saves a PNG copy in your Library and uses that. SVGs dropped into the website builder are converted the same way. SVG thumbnails in the Library and the image picker now show the picture instead of a broken icon, and an SVG set as your BIMI inbox logo is served the way mailbox providers need.</p><h2>Deleting tells you the truth</h2><p>The delete warning now checks saved email sections, booking pages, snippets, knowledge articles and per-platform social images as well as sites, emails, forms and widgets. If the check can’t be made it says so, instead of saying nothing uses the file. That used to happen every time you deleted more than 100 files at once. A scheduled social post whose image was deleted is now skipped with a clear reason rather than going out without it.</p><h2>Storage</h2><p>Library files now count toward your plan’s file storage, as attachments always have. The largest single file is 100 MB, and the Library says which file is too big before uploading anything. An upload either lands completely or not at all, so a retry no longer makes duplicates.</p><h2>Smaller fixes</h2><ul><li>Renaming a file to something with a dot in it, like <em>Brochure v1.2</em>, keeps the whole name.</li><li>Downloading a large selection as a zip is lighter on the server and can’t be tricked into building a huge archive.</li><li>Drop files anywhere on the Library, or straight onto a folder, to upload them there.</li><li>Errors from delete, rename, alt text and folders now appear on screen.</li><li>Moving to the next file in the preview saves the alt text you typed.</li><li>The image picker loads more than 500 images, and its folder counts show images only.</li><li>Portrait phone photos report the right width and height, and videos stored in the database play in Safari.</li></ul>
- CRM Platform
Booking pages respect every calendar they can read, and reminders arrive on time
<p>Three fixes to meetings.</p><h2>Availability</h2><p>When one of the calendars checked for conflicts could not be read (a colleague’s calendar that was unshared, say), the whole account used to be treated as free, so booking pages offered times you were busy. Now the calendars that can be read are still checked, and <strong>Settings ▸ Calendars</strong> shows which calendar could not be read and how to fix it.</p><h2>Reminders</h2><p>Meeting reminders now go out when they are due, however many meetings are coming up. Before, a busy week could delay the 24-hour reminder until shortly before the call.</p><h2>Assistant</h2><p>Asking the assistant to list meetings only ever shows a member their own meetings, the same as the Meetings page. Admins can still ask for anyone’s.</p>
- Automations
Flows that fill in the record for you, text size on highlighted words, and form search
<p>A round of fixes to the places people told us they got stuck.</p><h2>Flows</h2><p>Every step now sits on the flow’s line. Drop a step on empty canvas and it joins the nearest point of the flow; delete a branch and the steps that hung off it go with it instead of floating on their own.</p><p>A new step that works on a record — update, add to list, send a marketing email, create a task — starts pointed at the <strong>nearest record before it</strong>: the one a Create record or Find records step just made or found, otherwise the record that started the flow. You can still point it anywhere, and a one-click <em>Use the record from…</em> button appears whenever a closer record is available. The <strong>Record ID</strong> pill for “the record that started this flow” now only appears on triggers that actually start from a record.</p><p>Every record step on the canvas now says which record it acts on — <em>Acts on: Contact from Add or update record</em> — and turns red when it has none. When nothing before a step makes a record, its Record ID box offers to add an <strong>Add or update contact</strong> step right before it, filled in from the trigger’s data and matched on email, and points the step at it.</p><p>Picking a trigger now loads its most recent data straight away, so every step has real values to map. If there isn’t any yet, the trigger asks you to send some test data.</p><p><strong>Send marketing email</strong> now goes to the record’s own email address by default — choose which email field if it has more than one — or to a different address when you want to email someone else about that record.</p><h2>Email builder</h2><p>Font size and font are on the toolbar now. Highlight some words to change just those — across as many lines as you like — or click into a block without highlighting to change the whole block.</p><h2>Forms</h2><p>Dropdown, choice and checkbox-group options are now a list of boxes you add, remove and reorder, and multi-word options type normally. Submissions can be searched and filtered by the form’s current questions and a date range; answers to removed questions are still in the CSV download. The Records tab is gone — turning submissions into records is a flow.</p><h2>Sharing and security</h2><p>Link previews now reach every network’s scraper, share images are served directly with their size, and the Share settings explain how to refresh a network’s cached card. Sign-in alerts are now sent for a new country, not every new network.</p>
- CRM Platform
Hide the “None” column on a pipeline board
<p>A pipeline board has always ended with a “None” column holding anything that hasn’t been given a stage yet. Useful when you’re filling a board in; clutter once you aren’t.</p><p>It’s now a row in Edit pipeline › Stages, alongside the stages themselves, with the same tick box. Untick it and the column comes off the board. Nothing happens to the records — they keep their empty stage, and they appear on the record, in filters, flows and reports exactly as before.</p><p>As with a hidden stage, the board never holds anything back quietly: if hidden columns are keeping records off the board, it says how many and offers one click to show them.</p>
- CRM Platform
Deleting a record type now shows you what goes with it — and waits 30 days
<p>Deleting a record type used to be instant and final. One click took its fields, every record in it, every relationship pointing at it, and — quietly — the marketing list memberships of those records, with the consent record attached to each one. Nothing said how much, and nothing brought it back.</p><p>Now the confirmation shows you the real figures first: how many records, how many timeline entries, and how many list memberships with their consent history, which is the part no export can rebuild. If an active flow runs on that record type, or a marketing list sends to it, Solstral tells you which ones and stops — those break silently otherwise, and a list is yours to delete deliberately, not as a side effect of tidying settings.</p><p>When you do confirm, nothing is erased. The record type disappears from your sidebar, the API, reports and the assistant straight away, and sits in “Waiting to be deleted” under Settings › Objects for 30 days. Restore puts everything back exactly as it was. After 30 days it’s deleted for good.</p>
- Automations
Flows put bookings and chats on the record they create, plus search and filters
<p>When a flow creates, updates or finds a record, whatever started the flow is now added to that record’s timeline automatically: a booked meeting, a chat, a social comment or an email someone engaged with. There’s nothing to set up. Meetings stay in step afterwards too: a reschedule moves the timeline entry, a cancellation marks it cancelled, and later meeting triggers run for that record.</p><h2>Finding flows</h2><p>The Flows list now has a search box and filters for status, trigger, and flows that need attention (unpublished changes, broken references or failed runs). They work inside the folder you have open. Flows you create or duplicate stay in the current folder and are highlighted straight away.</p><h2>Dropdown fields</h2><p>When a flow step sets a dropdown field, you now pick from that field’s options instead of typing. You can still use data from the trigger, and the step tells you what happens if that data isn’t one of the options.</p>
- Marketing
Send, schedule and run campaigns from your own Gmail or Outlook
<p>Once you connect Gmail or Outlook, it shows up in the <strong>From</strong> list when you email someone from their timeline or the Inbox, and when you set up a campaign. Emails go out from your real address, and replies come back into your inbox and onto the record.</p><h2>Send later, and cancel</h2><p><strong>Send later</strong> now works from your own inbox too. Emails waiting to go out are listed on the record’s timeline and in the Inbox thread, each with a <strong>Cancel</strong> button you can use any time before it sends.</p><h2>Campaigns from your inbox</h2><p>A campaign sent from your own mailbox goes out at a steady pace, within your mailbox’s daily limit (about 400 a day on Gmail, 1,500 on Google Workspace), and anything left over carries on the next day. Unsubscribe links work as usual. Opens and clicks aren’t tracked for these sends, so A/B tests and follow-ups to non-openers need a workspace sender. If the inbox is disconnected, the campaign pauses rather than switching to a different address.</p>
- CRM Platform
Hide stages on an Opportunities board
<p>Each stage in <strong>Edit pipeline → Stages</strong> now has a tick box for whether it shows as a column on the board. Untick Won and Lost, say, to keep the board about the work still in progress. It only changes the board: the stages stay on every record and keep working in filters, flows and reports, and nothing is moved. The board says how many stages are hidden and how many records they hold, with one click to show them. At least one stage always stays visible.</p>
- CRM Platform
Duplicate booking pages, and filter menus that stay open
<p>Any booking page you can edit now has a <strong>Duplicate</strong> button, on the list and inside the page. The copy brings everything across — times, questions, branding, reminders, policy and the share card — and arrives as a <strong>draft</strong> with its own link, so nothing goes live by accident. A custom link gets the next free number (<em>intro-call</em> becomes <em>intro-call-2</em>). Members can copy their own pages; admins can copy team pages and anyone’s.</p><h2>Menus inside menus</h2><p>Choosing a field or operator in the filter menu no longer closes the whole menu. The same fix applies wherever a dropdown, date picker or dialog opens from inside another menu.</p>
- CRM Platform
Reminders and wait times in days and hours, not 1440 minutes
<p>Every setting that is a length of time now takes a number and a unit. Booking-page reminders are a list you add to — <em>1 day before</em>, <em>1 hour before</em> — instead of a comma-separated row of minutes, and buffers, minimum notice and cancel/reschedule notice work the same way. Flow deadlines, approval time-outs, campaign follow-up waits and A/B decision times can be set in days; social comment spacing in hours; slideshow autoplay in seconds. Nothing already saved changes — a reminder stored as 1440 minutes simply opens as 1 day.</p>
- Marketing
Saved sections, a 1-column block, and social icons that stay visible
<p>Build a piece of an email once and use it everywhere.</p><h2>Saved sections</h2><p>Save any block — or a group of blocks inside the new <strong>1 column</strong> block — as a section, then drag it into any campaign or template. Link it to keep every email in sync, or drop in an independent copy. A linked section is editable right on the canvas, with a banner that says how many emails the edit reaches and a one-click <strong>Detach this copy</strong>. Sent campaigns keep the version they went out with. Manage everything under <strong>Marketing → Saved sections</strong>.</p><h2>Custom social icons</h2><p>An uploaded icon now sits in a circle in a colour you choose, so white-on-transparent icons no longer vanish on a white email. Turn the circle off and the icon shows whole on the block’s own background — no more cropped corners.</p><h2>Links</h2><p>Highlighting text and adding a link works reliably, and a new link arrives in your link colour with an underline you can change. Editing an existing link shows where it really goes, and Unsubscribe, Privacy policy and Terms are one click away.</p>
- CRM Platform
Connect Claude or ChatGPT to your CRM
<p>Solstral now works as a connector inside the AI app you already use. Paste one address into claude.ai or ChatGPT, sign in, pick a workspace, and ask.</p><h2>As you, with your role</h2><p>A connection is signed in by a person and acts as them. A viewer gets a read-only CRM in Claude; a member can create and update records; nobody’s connection can reach settings, billing, DNS or the schema.</p><h2>Sending stays opt-in</h2><p>Out of the box a connection can read and write records, run reports and log activities. Sending email, booking meetings and switching on automations are per-connection toggles an admin enables under Settings → AI connections — and every send still asks first.</p><h2>Off by default</h2><p>External AI connections are off on every workspace until an admin turns them on. The same screen lists every live connection, who authorised it, when it was last used, and a Disconnect button. Developer tools (Claude Code, Cursor, n8n) keep using API keys exactly as before.</p><p>Available on paid plans. Each plan includes a daily allowance of connector actions; listing tools never counts.</p>
- CRM Platform
Report templates, and six more parts of the CRM you can report on
<p>Reporting no longer opens on an empty form, and it now reaches the parts of the product it could not see.</p><h2>Templates</h2><p>A library of ready-made reports across sales, activity, marketing, service, contacts, web & chat and adoption — pipeline by stage, time spent in each stage, task completion rate, opens and clicks by campaign, time to first response, contacts nobody has spoken to in 90 days, and more. Pick one and it opens in the builder as an ordinary report you can change: the date range, the grouping, the chart, anything. Nothing is saved until you save it.</p><p>You are only shown templates you can actually run. A template that needs a Deals pipeline doesn’t appear if you don’t have one, and one for a module you’ve turned off doesn’t appear at all — not greyed out, just absent.</p><h2>Six more things to report on</h2><p>Reporting could already cover records, activity, email, campaigns, meetings, tickets, conversations, forms, flows, web traffic and stage history. It now also covers <strong>marketing list membership</strong> (including how each list was acquired, which is what a deliverability review asks for), <strong>suppressions</strong> (why you stopped emailing people, by reason and over time), <strong>chat leads</strong>, <strong>campaigns as a whole</strong>, <strong>transactional email</strong> — password resets and invitations, delivered, bounced or retried — and the <strong>audit trail</strong>, which is the honest way to see who is really using the CRM.</p>
- CRM Platform
Goals you can act on, and charts that stop flattering the numbers
<p>Targets get a home, and two ways a chart could quietly mislead you are closed.</p><h2>Goals</h2><p>Set a target — revenue won this quarter, calls made this month, deals created this year — and <strong>Goals</strong> shows where you are against it. Each target can belong to one person or to the whole workspace, and every number is measured by the same engine your reports use, so a goal can never disagree with the report behind it.</p><p>Every card shows <strong>pace</strong>, not just progress. 62% of target is excellent on the 3rd of the month and alarming on the 30th, and a progress bar on its own can’t tell you which you’re looking at. A marker on the bar shows where an even run-rate would have you by now, with days left and what the remaining days need to average.</p><h2>Quiet periods now show as zero</h2><p>A week with nothing in it used to be left out of a chart entirely, so a quiet fortnight between two busy ones looked like steady growth. Empty periods are now drawn. Counts and totals show zero; averages stay blank, because the average of nothing isn’t zero and drawing it as zero would invent a collapse that never happened.</p><h2>The rest of a top 10</h2><p>Showing the top 10 of 400 groups made ten bars look like the whole picture. You can now fold everything else into a single <strong>Other</strong> — and where adding up wouldn’t be honest, such as a count of distinct people who may appear in more than one group, it says so instead of showing a confident wrong number.</p>
- CRM Platform
Reports: filters, number formats, and charts you can click
<p>The report builder now offers everything the reporting engine could already do.</p><h2>Filters</h2><p>Reports can be narrowed by any field, with the operators that suit it — is, contains, greater than, before, is empty — and a value box that matches: a date picker for dates, yes/no for checkboxes, a number field for amounts. A filter you haven’t finished typing is left out of the preview instead of quietly returning nothing.</p><h2>Numbers that read like numbers</h2><p>Each measure carries its own format: currency in your workspace currency, percentages, rates, or durations shown as <em>2h 15m</em> rather than 2.25. Totals appear under the table, and only where adding up actually means something — a column of averages gets no total rather than a misleading one.</p><h2>Sort, top N, and your own date range</h2><p>Sort by any grouping or measure, keep the top 10, or set an exact from/to range instead of a preset period.</p><h2>Charts you can click</h2><p>Clicking a bar, slice, funnel step, heatmap cell or pivot cell opens the records behind it — on dashboards too, which previously only looked clickable. Where a segment can’t be turned into an exact list, it stays unclickable rather than opening something that doesn’t match.</p><h2>Everything else</h2><p>A line under every report saying in words what it counts, the underlying rows shown beneath each chart, CSV export, search and duplicate on your saved reports, and a choice of who can see each one.</p>
- CRM Platform
Chat: one Knowledge list, leads you can see, and a preview that really answers
<p>A round of changes to make building a widget simpler to follow.</p><h2>Widgets, Knowledge, Bots</h2><p>The thing on your website is called a <strong>widget</strong> now, and the AI that answers on it is a <strong>bot</strong>. Creating one goes Name → Who answers → Knowledge → Install, with installing last. Inside a widget the tabs are <strong>Look · Words · Answering · Behaviour · Leads</strong>, and the preview on the right answers with your real bot.</p><h2>Leads</h2><p>Every widget keeps its own <strong>Leads</strong>: anyone who left an email or phone number, with every answer they gave, exportable as CSV. Like form submissions, they're kept on the widget — add them to your CRM with the new <strong>Widget lead</strong> automation trigger.</p><h2>Goals live on the bot</h2><p>What a bot tries to find out is now part of the bot. Drag the details into the order it should ask for them.</p><h2>One Knowledge list</h2><p><strong>Answers</strong> is now <strong>Knowledge</strong>, and FAQ and Articles are one list instead of two tabs — quick answers and articles side by side, badged, with a single <strong>+ Add</strong> menu. Which one you want is explained where you choose: a quick answer is matched word-for-word before any AI runs, so it's instant and free; an article is read and summarised. Imported websites sit under <strong>Sources</strong>, where you rescan or replace them, so a scan of 200 pages no longer buries the dozen answers you wrote by hand. Collections only appear once you have more than one. Each knowledge base holds one website, and scanning is far more reliable — and says why when a site can't be read. Visitors only see articles you pick for a widget's Help tab.</p><h2>Also</h2><p>Office hours and the “show the real teammate's photo” switch now save properly, fonts are a list, and images come from your Content Library. Attaching a bot shows its picture and name, the long explanation of how “least busy” is decided moved into an ⓘ tooltip, and switching section no longer flickers.</p>
- Marketing
Lists: sendable counts, duplicate, and an email field that lives on the object
<p>The second half of the Lists work: the numbers on a list mean something now, and the field a list sends to belongs where it always should have.</p><h2>Records, and records you can actually email</h2><p>A list shows both. <strong>Sendable</strong> is the count that matters before a send, and hovering it breaks down the difference: how many unsubscribed or are blocked, how many have no address, how many are a second record holding an address already counted. Each reason links somewhere you can do something about it.</p><p>A list that has not been counted yet says so, rather than showing zero. Those are different facts and only one of them should send you looking for a problem.</p><h2>Duplicate, and Refresh data</h2><p>Both are on the <strong>…</strong> menu, on the index and inside a list.</p><p><strong>Duplicate</strong> copies a list. For a static list it copies the members too — and it copies their <em>consent records exactly as they stand</em>. How and when each address opted in is carried over rather than re-dated to today, because a consent record saying somebody agreed on a day they did not is precisely the thing a deliverability review would be shown. People who had unsubscribed stay unsubscribed in the copy; a duplicate is not a way back through a door somebody closed.</p><p><strong>Refresh data</strong> recounts on demand. It only exists because the counts are now cached — before, they were recalculated on every page load, and a refresh button would have done nothing visible and taught you to ignore it. The cache is also why the Lists page stopped being slow: a workspace with ten segments over fifty thousand records was re-evaluating all ten, in full, every time you opened it. Sending never reads the cache — a campaign always works out its audience fresh, at the moment it goes.</p><p>And <strong>Export CSV</strong> gives you the whole filtered list with the columns you have chosen, not the page on screen.</p><h2>The email field moved to the object</h2><p>A list used to declare which field it sends to. That meant five lists of contacts each stored their own answer and could quietly disagree about the same person’s address. Which mailbox belongs to someone is a fact about your contacts, not about one list of them — so it is now set once, per object, in <strong>Settings → Objects & fields</strong>, and lists use it. A list can still override it for the rare case that genuinely differs.</p><p>Existing lists keep their own setting and send exactly where they always did. Nothing moves on its own.</p><p><strong>New lists can only be created on something with an email field</strong>, with a note saying where to add one. Before, you could make a list nothing could ever reach, and the only symptom was a campaign that went to nobody.</p><h2>Deleting that field is refused, not obeyed</h2><p>If a marketing list sends to a field, deleting the field is blocked, and the dialog names the lists. A list that merely <em>filters</em> on it is a warning instead — a deleted field reads as empty, which is a visible, understandable outcome.</p><p>This is deliberately not a cascade. Deleting a list takes its members with it, and those rows carry the consent record for every address on it — the answer to “how did you build this list?”, which cannot be recreated. A mis-click in settings should not be able to erase that for a few thousand people and cancel live campaigns on the way out. If an administrator forces the delete anyway, dependent lists are pointed at the object’s next address field, or <strong>paused</strong> where there is none — never deleted. A paused list refuses to be scheduled, by name and with the reason, instead of quietly sending to nobody.</p>
- Marketing
Lists: find them, group your conditions, and stop typing out values
<p>Lists is where you decide who a campaign reaches, and it had been left as the thinnest screen in Marketing: a table you could not search, a segment editor squeezed into a 320-pixel rail, and a member list that stopped at a hundred people without saying so.</p><h2>Find a list</h2><p>The index now has a search box, a filter for static lists versus segments, and a filter by which kind of record a list holds. That last one matters more than it sounds: a campaign’s lists all have to be about the same kind of record, so “which of these can I even combine” is a question the screen has to be able to answer. There is a column for it too, and you can sort by size or by when a list last changed.</p><p>Every row has a <strong>…</strong> menu with <strong>Rename</strong> and <strong>Delete</strong>, and the same menu is on the list itself — so renaming no longer means going back to find the row you just came from.</p><h2>Delete says what you are actually about to lose</h2><p>It used to say “contacts themselves are untouched”, which is true and is not the thing anyone needed warning about. It now names the campaigns that send to the list and will be left with no audience, separately from the ones using it to <em>exclude</em> people — where deleting it widens the send instead. And when the list has members it says plainly that the consent records go with it: how and when each address opted in, which is the paperwork you produce when an inbox provider asks how a list was built, and which cannot be recreated afterwards.</p><h2>Inside a list</h2><p>It tells you what it is now — static or segment, which records it holds, how many, and which field it sends to. That was on the index and nowhere on the one screen where you act on it.</p><p><strong>The member table pages properly, and search works.</strong> It used to fetch the first hundred rows and then filter <em>those</em>, so searching a list of four hundred people quietly searched a quarter of it and printed the full count above six results. Search now runs across the whole list.</p><p><strong>You choose the columns</strong>, the same way you do on a record list, from any field on the record. Each list remembers its own choice, because a win-back segment and a newsletter roster are not interested in the same things.</p><h2>The segment editor got the width it needed</h2><p>It sits full-width at the top of the list and collapses to a summary once you are done with it. In the rail it came from, every condition wrapped onto two lines.</p><p><strong>AND and OR together.</strong> Conditions can now be arranged into groups: everything in a group has to match, or any of them, and the groups combine the other way — so <em>customers in London</em> or <em>trials who opened something last month</em> is one segment rather than two. Two levels, which is what expresses every audience anyone actually builds without turning the screen into a query console.</p><p><strong>And you stop typing out values you already have.</strong> Where a field has a fixed set of values — a dropdown, your tags, your campaign names — <em>is any of</em> and <em>is none of</em> now give you a searchable list, and what you pick appears as tags in the one box. Previously that was a text field where you typed each value by hand, spelled exactly, separated by commas. You can still type a value that does not exist yet, and pasting a column out of a spreadsheet turns into tags. It works everywhere conditions do, so flows and campaign refinements got it in the same change.</p><h2>Two things removed</h2><ul><li><strong>The per-list preference centre has gone.</strong> The link in your emails now goes to a single clear switch: subscribed, or not. It is still the only place someone can re-subscribe, and it is still the destination for anyone who mis-clicked unsubscribe — that page and its address are permanent, because they are inside mail already sitting in inboxes. What went is publishing individual lists to it for recipients to tick.</li><li><strong>The double opt-in checkbox on a list has gone.</strong> It was set at the moment a list was created, before it had a single member, and it changed what every later add did. Confirmation links already sent still work and anyone waiting on one still becomes subscribed when they click. Double opt-in itself is unchanged underneath — lists already set that way still confirm every new member.</li></ul><h2>And three bugs found along the way</h2><ul><li><strong>A segment made entirely of groups read as no segment at all</strong> in a couple of places that count conditions — a flow goal or an unenrolment rule that would have quietly stopped applying.</li><li><strong>The campaign refinement editor</strong> checked your whole rule and then saved only part of it.</li><li><strong>Deleting a field that a segment depends on</strong> only looked at the top level of that segment, so the warning had a hole in exactly the case it exists for.</li></ul>
- CRM Platform
Timelines: shared conversations, private notes
<p>A record’s timeline shows what happened on it, and also what happened on records linked to it — open a deal, see the emails with the people on it. That was running in both directions for everything, and it shouldn’t have been.</p><h2>Two things changed</h2><p><strong>Only correspondence travels now.</strong> Emails, calls, meetings, social messages and form submissions move between linked records, because they record something that actually happened with someone — as true read from the deal as from the person. <strong>Notes and tasks stay where you wrote them.</strong> “Chase the revised quote” is a fact about the deal; on someone’s contact record it turned their history into a to-do list. If you want a note in both places, link it to both — that still works and now means something.</p><p><strong>And you never see a conversation that was someone else’s.</strong> Say a deal has two people on it, Jane and Bob. You email Bob about pricing — that was appearing on <strong>Jane’s</strong> timeline too, a conversation she was never part of. It double-counted activity in reporting, over-shared if anyone asked what you held about her, and the first time a rep spots something like that they start double-checking everything, which is the opposite of what a timeline is for.</p><h2>It works whatever you call your records</h2><p>Neither rule looks for “contacts” or “deals”. The second one asks whether an activity already belongs to another record <em>of the kind you’re looking at</em> — so two jobs that share a customer never show each other’s history, and neither do two applications for the same person, without anyone setting that up.</p><h2>One switch, not a puzzle</h2><p>If you don’t want two kinds of record sharing their history at all, there’s a single tick per link under <strong>Settings → Objects → Shared history</strong>, on by default. An earlier version of this had a switch for each direction; once notes and tasks stopped travelling there was nothing left for a direction to disagree about, so it’s one plain sentence instead.</p><h2>Two more</h2><ul><li><strong>New record types now come with a timeline switched on.</strong> Whether you got one used to depend on how the record type was created — and the AI setup, which is how most workspaces get built, was one of the ways that didn’t. Turn it off in Settings for things like products or locations where it isn’t wanted.</li><li><strong>A record with a very large number of links now says so.</strong> The timeline gathers from as many as it sensibly can; before, it quietly stopped at a limit, so a partial picture looked exactly like the whole one.</li></ul>
- CRM Platform
Pipelines: pick what goes on the board, and change your mind later
<p>Setting up a pipeline used to ask two questions — <em>what are you tracking?</em> and <em>who is each one linked to?</em> — and half the time the second one had no answer. Put your contacts on a board and the pipeline is “linked to” the contact it already is.</p><h2>One question now</h2><p><strong>What goes on the board?</strong> Either the records you already have move along it, or you start something new for them. Two options, one click, and everything else — the new record type, the join back, the details on it — gets set up for you.</p><p>You name the new thing yourself, and every screen follows your words. If you run programmes for athletes or matters for clients, that’s what it says — nothing assumes you sell deals to contacts.</p><h2>You choose what to note down</h2><p>Creating something new used to quietly add three fields — value, close date and owner — and nothing mentioned them, so the first you heard of it was wondering where they came from. They’re now a short list you can see, with what each is for written next to it, ticked by default and untickable. <strong>Add something else</strong> puts your own on there in the same breath.</p><p>You can also say who each one is for, and pick as many as you like — a deal that belongs to both a person and their company is normal. Their record shows a list of these back, so everything open for one of them is in one place.</p><h2>And you can change your mind</h2><p>The reason that first question felt heavy is that it looked permanent. It isn’t. When one record needs two things on the go at once, <strong>Track more than one per…</strong> splits every card into a record of its own — keeping its stage, its place in the column and everything you’d tracked about how it got there, each one joined back to where it came from. It tells you exactly how many it will touch before you press it.</p><p><strong>Nothing gets deleted.</strong> Your original records keep everything they had, including the stage they were on; it just stops being a board and becomes an ordinary dropdown on their record. So “start simple and see how it goes” is now advice you can actually take.</p><h2>Stages: drag to reorder, and Win % where you edit them</h2><p>The stage list is drag-and-drop, and it’s now the <strong>same editor everywhere</strong> — setting up a board, editing one, or editing the field in settings. Those had drifted apart: one said <strong>Open</strong> where another said “In progress”, and only one of them had a win percentage.</p><p>That gap was doing real damage. <strong>Editing your stages from the board wiped every win percentage you’d set</strong> — so your forecast, which multiplies each card’s value by its stage’s percentage, quietly dropped to zero with nothing saying why. Win % is on the board editor now, it survives a rename along with the stage’s colour and won/lost setting, and an editor that doesn’t know about a setting can no longer erase it.</p><h2>Add to the board without leaving it</h2><p>Every column has a <strong>+</strong>, and whatever you add starts in that column. It’s the same form you get everywhere else, not a cut-down one. Create takes you to what you just made, and the back link says <strong>← Sales pipeline</strong> and returns you to the board you came from rather than a list you were never on.</p><p>The header is one row now instead of two: which board you’re looking at, what’s on it, and one button to add to it. Setting-up jobs moved behind “…”, because they’re things you do once.</p><h2>Plainer words throughout</h2><p>A common piece of feedback was that the app read as more technical than friendly, so this section had a pass: it now describes what you’ll get rather than what the system does. “That record type no longer exists” became “those records aren’t there any more”; the note under a board went from naming a field to telling you you’ll see the stage on each contact too. More of this to come elsewhere.</p>
- Marketing
Campaign results: click a number, get the names
<p>A sent campaign has always shown its numbers. What it couldn’t do was tell you who they were — and on any campaign bigger than a hundred people, it couldn’t even show you the list it had.</p><h2>Every tile is now a button</h2><p>Recipients, sent, delivered, opened, clicked, bounced, marked as spam, unsubscribed. Click one and the table underneath fills with those exact people. That is what the number was for.</p><p>Two groups the tiles don’t show but the filter does: <strong>delivered but not opened</strong>, and <strong>opened but not clicked</strong> — the audiences a follow-up actually targets. Both count only mail that was delivered, so a bounced address is never counted as somebody who chose not to open.</p><h2>The list was there and you couldn’t reach it</h2><p>The recipient table stopped at 100 rows, with no paging, no search and nothing on screen saying it had stopped. On a ten-thousand-person send the answer to “who bounced?” was rendered and unreachable.</p><p>It now pages, it searches by address, and <strong>Export CSV</strong> downloads everyone matching the current filter — not the page you are looking at — with the send, delivery, open, click, bounce, complaint and unsubscribe times on each row. “Everyone who clicked, as a spreadsheet” is two clicks.</p><h2>And the email itself</h2><p>A report could give you every number about an email and not the email. The campaign now shows what was sent, rendered exactly as it was delivered, beside the things you look for when a number surprises you: subject, preview text, From and reply-to, the lists it went to, the recipient count, and when it started and finished.</p><p>Two smaller ones: <strong>marked as spam</strong> finally has a tile of its own — the figure was already being counted, and it is the one that costs you a sending domain — and where a campaign rotated across several sending addresses, each recipient row shows which one carried it.</p>
- Marketing
Import a CSV straight onto a marketing list
<p>An import used to end at <em>you now have 500 records</em>. Emailing them meant going to Lists, finding the same 500 again and adding them by hand — and the consent attestation was asked in that second place, by whoever happened to be doing it, rather than at the moment the file arrived.</p><h2>Pick the list while you import</h2><p>The import wizard’s Options step now offers the marketing lists that hold this kind of record. Choose one and the rows go on it as they import. The consent tick sits next to it, because the person holding the file is the one who knows where it came from.</p><p>When you finish, the result says what actually landed: how many were added, how many were already on the list, how many are waiting on a double opt-in confirmation, and how many were left off — with the reasons separated, because <em>this person unsubscribed</em> and <em>this address doesn’t exist</em> are different problems and only one of them is yours to fix.</p><h2>Nothing treats an imported contact as second-class</h2><p>Worth saying plainly, because it is the question people ask: an imported record is exactly as mailable as one you typed in or one a form captured. Solstral does not ask how a record was created when it decides who a campaign goes to, and it never has. The only things that keep an address off a send are a standing unsubscribe, bounce or complaint; a watchdog alias like <code>postmaster@</code>; or a double opt-in list it hasn’t confirmed yet. Ordinary shared addresses — <code>info@</code>, <code>sales@</code>, <code>support@</code> — go through.</p><p>Somebody who has unsubscribed stays off, whatever the file says. That is the one rule an import cannot talk its way past, and the result tells you how many rows it applied to.</p><h2>Two fixes alongside it</h2><ul><li><strong>A double opt-in list now says so before you import</strong>, rather than after — every row lands unconfirmed and waits for a click, which previously showed up as a campaign with an audience of nought.</li><li><strong>Records of the wrong type are no longer added to a list.</strong> A company on a contacts list has no address in the field that list sends to, so it sat there as a member nothing could reach while making the list look bigger than it was.</li></ul>
- Marketing
One subscription per address — and a page that says who you can't email
<p>Two things could disagree about whether somebody had unsubscribed, and only one of them stopped mail. That is now settled, and the answer has somewhere to live.</p><h2>Subscription belongs to the address</h2><p>A contact record is your filing of a person. The same human can be two records, and one record can hold a work address and a personal one — so consent sits on the <strong>mailbox</strong>, which is what receives the mail and what somebody clicked unsubscribe in. One opt-out stops mail to that address everywhere in your workspace, on every object it appears on. It does not opt out the other address on the same contact, which is deliberate: two mailboxes, two consents, and the record now shows both so it reads as a decision rather than a surprise.</p><p>List membership went back to being what it is — segmentation, and the record of how someone consented. It is no longer a second, quieter opt-out that could say "subscribed" about somebody who had asked you to stop.</p><h2>Do not email</h2><p>A new page under Marketing lists every address marketing is blocked to and why, with a count against each reason. Forty spam complaints and forty dead addresses are different problems and neither shows up in a campaign report; now both are on one screen.</p><p><strong>You can add an address yourself.</strong> “Take me off your list” gets said on calls and in replies far more often than it gets clicked, and until now there was no way to act on it — removing someone from a list left them mailable from every other one. Anyone who can edit records can do it, from that page or from the Marketing card on the contact, and it comes off every list at once. Transactional email they asked for still goes out. Lifting a block stays with administrators, because that is the direction that can resume mail to someone who reported you.</p><h2>The record answers “why didn’t they get my email?”</h2><p>It used to take four places to work out: a list status, a suppression, a bounce tally, a sunsetting rule. The Marketing card now leads with the state of each address on the record, the reason in plain words, and the date.</p><h2>Managing your subscription, from the recipient’s side</h2><p>The preferences link in your emails is now a single clear switch — subscribed or not — unless you have deliberately published two or more lists for people to choose between. It used to be able to show a page reading “no subscription options are available for this address”, which was the default state for anyone who added the link without setting lists up, and is the worst possible version of offering someone a choice.</p><p>It is also the only place a <strong>re-subscribe</strong> exists, so the unsubscribe confirmation now points at it — for the people who mis-clicked, and the ones who only wanted less mail rather than none. Where several lists are on offer, clearing every box is now treated as unsubscribing from everything, which is what it looks like; previously it left you mailable.</p><h2>Three fixes behind it</h2><ul><li><strong>Unsubscribing via a non-standard email field</strong> — a work or billing address rather than the default one — stopped the mail but left every list showing that person as subscribed. Every email field on every object is matched now, and case no longer matters.</li><li><strong>Automations and imports could re-add someone who had opted out</strong>, as long as they had no row on that particular list. The mail never went out, but the membership recorded consent on a day the person had said the opposite. Both check the address now, and an import reports how many were skipped for it.</li><li><strong>Asking whether an address is suppressed</strong> could return any one of several reasons at random. It now names the most serious one — so a dead mailbox is never reported to you as somebody’s choice to leave.</li></ul>
- Email Infrastructure
You can send from your root domain without touching your website
<p>If your website lives at <code>acme.com</code>, you could not send from <code>info@acme.com</code>. Not because of anything to do with DNS — because of us.</p><h2>What was wrong</h2><p>A domain had to be <em>verified</em> 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 <strong>is</strong> your website.</p><p>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.</p><h2>What changed</h2><p>Proving you own a domain and pointing a domain at us are now two separate things. Sending needs the first. Hosting needs both.</p><p><strong>Every record email asks for sits on a subdomain</strong> — <code>_domainkey</code>, <code>bounce</code>, <code>link</code>, <code>_dmarc</code>. 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.</p><p>Adding a domain now asks one question: is it for <strong>sending email</strong>, or for <strong>hosting a website or the CRM</strong>? 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.</p><h2>One set of records, one sitting</h2><p>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.</p><p>The <strong>bounce address</strong> 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.</p><h2>The DNS screen tells you which record is wrong</h2><p>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.</p><p>It is now one list, grouped by what each record actually does for you — <strong>Required</strong> (nothing sends without it), <strong>Recommended</strong> (it sends, but lands worse) and <strong>Optional</strong> — 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.</p><h2>And an address with no mailbox behind it</h2><p>Adding <code>info@</code> or <code>hello@</code> 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.</p>
- CRM Platform
Flows: fewer triggers, and the data you needed was already there
<p>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.</p><h2>Triggers no longer ask which object they are about</h2><p>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 <strong>Record created</strong>, <strong>Record updated</strong>, <strong>On a schedule</strong> and <strong>Manual</strong> 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.</p><p>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.</p><h2>Field changes, the chat triggers and campaign feedback are retired</h2><p>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.</p><p><strong>Field changes</strong> was a second way of saying what Record updated already says: narrow it to the field, then use a Filter step for the value. <strong>The eight chat triggers</strong> 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”. <strong>Campaign email feedback</strong> 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.</p><h2>A new trigger for the mail your team actually sends</h2><p><strong>Sales email engaged</strong> 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.</p><h2>The meeting time comes with the meeting</h2><p>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. <strong>Load recent data</strong> on a meeting trigger loads a real meeting, rather than asking you to pick an object from a control that is no longer there.</p><h2>The webhook accepts whatever you send it</h2><p>It used to accept JSON objects and reject everything else with a 400 — including <code>application/x-www-form-urlencoded</code>, 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.</p><p><strong>And you no longer have to publish a flow to test its webhook.</strong> 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.</p><h2>Captured test data reads as fields and values</h2><p>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.</p><h2>Four fixes</h2><ul><li><strong>Add another step</strong> did nothing on a flow that was still just its trigger.</li><li><strong>Listen for test data</strong> took two clicks: the first one started listening and the panel immediately said it had not.</li><li><strong>The trigger tile on the canvas</strong> 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.</li><li><strong>The engagement condition and the meetings booking-page filter were never saved.</strong> 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.</li></ul>
- Platform
Extra workspaces are now a plan you pick — and two tabs finally work
<p>One login has opened several workspaces for a little while now. Three things about that were wrong, and all three are fixed.</p><h2>An extra workspace is a purchase, and you choose the plan</h2><p>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.</p><p>Now <strong>Create workspace</strong> 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.</p><p>Because the plan is charged for up front, <strong>the workspace is not created until the payment goes through</strong>. 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.</p><h2>Your card is already on file, so we do not ask for it again</h2><p>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.</p><p><strong>Trials are counted per person.</strong> If you have had one, your next workspace starts on the paid plan immediately — you have already seen what the trial was for.</p><h2>Two tabs, two workspaces, both correct</h2><p>Until now the workspace you were in belonged to the <em>session</em>, 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.</p><h2>Invoices arrive as invoices</h2><p>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.</p>
- Email Infrastructure
You can now require encryption on mail sent to your domain — carefully
<p>Five days ago we shipped TLS reporting and said the point of it was to make it safe to <em>require</em> encryption later, rather than merely prefer it. That is now on offer.</p><h2>What it does</h2><p><strong>MTA-STS</strong> 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.</p><p>Hosting that policy is the reason most products skip this — it has to be served over HTTPS on a subdomain of <em>your</em> 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.</p><h2>Why it starts in testing, and stays there until you have evidence</h2><p>This is the only setting in Solstral that governs mail <strong>arriving at</strong> 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.</p><p>So it opens in <strong>testing mode</strong>, 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.</p><h2>The list is on screen before anything is published</h2><p>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.</p><p>We re-check it every day afterwards. <strong>If you move mail provider</strong> — 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.</p><h2>Turning it off is a thing that happens, not a thing you delete</h2><p>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.</p><p><strong>Switch off</strong> 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.</p>
- Marketing
The email builder: edit on mobile, and a toolbar that does what it looks like
<p><strong>Mobile is now a view you can edit in, not just a preview.</strong> 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. <strong>Desktop</strong> and <strong>Mobile</strong> now choose the canvas width and both are fully editable; <strong>Preview</strong> 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.</p><p><strong>The formatting toolbar works from a selection now.</strong> 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.</p><p><strong>Padding is per side.</strong> 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.</p><p><strong>A blank campaign opens on a starter layout</strong> — 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.</p><p>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 <strong>send-date filter</strong> — upcoming, the last 7/30/90 days, or a range — which drives the calendar view too.</p>
- Marketing
Subject lines read properly, and a reply to a test send comes back
<p>Two things that quietly did not do what they looked like they did.</p><p><strong>Campaign subject lines are shown as they will read.</strong> Every table listing a campaign printed the subject exactly as stored, so a subject written the way the tag menu suggests — <em>Your monthly update from {{workspace.name}}</em> — 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.</p><p><strong>Replying to a test send now reaches the CRM.</strong> 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.</p><p>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.</p>
- CRM Platform
Every way into a workspace now proves the email address
<p>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.</p><p>That is sound when <em>we</em> 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.</p><p><strong>So accepting an invitation now takes you back out to your inbox.</strong> 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.</p><p>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.</p><p><strong>Setting up a workspace also got two small fixes:</strong> 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.</p>
- Plan & Billing
A clear path from a CRM we set up for you to a plan you choose
<p>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.</p><p><strong>There is now a date.</strong> 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.</p><p>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.</p><p><strong>If the date passes with no plan chosen, the workspace becomes read-only.</strong> 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.</p><p>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.</p>
- Plan & Billing
Changing plan mid-month now does the fair thing in both directions
<p>Two different situations were being treated as one.</p><p><strong>Moving up happens immediately.</strong> 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.</p><p><strong>Moving down waits until the period you have paid for ends.</strong> 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.</p><p>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.</p><p><strong>Billing is now five tabs</strong> 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.</p>
- Email Infrastructure
Two invisible failures made visible: unencrypted mail, and email that looks machine-made
<p>Both of these were already failing. Neither of them told anyone, which is the point.</p><h2>You can now see when encryption fails</h2><p>Mail between servers is normally encrypted. When it cannot be, the fallback is to <strong>send it in the clear anyway</strong> — 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.</p><p><strong>TLS reporting</strong> 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.</p><p>This is also the groundwork for <em>requiring</em> encryption rather than preferring it. That is a much bigger step, because an incorrect policy makes mail to your domain <strong>undeliverable</strong> 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.</p><h2>Automated email now looks like a real system sent it</h2><p>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 <em>who</em> 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.</p><p>Every automated email the product sends now carries those things. Where we know your brand, it is <em>your</em> 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.</p><p>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.</p>
- 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 — <em>“554 … Downstream server error”</em> — 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. <strong>The recipient thinks they answered you. You never hear from them.</strong> <strong>Two things changed.</strong> First, <strong>every email the product sends now carries a Reply-To that reaches a real destination</strong> — 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: <strong>replies can now arrive on your own domain.</strong> Publish one MX record and replies go to <em>reply.yourdomain.com</em> instead of a shared address on ours. <strong>Why bother, when the shared address worked?</strong> 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 <em>not</em> 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. <strong>It also made the address shorter</strong>, 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 <em>reply@reply.yourdomain.com</em> — and it carries your brand name in front of it rather than arriving as a bare machine-generated string. <strong>Turning it off is safe.</strong> 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 Platform
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. <strong>Both are fixed.</strong> Runs are a table now, and clicking one opens a panel <em>over</em> 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 <strong>Input</strong> tab showing what the step actually ran with. Not the template you wrote, the finished thing: <em>“Follow up with Acme”</em>, not <em>“Follow up with {{record.name}}”</em>. The step that failed opens expanded, because that’s the one you came to look at. <strong>And each step links to what it did</strong> — 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 <em>“not recorded”</em> rather than pretending to have an empty input. <strong>Elsewhere in flows:</strong> 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. <strong>Conditions can look beyond the record</strong>, 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. <strong>“For each” offers you the lists you can actually loop over</strong> instead of asking you to know the syntax — and deliberately doesn’t offer the ones that would silently loop zero times. <strong>Setting fields is one list again</strong>, 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 <strong>“Get stored value” and “Store a value” are one step</strong> called Stored value, with Read / Set / Increase.
- CRM Platform
Four ways to split a flow became one
The flow builder offered <em>Filter</em>, <em>If / else</em>, <em>Branch by value</em> and <em>Paths</em> 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. <strong>There is now one step: Branch.</strong> 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 <em>is</em> 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. <strong>Nothing in your existing flows changed.</strong> 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 <strong>Convert</strong> 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. <strong>The random split stayed separate</strong>, renamed <em>A/B split</em>, 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 Platform
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. <strong>The save error that told you nothing is gone.</strong> Saving a flow with a half-filled condition answered <em>“String must contain at least 1 character(s)”</em> — technically correct, and useless across a flow with forty steps. It now says <strong>“Update record (‘Notify the owner’) — condition 1 has no field chosen”</strong>, 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 <em>Show me</em> link. <strong>The settings panel is half again as wide</strong>, 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. <strong>The list of 38 steps no longer sits underneath the step you’re configuring</strong>, so setting one up doesn’t mean scrolling past your own settings. <strong>Flow cards are cards again</strong> — Pause and Edit, with duplicate, rename, export, move and delete behind a menu. <strong>Test data now follows your trigger.</strong> Every captured sample records which trigger produced it, and the builder was ignoring that: switch from <em>Record created</em> to <em>Form submitted</em> 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. <strong>“Record updated” can now watch specific fields</strong> instead of firing on every change — leave it empty and it behaves exactly as before. <strong>And deleting a field tells you what it breaks, before you delete it.</strong> 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. <strong>Six steps were retired:</strong> Send SMS, Send WhatsApp / DM, Publish social post, Update product, Update stock and Do in parallel. Two of them <em>had never had a settings panel at all</em> — 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. <strong>A flow that already contains a retired step still opens, still saves, and still runs everything around it</strong> — 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.
- 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 <em>in the conversation</em>. 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. <strong>There is now one draft, in a panel beside the chat.</strong> It stays put while the conversation scrolls, it survives a reload, and every change goes into that one email rather than producing another copy. <strong>The part that matters is what happens when you’ve typed into it.</strong> 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. <strong>It says so honestly, too</strong> — “I’ve suggested a rewrite, it’s waiting for you” rather than “done”. <strong>Send goes from the panel</strong>, 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.
- AI Assistant
The assistant can now reach every part of the app
The last gaps are closed. <strong>It can answer for itself now:</strong> “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. <strong>Teams, not just roles.</strong> “Give Sam access to Deals” used to have no good answer — the assistant could only change someone’s <em>role</em>, 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. <strong>And it can reply to customers</strong> 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
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 <em>where each one links</em> — 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 <em>same</em> ask down a long page is good practice, and it knows the difference). <strong>SEO, written for you and filled in.</strong> 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. <strong>Copy changes go to the draft.</strong> 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
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. <strong>This is the thing that was holding the rest back.</strong> 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. <strong>It won’t delete fields.</strong> 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. <strong>It also won’t let you end up with “Phone” and “Phone number”.</strong> 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
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. <strong>The useful part is the condition.</strong> “Follow up in three weeks <em>unless they reply first</em>” 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. <strong>Two things it deliberately won’t do.</strong> 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.
- 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 <em>they</em> last replied, when anyone last spoke to them, and how many messages have gone unanswered. <strong>The answer is the same every time you ask it.</strong> 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. <strong>And it knows when to tell you to stop.</strong> 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.
- 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. <strong>It respects your mailbox permissions exactly.</strong> 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. <strong>And it keeps your reporting honest.</strong> Raising a ticket’s priority re-targets its deadline from when the ticket was <em>raised</em>, 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
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. <strong>It always builds a draft.</strong> 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. <strong>It refuses to guess at fields.</strong> If you ask it to save an answer somewhere that doesn’t exist, it says so and lists the fields that <em>do</em>, 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. <strong>And it won’t give you duplicates.</strong> 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.
- Plan & 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.” <strong>Billing now itemises it.</strong> Two charts under your credit balance: what’s spending them, and who’s spending them, over 7, 30 or 90 days. <strong>The row that usually explains the bill is the one with no name on it.</strong> 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. <strong>Attribution is written by the same code that charges the credit</strong>, 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
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. <strong>It now keeps notes.</strong> 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 <em>the business</em>, shared with everyone and editable by admins, and one about <em>how you personally work</em>, private to you. <strong>Ask it “what do you remember about us?” and it will tell you, exactly.</strong> Tell it to forget something and it forgets it, and says which lines went. <strong>Two deliberate limits.</strong> 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 <em>facts</em>, 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 <em>your</em> chats, weeks later, with nobody watching.
- 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. <strong>Any workspace setting.</strong> “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. <strong>And people.</strong> 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. <strong>It also reads the audit trail now:</strong> “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
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 <em>before</em> you import it. <strong>It cleans what people actually type.</strong> <code>$1,200.00</code>, <code>(1,200)</code> and <code>1200 AUD</code> are all twelve hundred. <code>+61 (0) 400 123 456</code> and <code>0400-123-456</code> are both phone numbers. <code>Jane Doe <jane@acme.com></code> is an email address. <code>N/A</code>, <code>-</code> and <code>unknown</code> are all empty. <code>closed-won</code> is your existing <em>Closed Won</em> stage. Blank rows and the header line some exporters repeat halfway down the file are dropped rather than imported as records called “Email”. <strong>What it won’t do is guess.</strong> Dates read day-first, the way the rest of the product does — but <code>04/25/2026</code> could 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
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. <strong>They appear in the box, not in the conversation.</strong> 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. <strong>The recording is never stored.</strong> 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 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. <strong>It now does the work.</strong> Ask it, and it takes the domain from the address you mentioned, registers it, and hands you the DNS records <em>in the chat</em> — 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. <strong>Open Settings afterwards and you’ll find it exactly as if you’d done it by hand</strong> — 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. <strong>And a new question it can answer:</strong> “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.
- 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. <strong>Every object now carries its own recency, derived from its real timeline.</strong> Five new fields on contacts, companies, deals and every custom object: <code>Last activity</code>, <code>Last email sent</code>, <code>Last reply received</code>, <code>Last call or meeting</code>, and <code>Days since last activity</code> — the last of which is a number, so you can filter on <code>> 180</code> and group the result by owner. <strong>Inbound is deliberately separate from outbound.</strong> “We emailed them” and “they wrote back” are different facts, and only one of them is engagement. <strong>And the mirror image:</strong> the Activity and Email report sources now expose <code>Record</code> and <code>Record type</code>, 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.
- 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. <strong>Each sending domain now has its own page.</strong> 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. <strong>Three things that were plainly broken are fixed.</strong> Turning on the bounce address told you to publish an MX and a TXT record, and then — the moment you reloaded the page — <em>didn't show you the records</em>. 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. <strong>DMARC now offers you a record in every situation where there's one worth publishing.</strong> Previously, if you sent from a subdomain like <code>mail.acme.com</code> and <code>acme.com</code> already 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 at <code>p=none</code>, 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. <strong>And BIMI is finally reachable.</strong> 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 <code><title></code>, the right profile declared — rather than being rejected by a certificate authority days later with no explanation. <strong>The warm-up ramp now counts everything, and shows you where it's up to.</strong> It was only counting campaign sends, which meant marketing emails sent from a flow went out completely uncapped <em>and</em> 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. <strong>A marketing footer per brand.</strong> 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. <strong>Replies now find the right mailbox.</strong> A reply to something you sent came back to a single workspace-wide address, which meant replies to <code>sales@</code> and <code>support@</code> arrived indistinguishable and unassigned. They now route to the mailbox that owns the address, and auto-assignment runs on them like any other message. <strong>Two smaller things.</strong> 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 Platform
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. <strong>Every date field in Solstral now uses the same calendar.</strong> 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, <strong>Today</strong> and <strong>Tomorrow</strong> 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. <strong>You can still just type.</strong> The field takes <code>today</code>, <code>tomorrow</code>, <code>+7</code>, <code>+2w</code>, <code>25/12</code> or 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: <strong>3/4 is 3 April</strong>. One deliberate exception: <strong>public forms on your own website keep the native control</strong>, 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. <strong>And folders can now be renamed and deleted everywhere they exist</strong> — 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. <strong>Deleting a folder tells you what's in it first.</strong> 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 <em>two</em> 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. <strong>There is now one front door.</strong> You add a domain once, in <strong>Settings → Domains</strong>, 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. <strong>You are also no longer asked what a domain is for while you're adding it</strong> — 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. <strong>A fix that had been quietly infuriating: a domain waiting on DNS couldn't be removed.</strong> 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 <em>intended</em> 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. <strong>Email authentication is now ranked rather than listed.</strong> 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. <strong>An optional bounce address</strong> 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 <strong>DMARC is now read and explained</strong> — including the trap where a sending subdomain inherits its policy from the root domain, or has it overridden by an <code>sp=</code> tag, which is how people end up at <code>p=reject</code> on 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. <strong>BIMI</strong> — 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. <strong>And who owns a domain is now decided by DNS, not by who typed it first.</strong> Adding a domain used to claim it globally: if any other workspace had already added <code>acme.com</code> — 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 <strong>the first to publish the DNS record keeps it</strong>; 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, <strong>one-click DNS setup is live</strong> 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 Platform
Report a bug from the assistant, a signup that no longer dead-ends, and error messages that name the problem
<strong>You can now report a bug or ask for a feature by telling the assistant.</strong> 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. <strong>Signing up no longer dead-ends.</strong> 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. <strong>“Validation failed” now says which field.</strong> 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. <strong>Automated social replies are labelled.</strong> 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. <strong>The messaging-window warning in the inbox now matches the platform’s actual rule</strong> — 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. <strong>And the AI assistant works again on the current OpenAI models</strong>, 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 Platform
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. <strong>That's over: signing up now creates your workspace immediately and starts a free trial of the full product.</strong> 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. <strong>The trial is now a plan in its own right</strong>, 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 — <strong>your data is never deleted</strong>, 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 Platform
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 <strong>Capture lead</strong> 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 <strong>two contacts for the same person in one chat</strong> — 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 <strong>Set agenda</strong> 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 <strong>AI assistant</strong> (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 Platform
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 <em>how do you know that's right?</em> Agendas now answer it. Every value a bot learns is recorded with its <strong>provenance</strong>: whether it matched a recognised format (an email, a phone number, an amount) or was <strong>inferred by AI</strong> — 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 <strong>AI</strong>, 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 <strong>redacted in that log</strong> — an email shows as <code>s…@acme.com</code>, 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 <em>what was written, when, by which model</em> is kept — because the audit question is about the write, not the value. Two more things arrived with it. <strong>Dry runs</strong>: 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 <em>would</em> have needed AI, so you can see what an agenda costs before you turn it on. And <strong>stats</strong>: 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 <strong>report source</strong> 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 Platform
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 <strong>get something done</strong>. An <strong>agenda</strong> is a set of objectives you give a bot — gather these details, qualify against these rules, then do this — that it pursues <em>while</em> it answers, rather than instead of answering. Start from a preset (<strong>Capture lead</strong>, <strong>Pre-qualify a lead</strong>, <strong>Book a meeting</strong>, <strong>Support triage</strong>) 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 <strong>at most one</strong> 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 <strong>builds one record</strong> — 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 <strong>empty</strong>: 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. <strong>Qualification</strong> reuses the same condition builder as flows: score answers, set a threshold, and the visitor comes out qualified, disqualified, or — importantly — <strong>unknown</strong>. 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 <strong>versioned</strong>. 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 Platform
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 <strong>answering modes</strong>. <strong>AI first, then a human</strong> is the default and works as before — the bot answers and hands over when it isn't confident. <strong>AI only</strong> never escalates. <strong>Humans only</strong> 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: <strong>humans while we're open, AI otherwise</strong> — 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: <strong>the bot stops the moment a teammate steps in</strong>. 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 <strong>Bot handling</strong> or <strong>You have it</strong>, with <strong>Take over</strong> and <strong>Return to bot</strong> 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 Platform
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 <strong>as many separate knowledge bases as you like</strong> — 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 <strong>bot-only</strong>, 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 Platform
Visitors see the real person they're talking to — and the chatbot moves in with chat
Two changes to live chat. First, <strong>the widget now shows the actual teammate handling the conversation</strong> — 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 <em>that person</em> 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, <strong>the AI chatbot is no longer a separate section</strong>. 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 Platform
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 <strong>records</strong> — 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. <strong>Ten new report sources</strong> 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. <strong>Pipeline analytics arrived</strong>, 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. <strong>Goals</strong> let you set a target for any metric by month, quarter or year, optionally per person, and track progress against it. <strong>Weighted forecasting</strong> uses the win probabilities already on your stages, so no setup is needed. Reports also got better at answering "compared to what": pick <strong>Compare to previous period</strong> 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 <strong>group by owner</strong>, 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. <strong>Click any bar, slice or row to open the records behind it</strong>, 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 Platform
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, <strong>trials</strong>. 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 <strong>read-only</strong> 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, <strong>plans are now editable</strong> 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 <strong>price</strong> 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 <strong>limit</strong> 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.
- CRM Platform
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. <strong>Labels</strong> 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 <strong>folders</strong> 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. <strong>Search</strong> now covers message bodies, email subjects and senders — not just names — and any combination of filters can be kept as a <strong>saved view</strong>, private to you or shared with the team. <strong>Internal notes</strong> 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: <strong>star</strong> to pin a thread to the top, <strong>archive</strong> to clear it without declaring it resolved (an archived thread comes straight back if the customer writes again), <strong>snooze</strong> with real choices — an hour, three hours, tomorrow, next week — rather than only a day, and <strong>bulk actions</strong> from checkboxes in the list to close, archive, assign, label or mark read across a whole selection at once. <strong>Keyboard shortcuts</strong> are the Gmail ones: <code>j</code>/<code>k</code> to move, <code>e</code> archive, <code>y</code> close, <code>s</code> star, <code>u</code> unread, <code>a</code> assign to me, <code>r</code> reply, <code>n</code> note, <code>l</code> labels, <code>/</code> search, <code>?</code> for the list. Every row now shows a <strong>waiting timer</strong> — 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 <strong>docked in the thread</strong>, 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 <strong>suggested matching records</strong> — 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.
- 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 <strong>drag blocks straight into a column</strong>, 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 <strong>Content Library</strong> 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 <strong>Content Library</strong> 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 <strong>email template library</strong> 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 <strong>send yourself a test</strong> 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
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: <strong>route replies to the CRM</strong>, which sets the reply address to your CRM inbound address so responses come straight in, or <strong>also CC the CRM</strong>, 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
The form thank-you screen is now designed, not typed
What someone sees after submitting a form is now built on the <strong>Thank you</strong> 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 Platform
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.
- CRM Platform
One place for domains, a calendar-only booking block, and animations that actually animate
Domains now live in one place. Settings → Domains lists every domain and subdomain your workspace owns, and each one says what it's for: <strong>the CRM app</strong> (reserved, shown as taken) or <strong>websites</strong> (available to publish a site on). That fixes a real trap — a domain you verified for your website was being claimed for the app, which is why it never appeared as connectable under your site. New domains now default to websites, and the Domain section on each site lists every domain with the reason beside any you can't pick: awaiting DNS, reserved for the app, or already used by another site. Email sending domains stay where they were, in Settings → Email. You can now also <strong>choose</strong> which domain the CRM itself runs on: the top of the page always states the current app address, and any app-role domain has a <em>Use as the app address</em> button that registers it and issues its certificate, releasing the previous one. Previously whichever domain you happened to add first won, silently, with no way to change it. DNS records got a lot clearer too. Every domain has a <strong>DNS records</strong> button that works at any time — before, during and after verification — so you can always check what you published. Each record says what it's for (routing, ownership or certificate) and carries its own green or amber indicator based on a live lookup of that exact record, so one typo'd entry is pinpointed instead of leaving the whole domain on "pending". Verified domains now show a solid green state rather than just dropping the word "pending". And because verification genuinely runs in two stages — prove ownership, then issue the certificate — the panel now says which step you're on and warns you up front that the ownership record will drop off the list and be replaced by <code>_acme-challenge</code> records. That was always correct behaviour; it just looked like your records had vanished. Website domains now get an HTTPS certificate issued automatically the moment you register them — previously only the app address did, so a custom website domain would verify, go green, and then fail in the browser with a certificate error. And if you enter a root domain like <code>acme.com</code>, Solstral now says so up front and explains the three ways to point it at us, instead of handing you a CNAME record that DNS won't let you create at the root. The booking block for websites got a Show setting, defaulting to <strong>Calendar only</strong> — just the date and time picker, without the avatar, host name, duration and location card that the standalone booking page shows, since your own page already says all that. Embedded booking and form widgets now grow to fit their content instead of being cut off at a fixed height (which is what made a published booking block show its details card and no calendar), they're transparent so they sit in whatever section you drop them into, and there's no "Powered by" line on your site. In the builder, animations were rebuilt: every preset now plays its full effect — Fade up genuinely fades as it rises rather than sliding in already visible — and each one gained a strength control, so you set the distance of a slide, the degrees of a rotation, the scale a Scale up grows from, or the blur amount, instead of accepting one hardcoded magnitude. Duration now drives the looping Float and Pulse effects too. Sliders got a proper autoplay checkbox instead of a text box, and any element inside a slider can be made the previous or next control — with a one-click way to restore the arrows if you delete them. The Popup element no longer ships with a trigger button you have to delete: drop the popup, then point any button at it from Settings, make any element inside it a close control, and tick close-on-outside-click. Finally, panel polish: the breakpoint switcher stops sliding around while you work, dropdowns and number fields no longer squeeze themselves down to an unreadable width (they wrap to their own line instead), the spacing box fits values like "auto", and the pages table sits on a white card.
- Automation
Test flows with real data, click-in data chips, and folders
Building automations is now a test-and-map loop, for every trigger — not just webhooks. Hit "Listen for test data" on any trigger and do the real thing (submit the form, create the record, open the campaign email) and the actual submission appears in the builder within seconds, even on a draft; or press "Load recent data" to pull the latest matching record so you're never waiting. The captured sample flows through the whole flow: run a test and each step shows its real output, which then becomes click-in data chips for the steps below it — so you insert {{First name}} from a dropdown instead of typing mustache by hand, and a configured field reads "Hi [First name] from [Company]". Branch and filter conditions get the same chip picker. New flows now start by asking you to choose a trigger rather than guessing one, and can't be turned on until you have. Marketing steps got smarter too: adding to a list from a flow triggered on a different object now matches by email instead of adding the wrong record, with a picker to use the enrolled record, a linked record, or a typed address; the "send marketing email" step shows the template's real subject and won't offer a phantom email field when there's no record; and a "create record" step warns when the form that triggered the flow already creates that record. Finally, organise everything into folders — with per-folder visibility so you can keep some flows to admins or specific teammates — right from the automations list.
- CRM Platform
Tabs, sliders, popups and a dozen more elements in the website builder
A big batch of new elements, and one important fix. First the fix: adding a Link or a Form element could crash the builder and force a restart. That's resolved, and panels are now isolated — if something does go wrong in a side panel, your page and its autosave keep working instead of the whole editor going down. Forms also embed properly now: they used to sit on a grey slab, and they now inherit whatever section you drop them into, with only the fields keeping their own background. The form picker works too, so you choose which of your published forms to show from a dropdown. New elements: Tabs, Slider (arrows, dots and optional autoplay), Accordion and a standalone accordion item, Popup, and Lightbox images that open full-screen on click. Plus the everyday pieces — Divider, Spacer, Icon, Quote, Badge, Social links, and an Embed block whose code you paste in the Settings panel (or a full-size editor) instead of onto the page, so the canvas stays readable. Video backgrounds arrived two ways: a ready-made Video background section, and a Video field in the Backgrounds settings that puts a muted, looping video behind any element you've selected. None of them are sealed widgets: each is ordinary markup you can open in the Navigator, take apart, restyle and rebuild, and they're all visible while you're editing even though they're hidden or collapsed on the live page. Finally, the Interactions tab can now show, hide or toggle any other element on click — give an element an ID, point a button at it, and you've built a popup, a dropdown or a read-more panel out of plain divs. Press Preview to try any of it exactly as visitors will see it.
- CRM Platform
Website builder fixes: elements palette, autosave, panel layout and canvas handles
A round of fixes to the redesigned website builder. Classes now do what classes are for: style an element that has a class and every element sharing it updates too — previously the change stayed on the one element. The style selector also spells out what you're editing ("Editing .button — affects every element with this class"), and you can click a class to include or exclude it from the rule, so styling .button and .button.is-large are both one click away. Saved components keep their styling: they used to save the markup only, so dropping one on another page gave you an unstyled copy. Saving a component now happens in a proper dialog with a dropdown of your existing groups instead of two browser prompts, and those groups finally show up as headings in the Add panel. Copies stay linked to the original — edit the component once and every instance updates — and they're labelled "Component (linked)" so that's obvious; right-click and Detach if you want one to differ. Dropped sections are no longer black boxes: the Navigator now shows each one as a labelled outline — Hero → Container → Heading, Text, Row → Button — so you can click straight to the piece you want, restyle it, or pull it into a layout of your own. Building from scratch got easier too, with plain Section, Container and Div elements plus vertical, horizontal and grid boxes. The column rows were rebuilt as well — 2, 3 and 4 columns and two sidebar splits — and they're now proper grids, so with a row selected you add or remove a column from the Layout panel in one click, and set it to a single column on mobile without touching the desktop layout. The old column blocks styled every row on the site at once and stacked at a screen size the builder didn't even offer. Grid layouts no longer need you to know CSS: pick Grid and just type how many columns and rows you want. Previously the field wanted CSS track syntax, and typing a plain "3" was invalid CSS the browser threw away — so nothing happened. Aspect ratio is a named list — Square, Widescreen, Portrait and so on — and image cropping is a nine-point grid rather than a pair of percentages. Interactions now play when you hit ▶ Preview in the builder: previously animations stayed frozen there, which was the one place you'd go to check them. Scroll-triggered animations also fire correctly on sections taller than the screen, which used to stay invisible. The Elements and Layouts palette no longer sits on "Loading…" — it fills in as soon as the editor opens. Autosave now actually persists: page edits were being saved correctly but discarded when the page was read back, so reopening a page showed the old version; that's fixed, and if a save ever does fail you'll see it in the top bar instead of it failing quietly. Saving page settings no longer reloads the canvas and loses unsaved work. The old leftover toolbar that overlapped the top bar and the Style tab is gone, which also removes the buttons that could quietly put the editor into a state where clicking an element stopped opening its panel — and selecting an element now always reveals the panel. Paired controls like Width/Height and Min/Max no longer overlap in narrow panels: their labels sit above the field, wide option pickers wrap instead of squashing, and the panels can be dragged wider. Every numeric field is now click-and-type as well as drag-to-scrub — including the spacing box, where a single click opens a text field — and slider readouts (opacity, blur, shadow offsets) are editable, so you can enter an exact value anywhere. Finally, the canvas resize handles stay locked to the edges of the page frame when you switch breakpoints, and can no longer be dragged off-screen or over the side panels.
- CRM Platform
A redesigned website builder: real CSS controls, layered backgrounds and a resizable canvas
The website builder now looks and works like a professional design tool. The whole interface moved to a dark designer theme, and the style panel was rebuilt from scratch around the way CSS actually works — grouped into Layout, Spacing, Size, Position, Typography, Backgrounds, Borders and Effects. Spacing is now a visual box you drag: hold Alt to change both sides at once, Shift for all four. Flex layouts get a nine-point alignment picker. There's a proper Position section — static, relative, absolute, fixed and sticky with offsets, z-index, float and clear — which simply didn't exist before. Typography shows the six controls you reach for and tucks the other fifteen behind "More type options". Backgrounds are now layers you stack, reorder and toggle — images and linear, radial or conic gradients with a draggable angle dial and editable colour stops — over a single background colour, exactly as CSS models them. Effects is a full suite: multiple box shadows (inside or outside), 2D and 3D transforms, transitions, filters and backdrop filters — blur, brightness, contrast, hue rotate, saturation, grayscale, invert and sepia — each an add-and-reorder stack. Every colour field now has a real picker with an alpha channel, an eyedropper, and one-click swatches from your site theme. Two things make it trustworthy: a coloured dot beside every property tells you whether a value is set on this breakpoint, inherited from a wider one, or just the browser default — click it to remove — and controls that wouldn't do anything are disabled with a reason, so offsets grey out until you leave Static and float greys out inside a flex container. The canvas got handles on both edges: drag to any width, snapping to the real breakpoints, and Desktop now fills all the space between the panels. Breakpoints match the industry standard at 991, 767 and 479 pixels, and a label down the canvas tells you which resolutions your edits affect. You can now right-click any element for cut, copy, paste styles, duplicate, wrap in a container, convert its tag, select parent, hide and copy CSS. And a new Interactions tab adds click, hover, scroll-into-view and page-load animations with duration, delay and easing — previewable on the canvas, and automatically skipped for visitors who prefer reduced motion. The Add panel was rebuilt too: elements are now searchable and split into Elements (structure, basic, typography, media, forms) and Layouts (navigation, heroes, whole sections and your saved sections), so you type "pricing" instead of scrolling. And the Settings tab now gives every element a proper ID field for in-page links, a per-breakpoint Visible/Hidden switch, custom HTML attributes, and an option to keep its text out of search result snippets.
- CRM Platform
An AI chatbot trained on your business — answering and capturing leads 24/7
Your chat widget just learned to answer for itself. Build a knowledge base — write articles, crawl your website, or sync a Notion database — and the AI chatbot answers visitors from it: grounded in your real docs, brand-matched to your widget, and honest about what it doesn't know. It's deterministic-first, so it's fast and cheap: curated FAQs are matched before the model (instant, free), and only genuine open questions use AI and draw a credit — run out and it gracefully falls back to FAQs and a human, so the widget never breaks. Every conversation stays in your CRM: a bot-captured lead becomes a normal contact on a timeline (so your routing automations and reporting just work), bot replies show right in the shared inbox alongside your agents, and when the bot is unsure it hands off — a normal assignment to whoever's online. Build guided conversation flows too — ManyChat-style: greet, ask questions, branch, capture the lead, then route to sales or hand to support — running turn-by-turn inside the chat. It threads through everything: automations get a reply-in-chat and start-flow action plus bot-captured-lead / handoff-requested / flow-completed triggers; the AI assistant and MCP can create articles, mine FAQs from your past chats, and generate flows; and there's a REST API to push articles and trigger ingestion. It all runs from the one Solstral tag you already install — and the same knowledge doubles as your widget's Help tab and an internal wiki.
- CRM Platform
A richer record timeline: formatted notes and email, signatures, task assignment, reminders and pinning
The activity timeline on every record just grew up. Notes, calls and meeting logs now use a full rich-text editor — bold, headings, bullet and numbered lists, quotes, tables, links and inline images — so an account note reads like a proper document instead of a wall of plain text. Composing an email from a record is the same Gmail-class experience: formatting, images you drag or paste (uploaded and hosted so they show up in the recipient's inbox), and a live preview of what you send. Signatures are built in and layered: set your own in your Profile with variables like {{user.name}}, {{user.title}}, {{user.phone}}, your photo and your booking link, and choose to auto-add it to new emails — while admins set a workspace-wide signature and per-team signatures in Settings → Email, so everyone stays on-brand with their own details filled in automatically. Tasks can now be assigned to a teammate (they get a notification and can filter their Tasks page to "Assigned to me") and carry a reminder time that pings the owner when it's due. You can insert a saved email template into any one-to-one message — merge tags fill in from the record — filter the timeline by Notes, Emails, Calls, Meetings or Tasks, and pin the important stuff to the top. Under the hood, all rich text is scrubbed through an industry-standard sanitizer before it's stored or sent.
- Marketing
Engagement smart lists and multiple email fields per contact
Two audience upgrades. First, smart lists and campaign segments can now filter on real engagement: build a segment like "opened a campaign in the last 30 days", "hasn't opened anything in 90 days", "has not opened Campaign X", or "opened at least 3 campaigns this month" — using new engagement conditions (last emailed / opened / clicked dates, per-campaign opened/clicked/received, and 30/90-day counts) alongside the existing 0–100 engagement score. They work everywhere conditions do: dynamic lists, campaign refinements, and exclusions (like "skip anyone emailed in the last 7 days"). Second, records with multiple email fields are handled properly: each list now has an ordered email-field priority — say work email first, then general, then personal — and every campaign sends to the first field holding a valid address per recipient. Fallbacks only cover empty or invalid values; an unsubscribed address is never bypassed by rotating to another one. Because any object can be an audience in Solstral, both features work identically for contacts and for any custom object you email.
- CRM Platform
Scheduler: calendar settings in one place, meeting limits, holidays, single-use links and meeting polls
The meetings module just got a lot closer to Calendly — in your own skin. Availability now has three tabs — Schedules, Calendar settings and Advanced — so connecting your Google or Microsoft calendar lives right next to your hours (it's still in Settings too), and there's a top-level Calendar tab as well. New Advanced settings let you cap how many meetings you'll take per day and per week across all your booking pages, and auto-block public holidays for your country (Australia, US, UK, New Zealand or Canada) plus any one-off dates — those days simply stop offering slots. Single-use links are here: generate a one-time booking link from any page's Share dialog for one-off outreach; it can be booked exactly once, then it expires (managed under Booking pages → Single-use links). Meeting polls let you propose several times, share a vote link, and book the option that suits the most people — the winner becomes a normal meeting with calendar invites and automations, just like any other booking. And a new Analytics tab shows booked / completed / cancelled / no-show counts and rates, with by-page and by-host breakdowns. The AI assistant can drive all of it: ask it for your no-show rate, to cap you at four meetings a day, to block holidays, to mint a single-use link, or to set up a poll.
- Marketing
A rebuilt campaigns experience: create modal, calendar, smart sending and follow-ups
Building and sending a campaign is now faster and clearer. Start from a new Create-campaign dialog (name it, tag it, begin blank or from a saved template), then move through a streamlined three-step flow — Recipients, Message, Review — with a progress bar at the top. The campaigns list gets a proper workspace: search and filter by status, tag, A/B test or archived, flip between a List and a Calendar view of what's scheduled and sent, and see open and click rates at a glance. Turn on Smart Sending and anyone who already got a campaign from you in the last several hours is automatically skipped, so a busy week doesn't fatigue the same people. Add a follow-up email and Solstral will automatically resend to everyone who didn't open, a set time after the campaign finishes — a proven way to lift total opens. The Review step now groups everything into Recipients, Message and Tracking sections with clear checks and a one-click Edit back to any step, and a new Audit campaign button runs an AI pass over your subject, preview and copy for concrete suggestions before you hit send. The email builder got a polish too: an icon-based block palette you drag or click, a + Dynamic tag dropdown that inserts personalization at your cursor (grouped by your audience's own fields), and a cleaner settings panel with collapsible groups. Personalization now uses object-agnostic {{recipient.field}} tags, so merge tags read correctly even when a campaign targets a custom object with no Contact.
- CRM Platform
Meetings: Calendly-class booking pages, built into your CRM
Stop paying for a separate scheduler. Solstral now hosts your booking pages: connect your Google or Microsoft calendar, set weekly availability with date overrides, and share a link — visitors pick a time in their own timezone, and double-bookings are impossible (we check your real calendar and add buffers, minimum notice and daily caps). Booked meetings land on your calendar with an auto-generated Meet or Teams link, both sides get confirmations with a calendar invite attached, and reminders go out automatically. Embed the scheduler on your own website as an inline widget, a floating button, or from any link — with your branding, custom questions, and a confirmation page or redirect you control. Teams get round-robin distribution (weighted) or collective co-hosted events. And because it's your CRM, every booking matches or creates the contact, lands on their timeline, and can kick off automations — meeting booked, rescheduled, cancelled or completed — plus a new 'send booking link' flow step. Invitees self-serve too: every confirmation carries a secure link to reschedule or cancel within the policy you set.
- CRM Platform
Live chat, leveled up: saved replies, routing, files, CSAT and AI drafts
A big upgrade to the chat inbox and widget. Agents get saved replies with /shortcuts right in the composer, an AI "draft reply" button that writes the next message from the conversation so far, and one-click file and image sharing — visitors can send files too, inline in the thread. New conversations can auto-assign round-robin to the least-busy online agent, and set your office hours so the widget shows you as away and sends a friendly auto-reply out of hours. Both sides now see typing indicators, agent profile photos appear on replies, and after a chat is closed the visitor can leave a star rating that shows up on the conversation. Agents also get a desktop notification and a sound the moment a visitor messages in.
- CRM Platform
One tag for analytics, chat and forms
Install a single Solstral tag on your website and everything runs off it — no more pasting a separate script for each feature. It streams web analytics (pageviews, unique visitors, sessions, top pages and referrers) into a new Web analytics dashboard, boots your chat widget and any embedded forms, and lets you fire custom events and identify visitors from your own code (solstral("track", …) and solstral("identify", …)). Build ordered conversion funnels over any mix of page visits and events, and when a visitor identifies with an email that matches a contact, their whole journey is stitched onto that contact. It's GTM-friendly, respects Do-Not-Track, and the chat widget now shows each agent's profile photo on their replies — while your team gets a desktop notification and a ping the moment a visitor messages in.
- Marketing
Consent tracking, compliance footers and sending-health guardrails
Sending marketing email responsibly is now built in. Every campaign automatically carries your business's postal address and Privacy/Terms links in its footer — set your address once in Settings → Email, and campaigns won't schedule without it (it's the law). We now record how and when every contact consented — double opt-in, a form, the preference center, an attested import or a manual add — shown right on each list with a consent-mix summary, so you can always answer "how did this list get built?". Adding contacts runs an address hygiene check (valid syntax, real mail domains, and blocked watchdog addresses like postmaster@), and bulk imports require you to confirm the recipients actually opted in. Finally, Solstral watches your bounce and complaint rates: campaigns from an unhealthy domain are warned or blocked before they send, and if things get bad enough your marketing pauses automatically to protect your sender reputation — one-to-one and transactional email keep flowing.
- Marketing
WhatsApp & Messenger: inbound, automated sends, and template broadcasts
Connect your own WhatsApp Business number and Facebook Messenger and run them from Solstral. Inbound messages land in the same inbox as everything else, so your team replies in one place. Automate outbound too: a new flow step sends a WhatsApp, Messenger or Instagram message when something happens in your CRM — a deal moves, a form is submitted — respecting each platform's rules (WhatsApp needs an approved template outside the 24-hour window; we handle the switch automatically). And send a template broadcast to a whole list, campaigns-style, with the same careful throttling. Connecting WhatsApp is self-serve: click Connect, authorise your number through Meta, and your approved templates sync in. Opt-in and template approval requirements apply, as Meta requires.
- CRM Platform
Billing emails, resume anytime, and receipts with your details
Managing your subscription is now complete end-to-end. Cancel and you'll see exactly when access ends — with a one-click Resume any time before then. You'll get email notifications for the moments that matter: subscription confirmed, plan changed, cancellation scheduled or reversed, a failed payment (with the date your access is protected until), a payment-method update, and AI credit top-ups — sent to the workspace owner, plus any admins or a dedicated billing address you choose. And a new Billing information section lets you add your legal business name, address and tax number (ABN, VAT, GST and more) so they appear on every receipt and invoice.
- Automation
Send data into flows with visual field mapping
Flows can now be how data comes into your CRM. Every automation has its own webhook URL — point a website form, Typeform, or any tool at it and hit "Catch test data" to capture a real submission right in the builder, no activation needed. Then, on a Create or Update record step, map the incoming fields to your object's fields visually: one click of Auto-map matches them by name, or pick each one by hand — no formulas to write. Whatever triggered the flow (a form, a widget, a webhook, a record change) shows up the same way, so the mapping always looks the same. We also redesigned the step picker into a searchable tile grid with icons, added text tools (split, substring, extract email/phone, defaults) and a new Calculator step for math across fields.
- Marketing
Much bigger email allowances on every plan
Every plan now sends far more marketing email. Free jumps to 10,000 emails a month — enough to run real campaigns, not just a demo — and the paid tiers scale up with it: Starter 50,000, Growth 250,000 and Scale 1,000,000 a month. Paid plans still flow past the included volume into low-cost overage rather than stopping you. Nothing else about your plan changes.
- CRM Platform
Plans, billing and AI credits
Solstral now has plans: Free, Starter, Growth and Scale, plus Enterprise. Each is a flat monthly price with generous usage limits — records, marketing emails, automation runs, seats and storage — and upgrading takes two clicks with the card form built right into Settings. Metered volumes like email flow into low-cost overage instead of hard-stopping you, and annual billing gives two months free. The AI assistant now runs on credits: every workspace gets 100 to get started, paid plans include a monthly allotment, and you can buy non-expiring top-ups any time — while the rest of the CRM works with or without them. A live usage view shows exactly where you stand, and existing workspaces are unaffected until they choose a plan.
- Automation
Flow goals, multi-branch and simulation
Flows V2 is live: set a goal and members exit the moment they convert; branch on multiple conditions at once; wait in business days or until a date field; restrict actions to execution windows; and — the headline — simulate any flow against a real record before activating it. Plus two new actions: rotate owner (round-robin routing) and notify a teammate.
- CRM Platform
Team-member fields
A new attribute type links records to people on your team — an account manager on a company, a reviewer on a project. Flows can rotate it round-robin for automatic lead distribution.
- Email Infrastructure
Per-user sender permissions
Personal senders each teammate verifies with an emailed confirmation link, shared senders granted per member or to everyone, and one server-enforced rule deciding who sends from what. Admins get a workspace toggle for member self-verification.
- Email Infrastructure
Multiple sending domains and senders
Verify as many sending domains as you need and create multiple From identities across them, with one workspace default and a per-email From picker in the composer. Domain verification is now fully self-serve with automatic status checks.
- Marketing
Campaigns: A/B testing, warm-up and rotation
The campaign engine now supports A/B tests with automatic winner selection, per-hour trickle limits, managed warm-up ramps for new domains, and sender rotation across a mailbox pool. Suppression is enforced three separate times per send.
- CRM Platform
One flexible object model
Companies, contacts and deals now run on the same flexible object engine as custom objects — one storage model, one code path. Every feature (views, imports, campaigns, flows, reports) works identically across every object, standard or custom.