# What's New

Latest releases and changes, newest first. Mirrors the **What's New** card on your dashboard — bookmark this page to keep up with what's landed.

---

## v1.91 — Paid bookings

*2026-10-30*

- **Visitors pay to book, on your own Stripe.** A booking page can ask for the full price or a deposit. Connect Stripe under **Settings → Integrations → Stripe (paid bookings)** with a restricted key; Karmaflow sets up its own webhook in your account, and the money goes straight to you.
- **The time is kept while they pay.** Choosing a time on a paid page opens Stripe's payment page; the time is held for 30 minutes, and only a payment Stripe confirms books the meeting.
- **Never paid for nothing.** If a paid time cannot be booked, the payment is refunded in full and the host is told.
- **Refunds under your policy.** Each paid page says what a visitor gets back if they cancel (full refund up to a day before by default, any time, or none). When a paid meeting is cancelled, the meeting says what is due and why, and you press **Refund**; or turn on **Refund automatically**. If your side cancels, the whole payment is due back.
- **The payment where you look.** A paid meeting's **Payment** section links to the payment in Stripe; the contact gets a paid invoice; the **Meeting paid for** trigger lets a workflow act on it.
- **An add-on with 30 paid bookings a month included.** Ask us to switch on Paid bookings for your workspace.

[How it works →](/help/crm/booking-pages#taking-payment)

---

## v1.90 — Booking pages

*2026-10-30*

- **A page where people book a time with one of your team.** Under **CRM → Daily work → Calendar → Booking pages**: choose whose calendar it books, the length and the kind of meeting; times are offered only inside their hours and free on their calendar, in the visitor's own time zone.
- **One tap, with undo.** The visitor taps a time, then has a few seconds to undo (or ask for more time) before the meeting is written. While they decide, nobody else can take that time.
- **Personal links.** Send a contact a link that skips the form and shows them more days.
- **Ask for consent, never assume it.** A page can add an unticked box for news, shown to visitors who arrive by their personal link; what they tick is kept as an opt-in record with the words they saw.
- **They can move or cancel it themselves.** The confirmation and the reminder email carry a link that moves or cancels that meeting, with no account.
- **Your brand and your privacy link.** The page carries your help portal's logo, colour and font, and cannot be published without your privacy link.

## v1.89 — Your privacy link on the help portal

*2026-10-30*

- **Your privacy policy, terms and privacy contact** now show under every help portal screen, the sign-in screen included. Set them under **Helpdesk Settings → Customer portal → Privacy**. Booking pages, when they arrive, will use the same link.
- **No policy yet?** **Draft a notice** writes a short one from what Karmaflow.ai knows about your workspace. Read it, edit it, and publish it at /privacy on your portal. Nothing is shown to customers until you publish.

## v1.88 — Opt-in records

*2026-10-30*

- **Keep the evidence of a yes.** Each contact now holds opt-in records: the channel, whether they said yes, bought from you or asked about you, where it came from, the date, when it lapses and the words they agreed to. See them on the **Communication consent** card, and record one by hand with **Record consent**.
- **Recorded for you.** A ticked opt-in box on a web form (`kf_consent_email`, `kf_consent_sms`) and a meeting someone books while talking to your agents are recorded on their own; an opt-out adds a withdrawal so an older yes cannot count again, and always wins.
- **Campaigns can require one.** Under **Settings → Agents & AI → Autonomous Campaign Defaults**, **Require an opt-in before a campaign contacts someone** holds campaigns to a live opt-in on each channel, at enrolment and on every touch. Off by default: nothing changes until you turn it on. Replies to someone who wrote to you are never held to it.

## v1.87 — Meetings with colleagues, and calls keep to your hours

*2026-10-30*

- **Book with colleagues.** Ask an agent to find a time "with Maya and Sam": it offers only times when everyone is free, each inside their own hours and time zone, and invites them when it books. Only colleagues who allow the agent to book them can be included; when someone cannot be, the agent says who can.
- **When no time suits everyone,** the agent says so and offers the host's own soonest times instead.
- **Voice calls now keep to your bookable hours.** Until this release a voice agent offered any free time on the calendar, unlike chat, text and campaigns. Calls now offer times only inside the bookable hours and each person's own hours, like every other channel, and a caller asking about meetings hears only their own, as in chat.

## v1.86 — Meeting reminders, and task reminders that arrive

*2026-10-30*

- **The people you meet get a reminder.** A day before (you choose how long), each contact on a meeting is emailed: an opening the AI writes from the meeting and what you know about them, then the time, place and join link, exactly. Replies go to the host. Set it on the **Calendar** page under **Reminders**.
- **Never at 3 a.m.** Reminders go only during your sending hours (08:00–21:00 in your workspace's time zone, changeable); one that would fall outside goes the evening before.
- **Not to the wrong people.** No reminder to someone who opted out of email, whose address bounced, or who booked less than that time ahead. The meeting lists every reminder, sent or not, with the reason.
- **You get the brief.** Fifteen minutes before a meeting, the host gets an alert in the app: who it is with, whether it is your first meeting, and what they said in the conversation it was booked from. It opens the meeting.
- **Task reminders now arrive.** The reminder time on a task now sends its owner a reminder in the app.
- **New times after a missed or declined meeting, on their own if you want.** Under **Reminders**, choose what happens when someone declines or misses a meeting: a draft for the host to send (as before), an email that goes on its own (during your sending hours, once per meeting) with the next open times on the host's calendar, or nothing. When it goes on its own, the meeting and the host's bell say so, and replies come to the host.

## v1.85 — Your own hours and time zone

*2026-10-30*

- **Set when you can be booked.** On the **Calendar** page, **Your hours** shows the hours agents and campaigns book you in and lets you set your own, in your own time zone. Until you do, you follow the workspace's bookable hours.
- **Inside the business hours.** Your hours count where they overlap the workspace's, so nobody is booked when the business is closed. An admin can let people's hours reach past them.
- **Your time zone.** Say where you are, or take the one your device is set to. Times are worked out in it.
- **Admins see everyone's.** Under **Settings → Timezone & bookable hours**, **People's own hours** lists each person with the hours in force and who set them. An admin decides who sets their own (everyone, chosen people or only admins), sets anyone's hours, and can lock them.

## v1.84 — Bookable hours, and offering new times after a missed meeting

*2026-10-30*

- **Agents offer times only inside your bookable hours.** Set them under **Settings → Timezone & bookable hours** (Monday to Friday 09:00–17:00 until you change them). Every agent and campaign, on every channel, offers a time only when it is inside these hours and free on the person's calendar.
- **Times in the visitor's own time zone.** The hours follow your timezone; the person booking hears or reads each time in theirs, with yours beside it when they differ.
- **Before you change a meeting, the context.** A meeting on your calendar opens with one line: whether it is your first meeting with this person, whether they missed one before, how often it has moved, and any open deal.
- **After a cancel or a no-show, offer new times.** The meeting shows the next three open times and opens your Email or Text with the AI's draft ready to write when you ask. You edit and send.
- **How it was picked.** A meeting an agent booked says which of the times it offered was taken.
- **Meeting notes in your local time** on the contact's record.

## v1.83 — Move, cancel or mark a no-show from the Calendar page

*2026-10-30*

- **Change your own meetings without leaving Karmaflow.** Open a meeting on the Calendar page to move it to a new time (it keeps its length) or cancel it. Everyone on the meeting is told, as if you had changed it in Google Calendar or Outlook, and the change is noted on each contact's record.
- **Mark a no-show.** Once a meeting has started, mark it a no-show: the meeting says so and the contact's record notes the missed meeting.
- **Who can.** The person whose calendar holds the meeting, when their role can work meetings (members and managers by default), for meetings on a connected Google or Microsoft 365 calendar. A colleague's meetings show only as busy time. An all-day meeting is moved in the calendar itself.
- **Workflows can react.** A no-show is a new workflow trigger, *Meeting missed (no-show)*, beside *Meeting moved* and *Meeting cancelled or declined*.

## v1.82 — Chat agents book meetings

*2026-10-30*

- **Offer times and book, in the chat.** A chat agent with the calendar tools turned on now checks a connected Google or Microsoft 365 calendar for free times, and books the one the visitor picks. Until now these tools showed in a chat agent's tool list but did nothing.
- **Every booking is traced.** A meeting booked in a chat is noted on the record of the contact it was booked with and shows on the Calendar page with a link back to the chat.
- Read more: [Creating a Chat Agent](/help/chat-agents/creating-agents).

## v1.81 — The Calendly integration is retired on 30 November 2026

*2026-10-29*

- **What changes.** On 30 November 2026 agents stop checking Calendly and its settings page is removed. Everyone in a workspace sees a notice once, on whichever device they use next.
- **What to do.** If your workspace uses Calendly, connect a Google or Microsoft 365 calendar: agents offer its free times, book there, and every booking reaches the contact's record. If you do not use Calendly, nothing changes.
- **What is coming.** Karmaflow.ai's own calendar: every meeting your agents and team book in one place, with changes that reach the contact, reminders and booking pages.
- Read more: [Calendly Integration](/help/integrations/calendly).

## v1.80 — A Workiz job page built for the day's work, and booking from any conversation

*2026-10-29*

- **What needs you, on the left.** A Workiz job's page now lists the jobs that need a person: today's and the next two days' jobs with no crew (with who is free then; a job already under way with nobody on it stays until someone is), left open after their day, and marked done by crews, to approve. **J** and **K** step through them. **Handled for you** lists what your agents booked or changed in the last 24 hours. The Workiz Jobs page sums it up in one line.
- **The week on top.** Each day's jobs as small squares (done, to approve, crewed, no crew), done out of total, and what the week is booked for, has collected and still has to collect.
- **One row of actions, with keys.** Move (M), Remind (R), Crew note (N), Status (S), Assign (A) and Cancel job (X). **Remind** opens a text with the goal filled in, for an AI draft you edit and send. A **Crew note** goes at the end of the job's description in Workiz, with your name.
- **Book in Workiz, where the customer is.** From the Workiz Jobs page, and from a chat, call or SMS conversation, filled in from what the conversation already says; also from an inbound email or a ticket. Times are the ones your agents would offer, and a booking you make is yours, never counted as the agent's.
- **Know who hears about a move before you make it.** Move says whether the customer is emailed the new time and that the crew sees it in Workiz, and marks the job's own time. Booking opens on the first day with a free time and says when there is no address yet.
- Read more: [Workiz Jobs](/help/integrations/workiz-jobs).

## v1.79 — Inventory, filled in: seven stores, your books, your carriers

*2026-10-27*

- **Ship part of an order, take a return, change a line.** Each line now has its own stock state: ship what is on the shelf, back-order the rest (it is allocated when stock arrives), record a return with a restock or a write-off, and edit an open order's lines. Packing slips, pick lists, order confirmations and purchase orders print or save as PDF, and a purchase order can be emailed to the supplier.
- **What stock is worth.** Average or FIFO costing, freight and duty spread onto what you received, and cost of goods on every sale; lots with expiry, serial numbers, bundles that count from their parts, assemblies you build, bins, scanned counts and barcode labels. Price lists, volume tiers and tax rates; inventory reports with CSV.
- **Seven stores.** BigCommerce, Square, Etsy, eBay and Amazon join Shopify and WooCommerce. Shopify connects with a one-click install. Platforms that cannot send changes are read on your schedule, and the store page says so.
- **Your books and your carriers.** **Inventory → Setup → Accounting & shipping** posts orders, purchase orders and returns to QuickBooks or Xero when you choose, and never twice. EasyPost or ShipStation quote and buy labels from the Ship form, and delivery updates mark shipments delivered.
- **Inside the CRM.** A **Sales orders** card on the contact page, **Products** on a deal (turn them into an order), estimates that become orders and orders that become invoices, products and orders in search, and Workiz jobs that can take their parts out of stock.
- Read more: [Connecting an Online Store](/help/inventory/shopify-woocommerce) · [Accounting and Shipping Partners](/help/inventory/accounting-and-shipping) · [Inventory in the CRM](/help/inventory/inventory-in-the-crm).

## v1.78 — Test a chat agent on localhost

*2026-10-27*

- **Embed security off, for Development agents only.** A chat agent whose **Environment** is **Development** can turn off its allowed-origins check and its Content-Security-Policy from the editor's **Embed** tab, so the widget loads on `http://localhost` or any test page without listing each one. Changing the agent to Staging or Production turns the checks back on at once, and the editor, the view page and the Agents page all say when it is off.
- **The Agents page reads origins correctly.** A chat agent with no allowed origins used to read *Any origin* on the Agents page. It now reads *No origins*: such an agent loads on no website.
- Read more: [Testing on localhost](/help/chat-agents/creating-agents).

## v1.77 — The Platform Assistant knows your workspace

*2026-10-27*

- **Your workspace's own tools, built in.** The Platform Assistant now reaches the same tools your MCP connector gives Claude: calls, chats, SMS, contacts, deals, tickets, agents, orchestrations, knowledge and analytics. There is nothing to set up, so you no longer add your own MCP address and an API key under **MCP Servers**. If you added it there before, the assistant now skips that entry and uses the built-in tools. Keep the entry only if one of your agents uses it.
- **You choose who reaches what.** Admins get every tool. For everyone else, pick *Nothing* (the default), *Read tools only*, or *Every tool* under **Settings → Agents & AI → Platform Assistant**. These tools work across the whole workspace and don't apply a person's role limits, so the choice is yours. Someone without access who asks is told an admin can open it.
- **Changes say who asked.** Where a tool records its source, a change made through the assistant reads *Karmaflow Assistant (for* the person's name*)*, not *MCP client*. Each tool the assistant runs shows by name in the chat.

## v1.76 — Workiz jobs without leaving Karmaflow.ai

*2026-10-27*

- **Workiz Jobs.** Where Workiz is connected, **CRM → Daily work → Workiz Jobs** shows your jobs a week at a time, or as a list, with the conversation that booked each one. Open a job to move it to a time your agents would offer, cancel it with one of your own reasons, or assign a technician. Each change goes straight to Workiz and is recorded with your name.
- **The Workiz v2 API, your choice.** Paste a Workiz v2 key under **Settings → Integrations → Workiz → API version**, compare v1 and v2 side by side, and switch. Your v1 connection stays saved, so switching back is one click. Karmaflow.ai reminds you before the key expires and tells you straight away if Workiz refuses it.
- **Money collected.** On v2 with invoice access, the AI bookings block on Conversation Insights shows how much the agents' jobs have collected.
- **Cancelling with a reason.** If your Workiz account requires a reason to cancel, agents now pick one of the reasons your own jobs use.
- Read more: [Workiz Jobs](/help/integrations/workiz-jobs) · [Workiz](/help/integrations/workiz).

## v1.75 — What your agents handled, and what each chat is about

*2026-10-26*

- **What the agents did on their own.** The sentence under the headline says how many of the conversations that finished were handled without needing a person (*11 of 12 finished without needing a person*). Anything a person was asked into is left out.
- **One meaning of a chat on the page.** *Today so far* counts what the map counts: conversations started today, live ones included. Each tile says how many are live and how many usually came in by now. Channels you have not used in four weeks are left out.
- **AI topics on live chats (opt-in).** A tenant admin can turn on a short AI-written line saying what each live chat is about, shown until the chat is titled. Only people who may read chats see it.
- **A chime, if you want one.** Tick **Chime** under the map for a soft sound when someone starts waiting on a person or something new lands in *Needs you*.
- **Put this on a screen.** Wall mode now says what it is for, and a link button copies the address for a TV or a second monitor.
- Read more: [Dashboard Overview](/help/getting-started/dashboard).

## v1.74 — Products & inventory

*2026-10-26*

- **A new Inventory menu.** A product catalog with variants, stock per location with a ledger of every change, sales and purchase orders, and a reorder plan that drafts purchase orders from the real sales pace. On by default; switch it off under **Settings → Workspace → Modules**.
- **Shopify and WooCommerce.** Connect a store, decide who owns the count, choose a direction for products, stock and orders; webhooks bring changes in within seconds and a scheduled sync catches the rest.
- **Agents sell from the same shelf.** Fourteen inventory tools for voice, chat, SMS, email and task agents and MCP: search the catalog, check stock, take an order. Every write links back to the conversation.
- **AI where it helps.** Draft product copy, suggest categories, map an unlabelled spreadsheet, explain the reorder plan, a stock brief — on demand, once a super admin enables *Inventory AI Assistance*; two import-time automations you can switch on.
- **Triggers and alerts.** Low stock, out of stock, back in stock, new orders and a failing sync as workflow triggers and notifications.
- Read more: [Products & Inventory Overview](/help/inventory/overview).

## v1.73 — A home tab you can leave open

*2026-10-23*

- **The tab's title tells you.** *(2) Needs you · Karmaflow.ai* while something waits on you, refreshed every minute.
- **Since you last looked.** Coming back after a few minutes shows what happened meanwhile, and the new moments carry a dot.
- **What they want, and for how long.** A live chat shows the visitor's last words and *last message 3 min ago*; a chat waiting on a person shows *waiting 6 min*.
- **The map follows the place.** Choosing a place in the In focus card moves the map there, and a map left somewhere with no lights opens on the conversations instead.
- **A calmer wall mode.** No greeting by name, no controls, no visitor's words.
- **Fewer surprises in the CRM.** Deleting a selection asks on the page and says how to restore it; a broken contact link says *Contact not found* instead of a database error.
- **Chats are no longer lost.** A chat started with the widget's new-conversation button could be removed after fifteen minutes; it now counts as a conversation and is kept.
- Read more: [Dashboard Overview](/help/getting-started/dashboard).

## v1.72 — A home tab you can trust at a glance

*2026-10-23*

- **Conversations mean conversations.** A visitor who opens the chat widget
  and has not typed yet no longer counts as a live conversation in the
  headline, the hero number, the busy-for-this-hour comparison or the map.
  They get their own line instead: *2 with the chat open, not written yet*.
- **What needs you comes first.** Latest moments puts conversations waiting
  on a person at the top, then live conversations with a known contact, then
  anonymous ones and ended ones. A live chat whose agent asked for a person
  counts as waiting right away and links to the operator panel.
- **Hide a Needs you card.** The **×** hides a card for you alone. It comes
  back if it gets worse, or after a day (red) or a week (amber). The band says
  how many you hid, with **Show** and **Unhide**.
- **Mark a security finding as seen.** Tenant admins can mark a finding as
  seen on **Security findings**. It stops asking for attention until it gets
  more severe; Karmaflow.ai still reviews it. Findings now say what is usual
  (*usually about 25 at this hour*) instead of a z-score.
- **What changed, readable.** Record changes are grouped — *3 contacts
  created · An agent* — and open to the records. Who made a change is named
  (a teammate, *An agent*, *An API key*) instead of *Unknown*, and each record
  links to its page.
- Read more: [Dashboard Overview](/help/getting-started/dashboard).

## v1.71 — From a report to an answer

*2026-10-22*

- **Themes hold still.** A theme keeps its name from one grouping to the next,
  so *new* and ↑ / ↓ mean something week to week. New questions that fit no
  theme add themes beside the old ones instead of regrouping everything.
- **What no theme holds, said plainly.** Two rows under the themes: **Left out
  by your instruction** and **No theme fits**, each with its questions and its
  conversations a click away.
- **Pin a theme, watch its trend.** A pinned theme always shows, with a small
  line of its conversations per week or month (*3 → 7 → 12*). An **Alert me**
  rule can watch a pin.
- **One sentence above the tab.** *71 questions in 40 conversations · 4 themes ·
  1 you don't fully answer: “Caribbean resorts” (4 of 4).*
- **Act on a theme.** **Task** turns a theme into a task that links back to the
  tab; **Explain** has Karmaflow.ai's own AI write a few paragraphs about a
  theme, a card or the whole tab from its figures, with personal data taken out
  first. Explain is off until an admin enables *AI Explain (analytics)*.
- **Tidier cards.** A themes card gives back the rows it does not use; short
  codes read as codes (*IDP*, not *Idp*); while your question history is being
  filled in, the tab says how many conversations are left.
- Read more: [Build your own analytics tabs](/help/reports/custom-analytics-tabs).

## v1.70 — What are people asking about?

*2026-10-22*

- **Every question, recorded.** When a conversation is analysed, each
  question the customer raised is kept as a short general question, answered
  or not, with names, numbers and addresses left out.
- **Themes, grouped by AI, counted by Karmaflow.ai.** A new **Themes** chart
  on your analytics tabs groups those questions into subjects under your own
  instruction (*as article ideas for our magazine*). Every figure on the card
  is counted from the conversations, and new and rising themes are marked.
- **Readers never spend.** The tab's owner groups the questions when they open
  the tab, and the platform does it every night; people you share the tab with
  read the latest grouping.
- **Describe a widget in your own words.** **Describe it**, at the top of the
  widget builder, fills in every choice from a sentence or two using your
  workspace's own fields and values; you check, adjust and add it.
- **Ask Claude about a card.** **Ask AI** on a card's or a tab's menu copies
  its figures as a prompt, or opens them in Claude. You see the prompt first;
  only counts and shares leave, personal data is taken out, and if that fails
  nothing is sent. ChatGPT and Microsoft Copilot are coming soon.
- **Redaction for Claude's connector.** The connector added in Claude can now
  have personal data taken out of its results too (**Tenant API Access → MCP
  Server → Redaction for the Claude connector (OAuth)**); an API key's own
  redaction never reached it.
- Read more: [Build your own analytics tabs](/help/reports/custom-analytics-tabs).

## v1.69 — Custom voices

*2026-10-21*

- **Your brand's own voice.** **Settings → Channels → Custom Voices** clones
  a person on your team, with their recorded consent, on Cartesia or Google
  Gemini, or designs a new voice from a sentence ("a warm, calm voice with a
  light accent"). Pick it on any standard voice agent under **Your voices**.
- **Verified once, in about a minute.** Apply with your business registration
  documents and accept the rules; an AI check approves genuine documents on
  its own, refuses clear fakes, and hands anything unclear to Karmaflow.ai.
- **Callers always know.** An agent on a custom voice goes live only when its
  opening says it is an AI and that the call may be recorded.
- **Visible when it falls back.** If a voice cannot be used, the call speaks
  a standard voice and the call page says why.
- Calls in a custom voice add $0.06 a minute.
- Read more: [Custom Voices](/help/voice-agents/custom-voices).

## v1.68 — Build your own analytics tabs

*2026-10-19*

- **Your own tabs on the dashboard.** **Dashboard → + New tab** adds a tab
  beside the built-in ones: start from a question (*Service quality*, *Where
  conversations come from*, *Agents side by side*, *Busy hours*) or from
  nothing, then **Add widget** — one sentence (*Show me conversations, broken
  down by outcome, compared with the previous period*) builds a widget, and
  only the charts that fit are offered. Drag, resize, share with the team.
- **Analytics on every agent's conversations page.** A **List | Analytics**
  strip under the header holds the same tabs locked to that one agent.
- **New things to split by.** Where a chat ended, how long a conversation
  took, how many messages each side sent, which tools the agent used, the
  visitor's device, their place, whether they are a new or a returning
  contact, and how they arrived.
- **For connectors.** `list_dashboards` and `run_dashboard` read the shared
  tabs over MCP, same figures as the screen.
- Read more: [Build your own analytics tabs](/help/reports/custom-analytics-tabs).

## v1.67 — Situations on voice calls, read ahead

*2026-10-17*

- **Voice agents now read their situations.** A voice agent's sections load
  when the call starts, so `read_instructions` answers from memory, with no
  pause and no filler line. Until now a voice agent wrote every section into
  its prompt in full.
- **Read ahead in one read.** A section can name the sections that **usually
  follow** it. The map shows them, and the agent reads the situation it is in
  plus the ones likely to follow, up to four at a time. A fast classifier only
  leaves out the ones that do not apply, and never holds a read longer than
  400 ms.
- Read more: [Situations](/help/knowledge/situations).

## v1.66 — Situations: instructions your agent reads when it needs them

*2026-10-14*

- **Split a long prompt into situations.** At **Settings (the gear icon) →
  Agents & AI → Prompt Components**, a component of kind **Section** is the
  instructions for one moment in a conversation — a path, the words people say,
  and what the agent does. Sections marked *always* are written into the prompt;
  the rest are listed in a short map and the agent reads one with
  `read_instructions` only when the conversation enters it, so every call and
  chat carries the instructions it needs and no more.
- **A Situations tab on every voice, chat, SMS and task agent** picks the
  sections, previews the map the prompt will carry, and sizes the map and each
  read. A lint note on a section says when it reads like knowledge that belongs
  in the Tenant Brain instead.
- **Platform sections.** Sections the platform writes for every workspace appear
  in the same map, marked *platform*.
- Read more: [Situations](/help/knowledge/situations).

## v1.65 — Modules: switch off what you don't use

*2026-10-14*

- **Choose which parts of Karmaflow.ai your workspace uses.**
  - **Settings (the gear icon) → Workspace → Modules** lists the product
    areas you can switch, among them voice, SMS, website chat, campaigns, the
    sales pipeline, the helpdesk and web analytics.
  - Switch one off, and it leaves the menus, search, the dashboard and
    Settings for everyone in the workspace.
  - Switch it back on, and everything is where you left it. Nothing is
    deleted.
- **Hidden areas keep working.** Their agents keep answering and their
  scheduled work still runs. Their pages open by direct link, under a banner
  that says the area is hidden. Tools, triggers and saved view columns already
  in use stay where they are.
- **New workspaces choose at sign-up.** Creating an organization now asks which
  modules you plan to use, and you can change them at any time.
- Read more: [Modules](/help/workspace-administration/modules).

---

## v1.64 — After you send: you choose what happens next

*2026-10-12*

- **Only a reply that means to resolve asks "Did this solve it?"** Before,
  every reply asked — even "can you send a screenshot?". Now **Send & resolve**
  asks, and the ticket solves itself if the customer doesn't answer within the
  days set in **Helpdesk Settings → CSAT & auto-close**. **Send & keep open**
  waits for the customer and nothing closes on its own. A later reply that
  keeps the ticket open withdraws the question, and the thread says so.
- **An "After you send" line above the send buttons.** Choose whether **Send &
  resolve** asks (and after how many days it solves itself, for this reply) or
  solves the ticket now. Then choose what the AI does if the customer replies:
  **Keep replying**, **Draft for me** or **I'll take it from here**. It starts
  from your workspace settings and the ticket's **AI on this ticket**, so most
  replies need no click. Picking draft or take-it on a ticket nobody owns
  assigns it to you.
- **The AI asks only when it answers.** A holding reply or a question for the
  customer keeps the ticket open. The helpdesk agent already knew which is
  which; your SMS agents, the portal assistant, task agents and the MCP
  connector now say so reply by reply. Replies from chat and phone agents
  keep the ticket open for now.
- **The AI learns from the customer's reply.** When an answer the AI sent on
  earned autonomy is followed by a reply it reads as "that didn't work", it
  counts against the AI, as **I still need help** always has. Follow-up
  questions and thanks don't count, and the thread quotes the customer's
  words each time.
- **A new mode when a person owns a ticket: Stay quiet.** In **Helpdesk
  Settings → AI governance → When a person owns the ticket**, and in **AI on
  this ticket**: the AI takes no customer-facing action while the owner
  handles it. It still triages, and the thread says each time it stood back.

---

## v1.63 — The bell, in every workspace you belong to

*2026-10-12*

- **Your bell shows your alerts in whichever workspace you are in.** If you
  belong to more than one workspace, the bell used to show in-app alerts only
  for the first one you joined; in the others it read *All caught up* even
  while alerts arrived by email. It now lists, counts and clears the alerts of
  the workspace you are looking at.
- **Each row says what it is about.** A row leads with its title — *New ticket
  #16 has no one assigned* — then what happened. The **Unread** tab lists only
  unread rows, **Mark All as Read** works, and the count on the bell drops as
  you mark rows read.
- **Staff notifications answers where you clicked.** Saving a setting, adding
  an address or sending a sample shows its confirmation in that alert's row,
  not at the top of the section. A sample says when your quiet hours or a
  summary setting are holding its email, and two people with the same name
  are told apart by their address.

---

## v1.62 — Fixes from testing replies by text

*2026-10-12*

- **A customer's answer keeps the ticket open.** When a customer replied to a ticket that was waiting on them, it moved to **Open**, and the AI helpdesk agent could then set it straight back to **Pending customer**, even though nobody had asked the customer anything. The AI no longer sets **Pending customer** (or **New**) by itself: a ticket waits on the customer only after a reply actually goes to them.
- **Who is handling it, by name.** *SMS agent paused — … is handling it by text*, the **SMS agent paused** card and *Handed back to the SMS agent by …* now show the person's name, with their sign-in email beside it in small type.
- **One number format.** *Texted to …* under a reply always shows the number in international form (+1 and the number), the same number the text went to, however the phone was typed on the contact.

---

## v1.61 — Reply to a ticket by text

*2026-10-11*

- **Text from the ticket.** The composer's **Goes to** chips are now toggles:
  tick **Text** to send the reply as a text from your helpdesk SMS agent's
  number, alongside the portal and email. Untick **Email** to skip the email
  for one reply. **Helpdesk Settings → Replying by text** sets which start
  ticked.
- **Never past an opt-out.** A customer who texted STOP or is marked do not
  contact can't be texted; the **Text** chip is struck through and says why.
- **Quiet hours, your way.** Inside quiet hours the composer warns you, holds
  the text until morning, or doesn't check — your choice in settings.
- **The SMS agent steps back.** Your first text pauses the SMS agent for that
  customer while the ticket is open, and their texts land on the ticket.
  **Hand back to the SMS agent** ends it early.
- **Every text on the record.** Under each reply, the thread says whether it
  was texted, held for quiet hours, or why it wasn't. In the SMS conversation
  and on the contact's SMS panel, the text links back to its ticket.

---

## v1.60 — A composer that shows where a reply goes

*2026-10-11*

- **Goes to, before you send.** Above the reply box, chips show where the
  reply will land: **Portal** always, **Email** unless the customer chose
  portal-only updates or has no address on file. A chip that won't go is
  struck through, and hovering it says why.
- **One line per thing to know.** A bounced address, no email on file, a
  customer who chose the portal, or a ticket that came in by text each get a
  line in the composer saying what happens and what to do. **Cc** turns off
  while nothing is emailed.
- **Keyboard shortcuts.** **⌘↵** (or **Ctrl+Enter**) sends; **⌘⇧↵** (or
  **Ctrl+Shift+Enter**) sends and resolves. The tab is now called **Reply**.
- **Reach in the rail.** The ticket's **Customer** section shows how the
  customer can be reached by email, text, phone and the portal, and why not
  when one is blocked.
- **Held AI drafts say where they'd go.** A draft waiting for the owner or an
  approver shows the same route line.

---

## v1.59 — See everything the AI did on a ticket

*2026-10-11*

- **AI activity on every ticket.** A new card at the top of the ticket's
  right column lists what the AI proposed, held or did, newest first. Each
  item says where it stands: **Needs approval**, **Held for the owner**,
  **Did on its own**, **Approved by …**, **Done through MCP** or **Didn't go
  through**. It also says why the AI was allowed to act and who was told.
- **Approve field changes from the ticket.** A held status, priority, team
  or assignee change has **Approve** and **Decline** right on the card. Held
  replies keep their draft card in the conversation; **Review** takes you
  there.
- **AI lines in the thread.** What the AI did shows as a one-line violet
  entry with its basis and a **Why** link, so you can tell conversation from
  machinery without a legend.
- **Coming next:** **Undo** for the AI's field changes, and **Mark as wrong**
  for a reply it sent.

---

## v1.58 — Customers choose how they hear about a ticket

*2026-10-11*

- **Email or the portal, per ticket.** The portal's new-ticket form asks
  **How should we tell you about replies?**: **Email me** or **Only here in
  the portal**. The customer can change it from the ticket page, and your
  team can change it from the ticket. Each change is written on the thread.
- **Every customer email follows it.** That covers the confirmation, replies
  and Cc, the resolved notice, the satisfaction link and email journeys. A
  reply that isn't emailed because of this choice says so in grey on the
  thread.
- **The composer tells you first.** The line under **Public reply** now says
  where your reply will go before you send it.
- **Marketing opt-outs don't block ticket email.** An email opt-out in the
  CRM is about marketing. Do not contact and a texting opt-out still stop
  texts, calls, journeys and campaigns.

---

## v1.57 — Every AI action on a ticket is on the record

*2026-10-11*

- **Nothing the AI does goes unrecorded.** Actions your AI policy allows
  outright (a note, a priority or status change, a reassignment, a task) used
  to run without a record of their own. Each one is now recorded with what it
  changed, which is what the ticket's AI activity and Undo will build on.
- **Voice calls tell the owner too.** When a voice agent is cleared to answer
  a customer on a call about a ticket a person owns, the owner gets an alert:
  *The AI said this on a call about ticket #12*.
- **Approvals through the MCP connector count.** Approving or rejecting a
  queued action with `approve_queued_action` / `reject_queued_action` now
  counts toward earned autonomy, the same as a decision in **AI Approvals**.

---

## v1.56 — The AI keeps the ticket's owner in the loop

*2026-10-11*

- **The owner is told.** On a ticket assigned to a person, the AI keeps
  working as before, and the owner gets an alert each time it replies, asks
  the customer something, solves the ticket or sends a follow-up.
- **Choose how much room the AI has.** In **Helpdesk Settings → AI
  governance**, **When a person owns the ticket** sets a mode per action:
  **Act, and tell the owner** (the default, so nothing changes until you
  choose), **Hold for the grace period** (it goes out on its own unless the
  owner steps in) or **Wait for the owner**.
- **Held drafts live on the ticket.** The owner sees the draft below the
  conversation with **Send now**, **Edit** and **Dismiss**, and a countdown
  for a grace period. A held draft is cancelled if the customer writes again
  or a person replies first, so it never goes out stale. A reply waiting in
  **AI Approvals** is cancelled too when the customer writes again.
- **One ticket can differ.** **AI on this ticket** in the properties rail
  overrides the workspace setting, and the change is written on the thread.

---

## v1.55 — A queue that answers "what needs me now"

*2026-10-11*

- **Views with counts.** The ticket queue has a rail of views on the left
  (chips on a phone), each with a live count: **All open**, **Needs reply**,
  **Mine**, **Unassigned**, **Awaiting approval**, **AI is handling**,
  **Overdue promises** and **Done**. The queue opens on **All open**; solved
  and closed work sits behind **Done**, and **Mine** no longer lists closed
  tickets. **Needs reply** is the tickets where the customer is waiting.
- **Rows you can read at a glance.** A channel icon beside the requester,
  priority as signal bars (one for Low to four for Urgent), a thin SLA
  progress bar under the SLA chip, and the assignee as an avatar — a spark
  for an AI agent, a dashed ring for nobody.
- **Keyboard.** **J** / **K** move down and up the rows, **Enter** opens,
  **Escape** clears.

---

## v1.53 — Who was told, on the ticket

*2026-10-10*

- **Every ticket alert that matters leaves a line on the ticket.** A ticket
  waiting with no one assigned, an assignment, an escalation, a ticket still
  unassigned, a missed SLA target and an overdue promise each add a line to
  the ticket's conversation, saying who the alert actually reached and how:
  *Escalation alert · alerted 3 on the team (in app, by email)*. Bulk
  changes from the ticket queue send one alert and still write the line on
  every ticket.
- **Nobody could hear? It shows.** When nobody in an alert's audience can see
  tickets, or the alert failed to send, the line is amber, and helpdesk
  admins get an **Open Staff notifications** link straight to the fix. A
  person who turned an alert off for themselves is shown, not flagged.
- **Also send to, counted apart.** Addresses under **Also send to** show as
  *copied to 1 address*, so "by email" always means a person got it.
- **Moving many tickets to a team** now tells that team once, listing the
  tickets.

---

## v1.52 — Escalations, customer replies and tickets nobody picked up

*2026-10-10*

- **An escalation now reaches a person.** When the AI agent escalates a
  ticket because it needs a human, whoever answers for the ticket is
  alerted — in the bell and by email — with the AI's reason. Before this,
  the escalation changed the ticket's status and told nobody. Escalate a
  ticket you own and your team hears.
- **A customer replied on your ticket** — in your bell, so you know the
  customer is waiting. Turn on email if you work from your inbox.
- **One of your tickets was reopened** — when a solved ticket comes back.
- **Still unassigned.** A ticket waiting with no owner for more than 5
  minutes alerts the team's lead, else the helpdesk admins. Time spent
  waiting on the customer does not count. Change the minutes, or turn it
  off, in **Helpdesk Settings → Staff notifications**.
- **The AI gets its first look.** When your helpdesk agent works new
  tickets, the "no one assigned" alert waits up to two minutes for it. A
  ticket the AI solved, or answered and is waiting on the customer, alerts
  nobody — and the ticket's conversation says so.
- **Moved to a team with nobody on it?** The team hears, as it would for a
  new ticket. The alert is now called *A ticket is waiting with no one
  assigned*.
- **Bulk changes stay quiet.** Escalating or reopening many tickets at once
  sends one alert per owner or team, not one per ticket.

---

## v1.51 — Ticket alerts, set up where the helpdesk is

*2026-10-10*

- **Staff notifications in Helpdesk Settings.** A new section on
  **Helpdesk → Setup → Helpdesk Settings** lists every ticket alert with who
  it goes to, the workspace default for the bell and email, how many people
  it reaches and how, an **Also send to** address list and **Send me a
  sample**. Whoever can manage Helpdesk Settings can change these defaults
  for ticket alerts — no workspace-wide settings access needed.
- **See who your teams' alerts actually reach.** The section and the
  **Teams** page show, per team, how many people can receive ticket alerts,
  and flag a team where nobody can see tickets — its alerts go to the
  helpdesk admins instead.
- **Tickets with no team** shows who receives them right now, by name.

---

## v1.50 — Ticket alerts that reach the right people

*2026-10-10*

- **Missed SLA targets now alert someone.** When a ticket misses its
  first-response, reply or resolution deadline, whoever owns it hears — in
  the bell and by email straight away. With no owner, its team does, and
  with no team, the helpdesk admins. The ticket's conversation records the
  miss and who was alerted. The **A ticket is breaching its SLA** row on
  Notification Preferences (now **A ticket missed its SLA target**) has
  always defaulted to email; until this release nothing sent it.
- **A warning before the deadline.** New **A ticket is close to missing
  its SLA** alert, in the bell by default, at your SLA policy's at-risk
  point.
- **Assignment email works.** Turning on email for **A ticket is assigned
  to you** now sends one. The alert says who assigned it, or that your
  team's round-robin did, and is no longer sent when you assign a ticket to
  yourself or when only the team changes.
- **The bell is a choice.** Every row on **Notification Preferences** has
  an **In app** checkbox beside the email setting, so **Any new ticket
  arrives** can finally reach the bell.
- **Easier to find.** Notification Preferences is linked from **Account
  Settings** and from the **Preferences** button on the Notifications page,
  for everyone, not only tenant admins.
- **New tickets with no team go to the helpdesk admins** — the people who
  can manage Helpdesk Settings — instead of everyone who can see tickets.
- **Clearer alerts.** Every ticket alert names the ticket, the customer,
  the channel, the priority and the team, and says why you are getting it.

---

## v1.49 — Chats on the map while they are still open

*2026-10-09*

- **Open chats can be placed.** A chat used to get its place on the **Now**
  map only once it ended and was summarised, so every open chat counted as
  *Unplaced*. The map now looks up the visitor's connection at city level
  while the chat is happening — the same lookup the chat's sidebar shows —
  and draws it at the city, or at the region or country when that is all
  the lookup knows. A chat whose visitor's connection cannot be looked up
  (none was recorded, or it is a private network) still counts as
  *Unplaced*. The address itself is never kept on the map.
- **Agent runs sit with their conversation.** An agent run that happened
  inside a chat or call is drawn where that conversation is — even when the
  chat ended before the run — and its card says so, with a link to the
  conversation. A run started for a contact is placed where that contact is
  known to be.
- **Fixed: most website chats could not be placed.** The visitor's
  connection was recorded with the network's relay addresses attached, and
  the lookup read none of it, so those chats stayed *Unplaced* and the chat
  sidebar showed no place. The lookup now reads the visitor's own address
  from it — for chats already recorded too.
- **Unplaced explains itself.** Click or tap **Unplaced** beside the legend
  for what is not on the map and why, in words — for example, emails are
  placed only where the contact is known to be.

---

## v1.48 — Weather where you can find it, a quieter map, and the night side

*2026-10-09*

- **Weather for the place in focus.** The weather card now describes the
  place in **In focus** at any altitude, planet view included, and says
  which place it is. With *Everywhere* in focus it follows the camera once
  you zoom in.
- **Switched-off overlays are shown, not hidden.** Beneath the map, an
  overlay your workspace has not turned on reads greyed as *off* and links
  to **Settings → Workspace → Map Layers & Places → Overlays**, where a
  tenant admin switches it on.
- **A quieter, cooler map.** The base map is now OpenFreeMap's *Positron*
  — pale grey land, soft water, no shops, railways, airports or highway
  shields; buildings and street names appear only when you are close — with
  a soft atmosphere around the globe at the planet view. Dark mode keeps
  its dark map.
- **Fixed: the night side never appeared.** Two bugs: the shading was
  computed for the wrong side of the planet, and it waited for the map to
  stop animating, which a live dashboard never does. Turn on **Daylight**
  and the night side shows, with a twilight band along the dusk line. The
  same waiting bug could also keep your own area layers (service areas)
  from drawing; fixed with it.
- **Fixed:** the **In focus** menu's first option always reads
  *Everywhere* (it showed a city's name twice when all conversations sat in
  one city).

---

## v1.47 — The Now tab in the Atlas shape

*2026-10-09*

- **One headline, one number.** The Now tab now opens like the design it
  was drawn from: a headline that names where the hour is happening
  ("Colorado, *in conversation.*"), the count of conversations beside it,
  and one slim **Colour by** row — Outcome, Channel, Sentiment, the rest
  under **More…** — with the legend on the same line.
- **The stage.** The globe fills the frame and turns to face your
  conversations, pale at the planet and full colour in the streets, with
  your busiest cities named and your pinned places ringed and labelled.
  **World** and your places are pills under the globe; **− / +** is the
  only other control on it.
- **In focus.** A card over the stage about one place at a time — your
  first pinned place or the busiest city of the hour — with its count, a
  five-minute sparkline, a bar split by the chosen colour, the latest
  moments there, what is coming up, and **Explore …** to fly in. Selecting a
  light reads that record in the same card.
- **Everything else moved beneath the stage** in one quiet row: overlay and
  layer ticks (freshness in the tooltip), the slider across the hour,
  **Yesterday**, **Wall mode** and the live clock. The weather tile appears
  in the stage's corner when the overlay is on.
- **Each tenant's own landing.** The stage opens where your conversations
  are: on a pinned place, else at the altitude of the hour's footprint (city,
  region, country, or the planet turned to face you), one step closer for
  street-precision workspaces with pins near home. Where you leave the camera
  is where it reopens for the rest of your visit. The headline's place word
  now ignores one stray row in ten, so a single out-of-state call no longer
  flips "Colorado" to "The United States".
- **Dark mode gets a dark map**, with the light style as the fallback if the
  dark one cannot load; and the stage, pills and card lay out for phones.
- **Fixed:** the map could render into a collapsed frame when the map
  library's stylesheet loaded after the page's; the frame is now pinned.
- **Fixed:** in a browser with graphics acceleration switched off, the map
  could not start and took the whole dashboard down with it. Now only the map
  steps aside, with a note on how to turn acceleration back on; everything
  else on the tab keeps working. The hero number now counts the same
  conversations as the sentence beside it (chats, calls and texts; sends and
  agent runs are shown beside it), and the opening view frames the place the
  headline names instead of drifting toward a stray row.

---

## v1.46 — Yesterday in sixty seconds, wall mode, and asking the person where they are

*2026-10-09*

- **Yesterday in sixty seconds.** A **Yesterday** button on the Now tab
  replays the previous day on the map in about a minute, with a sentence
  written for each hour of the day and quiet stretches folded. Pause, drag,
  restart, or come back to now.
- **Wall mode.** One click turns the Now tab into a full-screen board that
  cycles your pinned places every twenty seconds, with the latest moments
  running under the map — the dispatcher's screen and the lobby display are
  the same page (`?wall=1`).
- **Save caller location.** A new agent tool records a place the person
  states in a conversation on the conversation and on their contact ("stated
  in conversation"), at the precision their words allow. Enable it per agent.
- **Identity Reveal fills in the map.** Accepting a suggestion now runs the
  location ladder once for the contact from the linked conversations' own
  localities, so "Likely in …" appears the moment the link is made.
- **The Demo workspace carries synthetic coordinates** for its fictional
  Front Range customers, so recordings can show street-level pins without a
  real person on screen.

## v1.45 — Your own data on the Now Map: layers, places and free context

*2026-10-09*

- **Layers.** A tenant admin can put the workspace's own data on the Now Map
  beside the conversations, in five shapes: moving points with a trail
  (drivers, trucks), fixed points coloured by state (sites, sensors, jobs),
  areas (service areas, territories), a value at a place over time (queue
  depth, a reading — a colour ramp and a sparkline), and links between two
  places (order → warehouse, request → unit). Sources: a file upload (CSV,
  JSON, GeoJSON, KML/KMZ) through a column-mapping wizard that pre-fills its
  guess, a URL fetched on a schedule, one of your trigger webhook endpoints
  as a live stream, your Workiz jobs, or your located contacts. A feed that
  stops shows its age on the legend ("trucks · 41 min old · stale") so it
  never masquerades as live.
- **Uploads improve the core map.** Rows with an email or phone are matched
  to your contacts through the same resolver as every inbound text and call,
  and place those contacts on the location ladder ("Likely in …", source:
  your upload). The inspector says which layer placed them.
- **Meaning.** Tag a layer as a fleet, a service area, a site or fulfilment
  and the map reasons with it: select any light and the inspector names the
  nearest available unit and its distance (with a driving ETA where Google
  Maps is configured, drawn on the map data budget), whether the spot falls
  inside a service area or **outside every one**, and the nearest site.
- **Places.** Pin the places you want one click away — by address or
  coordinates — or accept the suggestions drawn from where your conversations
  and contacts come from. They appear in the map's **Go to…** menu. Places are
  bookmarks, never a boundary: every workspace keeps the whole planet.
- **Free context, switched off until you say so:** weather and air quality at
  the place you are looking at (Open-Meteo), the night side of the planet
  computed from the clock (it moves with the slider), and today's and the
  week's public holidays for your country (Nager.Date). A tenant admin turns
  each on under **Settings → Workspace → Map Layers & Places**; every viewer
  then chooses what they show from the map's **Layers** menu. None of it
  touches the map data budget. Read [Map Layers &
  Places](/docs/workspace-administration/map-layers-and-places).

## v1.44 — The dashboard opens on Now: the hour around this moment, on a map

*2026-10-09*

- **A new first tab on the dashboard, Now.** The last thirty minutes of
  conversations, calls, texts, emails, forms and agent runs drawn where they
  happened, and the next thirty minutes of what is scheduled — workflows due,
  campaign sends queued, send-later messages, tasks due, SLA deadlines, held
  AI actions, the dial queue, field jobs starting. One sentence at the top
  written from the counts, and whether this hour is quiet or busy against
  your own weekday-and-hour norm. Colour by outcome, status, channel,
  sentiment, agent or campaign; a counted legend with an always-visible
  Unlocated figure; a slider across the hour; every light opens its record.
- **Every light is only as precise as we truly know.** City-level facts are
  soft discs the size of the city; exact pins and street zoom appear only
  after a tenant admin opts in under **Settings → Access & security →
  Location & Map Precision**, accepts the acknowledgement, and chooses who
  sees them. Unconfigured means city scale for everyone.
- **Street precision, once opted in, goes all the way down.** Viewers the
  policy covers can zoom to street level, every exact location is a pin, and
  a selected light offers **Explore this spot at street level**. City-scale
  viewers in the same workspace keep the city discs — the server never sends
  them a point.
- **Live traffic, scoped and budgeted.** With **street-scoped context**
  turned on in the same settings row, a **Traffic** button on the Now tab
  draws live road flow around the places you are looking at. It counts
  against a new **Map data budget** on the Billing page — $2.00 a month by
  default, paced as a daily share with carry-forward, set by anyone with
  `billing:manage`. When a day's share or the month's cap is spent the map
  says so in words and resumes on its own. Read [Spend
  Limits](/docs/workspace-administration/spend-limits#the-map-data-budget).
- **Five personal bands below the map:** Needs you, Your places, Pick up
  where you left off, Today so far, What changed. The date-ranged analytics
  moved to the tabs beside Now, unchanged.
- **Contacts learn where they probably are.** A caller's registered city,
  a texter's area code, a chat visitor's connection and a location shared in
  a conversation now land on the contact as a "Likely in …" line beside the
  address you typed — never overwriting it — with a Confirm action, and
  territory filters include these contacts. Read [Dashboard
  Overview](/docs/getting-started/dashboard) and [Location & Map
  Precision](/docs/workspace-administration/location-and-map-precision).

## v1.43 — Tenant Brain settings on every agent form

*2026-10-09*

- **A Tenant Brain block on the Tools tab of every agent type** (voice, chat,
  SMS, mail, task, document), under the tools list. It sets, per agent,
  whether the brain's map rides in the instructions, lean or full map lines,
  the map's budget, one read's budget, how many entries a lookup returns, and
  whether a lookup that names no path gets the advisor's pick served or the
  shortlist returned. Each value shows its platform default until you set one,
  and a **Recommended for …** line applies the channel's suggestion in one
  click: a voice agent wants a smaller map and shorter reads than a task
  agent. Read [Brain settings for this agent](/docs/voice-agents/tools-and-knowledge#brain-settings-for-this-agent).

## v1.42 — The booking funnel is the first thing on Conversation Insights

*2026-10-07*

- **"From conversation to booked job" now opens the tab** on a workspace
  with Workiz connected: a full-width block with a computed headline (*1 in
  10 conversations became a booked job.*), one stream whose band thins at
  each step while the lost share drips away, the drop that matters most
  coloured, the gaps between steps as labels, the *Where it leaks* reasons
  as bars, and Booked value in the header. Light and dark; on a phone the
  stream turns vertical.
- **Every number is still a click.** Steps, the drops between them and each
  reason list their conversations. A step and the list it opens now always
  agree: the *Got a price* bar used to count more than its list showed.
- **"+N assisted" says what it is, and what it is worth**: jobs the office
  booked within 14 days of an AI conversation, beside the *Got a job* step
  with the Workiz value of those jobs under the count — a different record,
  never inside the job count or Booked value.
  Read it in [Counting the jobs your agents book in Workiz](/docs/integrations/workiz-bookings).

## v1.41 — Conversation Insights counts every channel, and your team

*2026-10-07*

- **Every card on Conversation Insights now counts web chat, SMS, calls and
  email.** Until now the tab read web chat only; the other channels were
  analyzed the same way and never counted. Figures for earlier dates changed
  too, for the same reason. A line above the cards says what the range holds
  (*N conversations · chat · SMS · calls · email*), and a filter row narrows
  every card by channel. Read
  [Reading Conversation Insights](/docs/reports/conversation-insights).
- **Who handled it.** The same filter row separates conversations your AI
  agents handled alone from the ones a person on your team stepped into — a
  call dialed from a contact's page, a text sent inside a thread, an email
  sent from the CRM — written from the record, never from the agent's words.
  Email threads a person or a task agent wrote are now analyzed too.
- **Drill-downs open the right page.** The list behind a card shows each
  conversation's channel and opens a text thread, a call or an email thread
  on its own page.
- **Back-fill covers every channel.** *Analytics & Insights → Processes →
  Back-fill recent history* now estimates and queues chats, texts, calls and
  emails. A platform administrator can also run *Insights: stamp who handled
  each conversation* under the migrations console to mark history.
- **The booking funnel absorbs SMS and call bookings** into its bars instead
  of a footnote.

## v1.40 — Bookings counted from Workiz, not from the transcript

*2026-10-07*

- **"From conversation to booked job" on the dashboard.** A new funnel
  under *From your integrations* on **Conversation Insights**: conversations
  → got a price → asked to book → got a job → done, with the job step
  counted from Workiz rather than the transcript, one computed sentence
  naming the step that leaks and why, and a flag for conversations the
  analysis called booked with no job behind them. Read it in
  [Counting the jobs your agents book in Workiz](/docs/integrations/workiz-bookings).
- **A booking the tool made is now a fact on the conversation.** Chat,
  SMS and call detail pages show *Booked in Workiz* with a link to the job;
  the analysis writes *booked · verified* from that record instead of
  deciding from the transcript, and flags a booking the AI reported with no
  job behind it as unverified. Lists carry a *Job booked* chip.
- **One Workiz setting:** a currency for Workiz amounts, so the funnel and
  the Google Ads Lifecycle page can show booked value.
- **Fixes to the Insights cards.** The Booking pack's *rate by service* read
  0% on every workspace; process-pack stat tiles now divide by the
  conversations the pack evaluated; the Resolved tile's hint says it
  includes likely-resolved conversations; and agent-booked jobs now count
  on the Google Ads Lifecycle page, with an Origin column. A new
  [Reading Conversation Insights](/docs/reports/conversation-insights)
  explains what each card divides by.

## v1.39 — Log all your company email in the CRM; form endpoints documented

*2026-10-03*

- **A guide to copying every email into the CRM.** One Google Workspace
  routing rule or one Microsoft 365 mail flow rule sends a copy of every
  message your team sends and receives to your workspace's ingest address;
  each lands on the right contact as *received* or *sent*. The new
  [Logging All Your Company Email in the CRM](/docs/crm/email-capture) walks
  through both consoles, what the CRM does with each kind of message, and
  what it does not capture.
- **Newsletters, auto-replies and bounces no longer become leads.** A
  message that declares itself automated, or that comes from a no-reply,
  mailer-daemon, postmaster or bounce address, attaches to an existing
  contact but never creates one. It is listed on the Email Sending page
  under **Messages that didn't reach anyone** as *Automated mail — no
  contact created*, with the message linked. Stored messages now carry the
  sender's own date instead of the time the copy arrived.
- **Form endpoints, as they really are.** The Forms docs now describe the
  feature in the product — a secure address and API key your own website
  form posts to, with field mapping, allowed origins, a rate limit,
  reCAPTCHA v3 and AI spam scoring — in a rewritten
  [Forms Overview](/docs/forms/overview) and a new step-by-step,
  [Connecting a Website Form](/docs/forms/connect-a-website-form).
- **A form's workflow runs for that form only.** An orchestration built on
  **Form Endpoint Submission** with a form selected used to run for every
  form endpoint's submissions. **Copy URL** on the Form Endpoints list now
  copies the working address, and a deactivated form stays in the list so
  it can be turned back on.

## v1.38 — Voice agents handle forwarded calls; sharper tools

*2026-10-02*

- **Forwarded calls no longer pollute your contacts.** When a call is
  forwarded to a Karmaflow number from one of your own lines, the caller ID
  is often your line, not the caller. On **Settings (the gear icon) →
  Channels → Phone Numbers**, edit the number, turn on **Also receives
  forwarded calls** and list the lines under **Forwarded from**. Calls from
  those lines make the agent ask which number to text instead of using the
  caller ID; every other call is treated as direct. The call's page says how
  the caller ID was treated on its **From** row. (Updated 2026-10-03: the
  lines moved from a page-wide field onto each number.)
- **Voice tools explain themselves better.** Every tool a voice agent carries
  now describes each of its inputs to the model: phone numbers with the
  country code, the recipient's name on emails, a pre-set topic on texts, and
  more. Fewer failed texts and emails, fewer "could you repeat your number"
  loops.
- **Document search on calls is tuned for speech.** The agent's document
  search returns the six best passages instead of ten, rewrites the question
  for retrieval, and gives up on a slow answer instead of leaving the caller
  waiting.
- **The older document search is retired from the picker.** New voice agents
  pick **Search uploaded documents**; agents already using the old search
  keep working.

## v1.37 — GPT-6 Luna for voice agents; older models retired

*2026-10-01*

- **Voice agents can run on GPT-6 Luna.** The **AI Model** picker on voice
  agents now offers GPT-6 Luna alongside Gemini 3.8 Flash (still the
  default) and Gemini 3.7 Flash. A voice agent on GPT-6 Luna uses its
  **Reasoning Effort** setting; GPT-6 has no **Minimal** level, so Minimal
  runs at **Low**.
- **Gemini 3 Flash and Gemini 3.5 Flash are retired.** They are gone from
  every model picker. Agents that used them move to **Gemini 3.8 Flash**.
- **GPT-5.6 Luna and GPT-5.1 are retired.** Agents that used them move to
  **GPT-6 Luna**. Each moved agent keeps its effort and verbosity settings.
- **Platform features on GPT-6 Luna run at a set effort.** Summaries,
  classifiers and extraction run at low effort. Agent test grading and the
  Platform Assistant run at medium.

## v1.36 — Clean links in agent texts

*2026-09-27*

- **Agent texts no longer show markdown.** When an SMS agent cited a web
  page, the text arrived with the link written out as markdown, like
  `([site.com](https://site.com/page?utm_source=openai))`. Phones print that
  literally. Agent-written texts now carry a plain link instead, with every
  `utm_` tracking tag removed, and the same link is not repeated twice in
  one message. Other link parameters are kept as they are. Bold markers, headings and code marks are flattened too.
  The conversation shows exactly what the contact received.
- **Texts you write go out as written.** Messages you send yourself, static
  SMS campaigns and a campaign's static opener are never changed.
- **Web search shows its sources.** Each web search in an SMS conversation
  now lists the pages it drew on, where it used to show zero sources.

## v1.35 — SMS agents can search, email and text

*2026-09-27*

- **Send email and send SMS work on SMS agents.** An SMS agent with
  **send-email** ticked can now email a recap, a quote or a colleague
  mid-conversation from the agent's configured From address and signature;
  with **send-sms** it can text another number. Both were offered before and
  did nothing on SMS. Every send shows in **Sent Emails** / **Sent SMS** with
  a link back to the text conversation it came from.
- **Web search works on SMS.** An SMS agent with **web_search** in its tools
  now searches the web for current information mid-conversation, scoped by
  your workspace's search policy where one is set. The conversation shows
  each search and what it found. Before this release the checkbox had no
  effect on SMS and the agent would say it could not browse.
- **Knowledge search on SMS.** **retrieval_search** now runs on SMS too,
  searching the agent's vector stores (uploaded documents) with query
  rewriting and grounded answers, the same search chat and task agents use.
  Agents that had the older **file-search** option ticked get
  retrieval_search automatically; file-search and vector-search are no
  longer offered on SMS agents.

## v1.34 — GPT-6 Luna for chat, SMS, email and task agents

*2026-09-27*

- **GPT-6 Luna is available.** OpenAI's GPT-6 Luna (`gpt-6-luna`, released
  22 September) can be picked as the **AI Model** on chat, SMS, task and
  document agents and on email strategies — half the input price and under
  half the output price of GPT-5.6 Luna, with a May 2026 knowledge cutoff
  and the same 1M-token window. Existing agents keep the model they have.
- **The reasoning dropdown follows the model.** **Reasoning Effort** now
  offers only the levels the chosen model accepts: GPT-6 adds **XHigh** and
  **Max** and drops **Minimal**; Gemini 3.8 Flash has no **Minimal**. Change
  the model and an effort the new model cannot take is moved to the nearest
  one it can, and the form says so.
- **Platform features moved to GPT-6 Luna.** Conversation summaries and
  titles, the orchestration **AI Router** node default, email composition
  defaults, CRM enrichment and extraction, helpdesk triage and insights, and
  the Tenant Brain's authoring tasks now run on GPT-6 Luna.
- **SMS agents pick from OpenAI models only.** The SMS picker now offers
  GPT-6 Luna (the default for new SMS agents), GPT-5.6 Luna and GPT-5.4
  Mini. An existing SMS agent on a Gemini model shows it as *(legacy)* with
  a warning; pick one of the three to keep it running.
- **Retiring OpenAI models are no longer offered.** OpenAI is shutting down
  o3-mini and GPT-4.1 Nano (23 October 2026) and the GPT-5, GPT-5 Mini and
  GPT-5 Nano snapshots (11 December 2026); they are gone from every model
  picker, including the orchestration **AI Router** node.
  Agents still on one keep working until the shutdown date and show the
  model as *(legacy)* — move them to GPT-6 Luna before then.
- **Voice agents stay on their current models** for now; GPT-6 on voice is
  scheduled separately.

## v1.33 — Wait for consent and retention in Web Analytics

*2026-09-27*

- **Wait for consent, per site.** A new **Configure → Settings** page on
  every Web Analytics site holds a **Wait for consent** switch, off until
  you turn it on. With it on, the tracker sets no cookie and records
  nothing until your cookie banner calls
  `karma('consent', { analytics: true })`, then records the page the
  visitor is on. See
  [Privacy, Consent & Retention](/help/web-analytics/privacy-and-retention).
- **Declined means gone.** A visitor who declines analytics is no longer
  recorded on any site, and the tracker deletes its own cookie and stored
  ids; declining marketing keeps ad-click ids out.
- **Allowed origins you can edit.** The same page edits a site's allowed
  origins and warns when `www.` and the bare domain are not both listed,
  the most common reason events are rejected.
- **Web analytics retention you can set.** Events are kept indefinitely
  until a tenant admin sets a window — account-wide on **Transcript
  Retention → Web analytics events**, or per site on the site's **Settings**
  page — and turns **Remove automatically** on with a typed confirmation.
  **Preview these settings** counts what a window would remove before
  anything is saved. See
  [Privacy, Consent & Retention](/help/web-analytics/privacy-and-retention).

## v1.32 — Google Analytics 4, conversation outcomes and Google Ads conversions

*2026-09-25*

- **Send what happens after the click to GA4.** Connect a GA4 web data
  stream with a Measurement ID and API secret; calls, texts, deals,
  tickets, form leads and booked meetings go to your property as events,
  joined to the visitor's original session through the client id captured
  by the chat widget, the tracker and your forms. Verification is honest:
  one live test event you confirm in Realtime. See
  [Google Analytics 4 & Google Ads Conversions](/help/integrations/google-analytics).
- **Conversation outcomes as events and as a trigger.** When a chat, call,
  text or email finishes processing, its outcome type becomes a
  `conversation_outcome` event (and `generate_lead` for the outcomes you
  list), and a new **Conversation analyzed (outcome known)** trigger lets
  workflows act on it. See
  [Conversation outcomes and custom GA4 events](/help/integrations/google-analytics-workflows).
- **Filters on event triggers.** Every event trigger in the builder now
  shows **Only fire when…** with a text box per filter; a comma list means
  any of, matching ignores case.
- **Send GA4 Event and Upload Google Ads Conversion steps** in the builder,
  with click-to-copy `{{field}}` chips for the workflow's trigger. Offline
  conversion upload ships switched off platform-wide until Google approves
  the change to Karmaflow.ai's API application; the settings card says so. See
  [Offline conversions to Google Ads](/help/integrations/google-ads-offline-conversions).
- **Consent Mode v2 on every GA4 event**, from the contact's Do Not Contact
  state, with a toggle for workspaces whose consent records live elsewhere.
- **New workflows save paused.** A workflow goes live when you press
  Enable, not when you first save it.
- **Approval before any data goes to Google.** A Karmaflow.ai admin now
  approves each workspace before its events reach GA4 or its conversions are
  uploaded to Google Ads, and the same approval will cover the audience
  features as they ship. Request it at the top of the Google Analytics 4
  page; workspaces already sending to GA4 were approved automatically. See
  [Connect Google Analytics 4](/help/integrations/google-analytics-setup).
- **Audience recipes for GA4.** The Google Analytics 4 page now lists six
  audiences you can build from the events Karmaflow.ai sends: people who talked
  to you and did not convert, existing customers, open pipeline, unhappy
  conversations, low satisfaction scores and support-only contacts. Each
  recipe uses the event names on your map, says when an event it needs is
  off, and copies its GA4 steps in one click. See
  [Build GA4 audiences from your conversations](/help/integrations/google-analytics-audiences).
- **What people search vs what they say.** The Google Ads lifecycle page now
  compares your paid search terms (and Google's search themes, when
  available) with the topics and unanswered questions from your conversations
  in the same window, in three columns: searched and said, searched but never
  said (negative-keyword candidates), said but never searched (keyword and
  ad-copy angles), with suggestions as sentences that carry their evidence.
  Report only; nothing is applied to your account. See
  [Google Ads lifecycle](/help/integrations/google-ads-lifecycle).
- **What people said, by ad.** The Google Ads lifecycle page gains a table of
  the conversations each campaign, ad group or keyword produced: outcomes,
  objections and how many were resolved, top intents, drop-off reasons,
  sentiment, the questions the agent could not answer, and the pipeline value
  of those contacts. Insight cards can group by `session.ad_campaign`,
  `session.ad_group`, `session.ad_keyword` and `session.ad_channel`. Lead-form
  submissions now count as resolved clicks with no extra Google calls. See
  [Google Ads lifecycle](/help/integrations/google-ads-lifecycle).
- **Which ad did this contact click?** Google Ads clicks captured by the chat
  widget, forms and the tracker are matched nightly to their campaign, ad
  group, keyword and ad headline, shown on the contact as an **Ad source**
  card and counted on the Google Ads lifecycle page as **Clicks resolved**. See
  [Google Ads lifecycle](/help/integrations/google-ads-lifecycle).
- **A value for every outcome, and a tracker health line.** On the GA4 event
  map, each row's params now take **value by rule** (*when outcome_type =
  booked → 250*), so booked and qualified leads reach Google Ads with a value
  Smart Bidding can bid to, not only closed-won deals. The deliveries section
  adds a **Last 7 days** line with the share of events that had no web
  identity, the one number that shows whether the tracker is installed. See
  [Set up Google Analytics 4](/help/integrations/google-analytics-setup).

---

## v1.31 — Agents can read the photos customers text

*2026-09-24*

- **A texted photo now reaches the agent.** Pictures and PDFs sent by text
  are stored with the message, shown in the conversation, and described in
  words to the SMS agent before it replies — what the image shows, how many
  items, size and condition cues, any readable text. The agent is told
  plainly when a file arrived but could not be read. See
  [SMS Agents](/help/sms-agents/overview).
- **Google Local Services leads included.** Files consumers attach to a
  Google message lead were previously dropped before they reached the
  thread; they now come through the same path. Replies through Google
  remain text-only. See
  [Replying to Google leads](/help/integrations/google-ads-lead-replies).
- **Scan for photos.** On the Google Ads settings page, Troubleshoot now
  counts the attachments on the last 7 days of message leads and checks
  that the first few can be downloaded — lead ids and counts only.
- **What the agent was told, under the photo.** The conversation now shows
  the description the agent was given under each image or file, so a
  reply can be judged against it. Large photos are downscaled before
  analysis (the stored file is untouched), so any JPEG, PNG, WebP or GIF up
  to the per-file limit is read. HEIC photos are stored and shown but not
  yet read; the agent asks for a JPEG or a screenshot.
- **One file-size limit, shown where you look for it.** The per-file limit
  for customer files now defaults to 10 MB (15 MB at most) and appears on
  the Google Ads settings page (editable) and on each SMS agent's page
  (read-only), as well as in Helpdesk settings. A file that was not kept
  is named under the message in the conversation, with the limit that
  dropped it.

## v1.30 — Connect any MCP server

*2026-09-18*

- **Strict MCP servers now connect.** Servers built on the official MCP SDKs
  enforce the whole protocol: an `initialize` handshake before any request,
  a session id and protocol version on every call, and answers streamed as
  events. Karmaflow.ai's connection now does all of that, so servers that
  refused it before (typically with *400 Bad Request* or *not initialized*)
  list their tools and run them. Servers on the older HTTP+SSE transport
  connect too, automatically. See [MCP Servers](/help/integrations/mcp-servers).
- **The Tools dialog says what went wrong.** In **Settings → MCP Servers**,
  the **Tools** button (the wrench) now shows the server's own answer when a
  connection fails — the HTTP status, its error text and a hint on what to
  check — instead of a generic error, and names the transport it connected
  over when it succeeds.

## v1.29 — One Agents page, and the numbers add up

*2026-09-18*

- **Every agent on one screen.** **Agents → Agent Types** now opens a single
  **Agents** list across voice, mail, SMS, chat, task and document agents,
  pre-filtered to the type you picked. Each row shows the agent's volume for
  the selected date range with a change against the previous period, its
  outcome (resolved share, or signed share for document agents), and its
  last activity. Sort by last activity, volume, name, type or status; search
  by name, number or sender. **View** and **Edit** are where they were.
- **Click a row to see its conversations.** A row expands to that agent's
  most recent conversations in the same range, opening exactly as they do
  from the full conversations page, with **Open all N →** to get there.
- **Dashboard cards land on the agents behind the number.** Clicking
  **Chats**, **Emails**, **Calls** or **SMS conversations** opens the Agents
  list for that channel and the dashboard's date range; the rows add up to
  the card, with a "not attributed" line for anything no agent owns. The
  dashboard's **Agent performance** table shows the top five active agents
  and links to the full list.
- **Two card definitions changed so both surfaces agree.** **Calls** counts
  every real attempt and no longer counts test calls or calls a person
  dialled; each voice agent's row shows how many of its calls were
  **answered** and **unanswered**. **SMS conversations** counts sessions that
  *opened* in the range (it used to count any session touched in the range).
  Chats and Emails are unchanged.

## v1.28 — You decide where every column goes

*2026-09-17*

- **A mapping step before anything is written.** Contact and list imports
  now open a **Map columns** step: every column of your file with sample
  values and a target — a contact field, a company field, a consent
  column, one of your custom fields, or Skip. Known columns are pre-filled
  and say so; columns nothing matched get an **AI suggestion** you confirm.
  The CSV separator is detected for you.
- **Custom fields from a file.** Pick **+ Create custom field…** on any
  column and the field exists and is mapped without leaving the page.
- **Import profiles.** Save the mapping once and the next file with the
  same columns opens already mapped.
- **Fill or overwrite.** Choose whether a matched contact keeps its values
  (the default) or takes this file's. Consent is only ever tightened.
- **Consent columns.** `SMS Opt-in`, `Unsubscribed`, `Do Not Contact` and
  similar columns record the opt-outs they state, each with the column it
  came from on the consent card.
- **Vouch for your own list's mobiles.** Tick *These mobile numbers belong
  to the people listed* for a customer or sign-up export and campaigns may
  text them at once; the attestation is recorded under your name. Lists
  also show an **Unconfirmed mobiles** tile with **Confirm all**. See
  [Importing Data](/help/crm/importing).

## v1.27 — Contact imports keep everything the file knows

*2026-09-17*

- **Every useful column lands.** A contact import now reads the direct
  line and the mobile as two numbers, the LinkedIn URL, seniority and
  departments, city / state / country, the source's email verification
  status, and **Do Not Call** (which sets the voice opt-out). Apollo exports
  are recognised automatically. Columns with no field of their own stay
  visible under **Imported data** on the contact. An imported mobile is
  marked *from import, unconfirmed* — campaigns text it only once the
  contact texts from it or you confirm it on the contact.
- **Companies come with the people.** The new **Companies** option on the
  contact and list import forms creates or matches each row's company by
  website domain, links the contact, and copies the company's industry,
  headcount and country onto the contact for filtering — so "VP-level
  contacts at 51-200 person fintechs" is a saved view.
- **Richer company records.** Short name (the one emails say), exact
  headcount with a derived size range, keywords, technologies, revenue,
  funding, founding year, SIC / NAICS codes and buying-intent topics — all
  on the company page and all filterable.
- **Lists show readiness before you send.** A list now opens with verified
  emails, bounces, contacts without a phone and opt-outs counted across the
  whole list, and its table shows title, company, verification and phone
  type. The CSV export carries every one of these fields.
- Details: [Importing Data](/help/crm/importing).

---

## v1.26 — Google Ads: leads from every campaign type, several accounts per workspace

*2026-09-16*

- **Message assets text your SMS agent.** Point a Search or Performance Max
  message asset at your SMS agent's number and the conversation arrives as an
  ordinary text, answered like any other. Karmaflow.ai attributes it to the ad by
  the starter message you copied into **Settings → Channels → Google Ads ·
  Local Services** or by a number marked **Google Ads destination number**
  under **Phone Numbers**. Calls forwarded from a call asset or a Local
  Services campaign to such a number are attributed the same way.
- **Lead forms are imported.** Each submission on a Search, Performance Max,
  Video or Display ad becomes a contact, a follow-up task and a notification.
  On by default for every linked account.
- **Several Google Ads accounts per workspace.** Add accounts with
  **+ Add another account**, switch between them at the top of the page; the
  lifecycle report combines them.
- **The per-lead message cap is no longer a dead end.** Approving a draft,
  replying yourself, or **Resume AI on this lead** lifts it, and admins are
  told when a lead is paused — opt out under notification preferences.
- Details: [Google Ads setup](/help/integrations/google-ads-setup) and
  [Answering leads](/help/integrations/google-ads-lead-replies).

---

## v1.25 — Transcript retention, per agent

*2026-09-09*

- **Set how long transcripts are kept.** A new page under **Settings (the
  gear icon) → Access & security → Transcript Retention** lets a workspace
  admin set a window, in days, after which the content of chat sessions,
  calls, text threads, email threads and imported meetings is removed. The
  conversation record stays — dates, participants, outcome, counts — and each
  one shows when its content was removed.
- **Nothing changes until you set a window, and nothing is removed until you
  say so.** Retention is **Off** for every workspace, and a blank window
  anywhere means *kept indefinitely*. Turning it on lands in **Report only**:
  once a day the page lists what the windows would remove, and removes
  nothing. Review the list under **Review and remove**, tick conversations or
  take the whole report, and type `REMOVE` to confirm — every removal is
  re-checked against its window as it runs and lands on the Audit Trail with
  your name.
- **Automatic removal is a deliberate second step.** **Automatic** — daily
  removal without asking — can only be chosen from Report only, after at
  least one report exists, and by typing `AUTOMATIC`. Stepping back down never
  needs a confirmation.
- **Per channel and per agent.** Give a channel its own window on the same
  page, or open an agent (chat, SMS, voice or mail) and set **Transcript
  Retention** on its form: inherit, a custom window, or *Keep forever*.
- **Choose what removal means.** *Content only* removes the messages,
  transcripts, recordings and attachments and keeps the AI summary; *Content,
  summaries and quotes* also removes the AI-written prose and the quotes
  extracted into CRM signals, mentions, commitments and training threads.
- **Preview before you save.** The page counts what the settings on screen
  would flag, and every hand removal and automatic run leaves a row on the
  Audit Trail. Details: [Transcript Retention](/help/workspace-administration/transcript-retention).

---

## v1.24 — Voice and Mail Agents get their own URLs

*2026-09-08*

- **The URL now says what the page says.** Voice Agents moved from
  `/campaigns` to **`/voice`** — the list at `/voice`, and each agent's
  view, edit, calls and use pages under `/voice/<id>/…`. Call detail stays
  at `/calls/<id>`. Mail Agents moved from `/strategy` to **`/mail`** — the
  list at `/mail`, the quick-start wizard at `/mail/wizard`, and each
  agent's view, edit and list-settings pages under `/mail/<id>/…`. Nothing
  else about the pages changed.
- **Every old link keeps working.** Bookmarks, notification emails and
  in-app notification links to `/campaigns/…` redirect to the new address,
  including the call you were sent to. There is nothing to update on your
  side.
- **The last "Campaign" and "Strategy" labels on those pages are gone.**
  Voice pages now read *Edit Voice Agent*, *Back to Voice Agents*, *Use Voice
  Agent* and *Agent Name*; mail pages read *New Mail Agent*, *Edit Mail
  Agent*, *Back to Mail Agent* and *Agent Name* — matching the menu entries
  (**Agents → Agent Types → Voice Agents / Mail Agents**).
- **Send Campaign is unchanged.** The one-off email/SMS wizard stays at
  **Agents → Workflows → Send Campaign** (`/campaigns/send`).

---

## v1.23 — Workiz bookings tell both sides

*2026-09-03*

- **Your team hears about every agent booking.** Two new events under
  **Settings → Notification preferences** — *An agent booked a Workiz job* and
  *An agent moved a Workiz job* — fire the moment the write to Workiz
  succeeds, with the customer, the time window, the address, the crew notes,
  a link to the job and which conversation produced it. On for email by
  default for anyone who can manage settings; add a dispatch inbox as an
  extra recipient.
- **Your customer gets a confirmation — in your words.** Workiz does not
  reliably confirm a job created through its API. In **Settings → Integrations
  → Workiz** (section 6) choose a sender identity or send as an agent that
  already has a from address (its signature comes along unless you pick
  another), edit the **Booked** and
  **Moved** templates with tags like `{{when}}` and `{{address}}`, watch the
  live preview, send yourself a test, and turn it on. Sent by the platform
  with the values written to Workiz; no AI in the loop; never a price. See
  [Workiz → Step 7](/help/integrations/workiz).
- **Platform emails are now in the Sent Emails report.** Booking confirmations,
  billing and verification mail used to be reachable only by direct link;
  they now appear under the **Platform** filter in **Sent Emails**.

## v1.22 — Send a campaign in five steps

*2026-09-01*

- **A campaign wizard for one-off sends.** **Agents → Workflows → Send
  Campaign** (also **+ New → Campaign**) sends an email or SMS campaign to a
  list: write the message yourself with personalization tags such as
  `{{first_name|there}}` and a fallback for missing fields, or let an existing
  email strategy or SMS agent write one message per contact. Add timed
  follow-ups, choose a sender identity or borrow an agent's, and schedule it
  now, once, recurring, metered, or manual. The wizard compiles to an
  orchestration, so pause, stop, log, and builder all work as usual.
- **Start from wherever the audience is.** Select contacts or leads and click
  **Send campaign**; use the megaphone on any list or the **Send Campaign**
  button on a list page; or take the **Send a campaign to this list** next
  step straight after an import.
- **A Recipients tab on every campaign.** Per-person outcomes — suppressed,
  skipped, failed, sent, delivered, opened, clicked, replied, with bounced and
  opted-out flags — in a funnel per step. One click turns non-responders,
  clickers, or repliers into a list and opens the wizard on it. Opted-out
  contacts never travel into a cohort, and the tab says how many were held
  back.
- **Honest engagement numbers.** Unsubscribe clicks are never counted as
  engagement, plain URLs in your body become clean links whose text is the URL
  itself, and the funnel carries a caption explaining that some providers
  register opens at delivery — opens are an upper bound; clicks and replies
  are the firmer signals.
- **SMS campaigns pace themselves.** Sends are rate-limited per sending number
  (default 0.8 messages/second on a long code, adjustable per number under
  **Settings → Channels → Phone Numbers**), carrier rate-limit responses are
  retried rather than failed, and multi-part messages are an explicit opt-in
  with a live segment counter — recipients still get one continuous text.
- **One row per SMS conversation on the timeline.** A campaign send, the
  agent's replies, and the customer's replies now appear as a single Activity
  Timeline row on the contact and the company, with a *You:* / *Them:* summary
  of the latest message and counts of sends and replies. The reply count on
  the contact's vitals includes campaign-thread replies.

---

## v1.21 — Google Ads: Local Services leads, answered and attributed

*2026-08-19*

- **Connect Google Ads** and every campaign type reports in one place —
  Local Services, Search, Performance Max and Display — with spend,
  conversions, impression share and top search terms where each applies.
- **Local Services goes further:** an SMS agent answers your **message leads**
  through Google's own channel, usually within one poll interval. Every lead — message and phone alike — becomes a CRM contact you
  can filter, list and enrol in campaigns. Connecting is self-serve — your
  Google Ads account ID and one button at **Settings → Channels → Google Ads ·
  Local Services**, with approval inside 24 hours.
- **Reply yourself from the conversation.** Local Services threads now carry a
  **Reply via Google** button that appends to the conversation the consumer is
  actually reading, rather than sending a separate text.
- **Human takeover is yours to configure.** When you reply by hand, choose
  whether the agent keeps replying, drafts for your approval, or stands down —
  per lead, with a one-click undo on the thread. A reply typed in Google's own
  dashboard is detected too, and an account-wide setting decides what it means.
  It arrives unset and changes nothing until you choose.
- **Attribution that names its own method.** The **Google Ads Lifecycle** page
  joins daily spend to leads, jobs and paid invoices, and shows which rung
  matched each record — a stamped identifier, a person's confirmation, or an
  email or phone match. Cards whose data does not exist say so instead of
  showing zero.
- **Response time measured from Google's timestamp**, which is the metric
  Google ranks advertisers on — not from when Karmaflow.ai noticed the lead.
- **Answering message leads is generally available.** Connecting is self-serve
  and it runs on customer accounts today.
- **Private beta: calls answered by a voice agent** — Local Services call
  leads, and call extensions on Search and Performance Max. In development,
  not available yet.
  [Request early access](https://forms.gle/Ex2bNT6Q4Kj2Df189).
- Five guides, starting with
  [Google Ads & Local Services](/help/integrations/google-ads).

---

## v1.20 — Workiz: agents that book field-service jobs

*2026-08-14*

- **Connect a Workiz account** and your agents can look up jobs and leads,
  check who is free, book appointments, reschedule, assign technicians,
  capture leads and record payments — on voice, chat, SMS, email strategies
  and task agents alike. Setup is a five-step checklist at
  **Settings → Integrations → Workiz**.
- **Booking is guarded.** Workiz accepts a double-booked time without
  complaint, so Karmaflow.ai re-checks the slot against a freshly pulled
  schedule immediately before writing. A repeated booking returns the
  original rather than creating a second job.
- **A readiness banner tells you what is still off, and what it costs** —
  not just which steps are incomplete. Because Workiz has no delete, an
  unguarded booking is permanent, and the banner says so.
- **Payments require explicit confirmation** with the customer before an
  agent records one: no API can void a payment, and Workiz cannot reverse
  one at all after 60 days.
- **On voice, agents now speak while they work** — "let me check the
  calendar" — instead of going silent during a lookup.
- Two guides: [connecting your account](/help/integrations/workiz) and
  [what your agents can do](/help/integrations/workiz-agents), including the
  platform limits worth designing around.

---

## v1.19 — Reply from your inbox, with AI attachment analysis

*2026-08-13*

- **Reply directly from a group inbox thread** — correct threading in the
  recipient's mail client, CC, signatures, and file attachments. Each inbox
  carries a **Reply from** default (set via **Edit** on the inbox page), so
  replies go out from the address the sender originally wrote to, with the
  full sender-profile dropdown available per message.
- **Attachments are stored privately and open from the thread** — served
  through an authenticated download, never a public link.
- **Analyze any attachment on demand** — one click returns a document-type
  badge, a one-line summary, and extracted fields for financial documents
  (images, PDFs to 8MB, .docx). Billed per analysis, saved on the
  attachment so you only pay once.
- **Optional auto-analysis for inbound attachments** — tenant admins can
  opt in under **Tenant Settings → Agents & AI → Attachment Intelligence**,
  with file-size, file-type, per-inbox, and daily-cap brakes. Off by
  default.
- **Group Inboxes moved to the CRM menu** — find it under **CRM → Daily
  work**, next to My Day.

---

## v1.18 — Route your own email addresses into Karmaflow.ai

*2026-08-13*

- **A new step-by-step guide for getting mail in** — point an address on your
  own domain at a contact timeline or a shared inbox, with separate recipes
  for **Google Workspace** and **Microsoft 365**, and for the two cases that
  need different handling: a shared address like `support@`, versus an
  existing person's mailbox that must keep working normally. See
  [Routing Your Email Into Karmaflow.ai](/docs/group-inboxes/routing-email-in).
- **Attachments now arrive with inbound mail to a group inbox.** Previously
  the message body was captured and its attachments were silently dropped.
- **Group inboxes are open to every workspace**, no longer hidden behind the
  Data Analyst feature, and each inbox can now be renamed, deleted, and loaded
  with mailbox history (mbox import) from its own page.

---

## v1.17 — Spend limits you set yourself

*2026-08-12*

- **Cap usage charges, account-wide or per service** — a new **Spend limits**
  card on your billing page sets a ceiling on what the workspace can run up in
  a period. Reaching it refuses the work it governs until the next period or
  until the limit is raised; fixed subscription fees are never counted.
- **You can always see which limit is binding** — where your limit and your
  plan's ceiling both apply, the tighter one wins, and the card says which in
  plain words rather than leaving you to compare two numbers.
- **Alerts at 80% and 100%**, separately for the account-wide cap and for each
  service that carries its own limit.
- **Billing Admins can reach the page.** The seeded Billing Admin role
  (`billing:read` + `billing:manage`) now has its own way in via your user
  menu → **Billing & Spend Limits**; a viewer with `billing:read` alone sees
  the same figures read-only. See [Spend Limits](/docs/workspace-administration/spend-limits).

---

## v1.16 — Phone system integration for voice agents

*2026-07-26*

- **PBX pre-call context (3CX-style)** — inbound voice agents get a new **Phone System** tab: your phone system POSTs caller context (like IVR selections) to a per-agent webhook right before bridging the call, and the mapped fields are injected into the agent's context and available as `{{placeholders}}` in its instructions.
- **Collected call values with a hang-up gate** — define the values the agent must gather during the call (text, number, yes/no, or picklist, each optionally **required**); the agent can't end the call while required values are missing, and caller hang-ups still deliver partial results flagged incomplete.
- **Post-call telemetry, pull or push** — your phone system can POST after the hangup and receive call telemetry plus collected values in the response (with a safe-to-retry `pending` state), or Karmaflow.ai can push the results to your URL — HMAC-signed, with retries and a **Send test** button. See [Phone System Integration](/docs/voice-agents/phone-system-integration).

---

## v1.15 — Page-targeted widget messaging

*2026-07-22*

- **Page-targeted user instructions** — the chat widget greeting's guidance line can now change per page. Add instruction variants under **Widget → Page-Targeted User Instructions**: the first enabled variant matching the visitor's page is shown, and everything else falls back to your default Static User Instruction.
- **Point-and-click URL rule builder** — nudge (attention message) rules and instruction targeting are now built from dropdowns — **Page URL / Page Path / Hostname** with operators like *contains*, *does not contain*, *starts with*, *ends with*, and glob patterns (`/blog/**`) — in the style of Google Tag Manager, replacing the old raw-JSON rule fields. Existing rules keep working and open right in the builder.
- **Clearer nudge controls** — per-message "only show" / "never show" page rules with a condition-count badge on each message, a **Never Show On (Global Block Rules)** builder that per-message rules can't override, and readable rule summaries on the agent view page. See [Widget Greeting & Nudges](/docs/chat-agents/widget-greeting-and-nudges).

---

## v1.14 — Helpdesk, Tenant Brain & a CRM comms upgrade

*2026-07-17*

- **Helpdesk — a full AI-native support desk** — a new Helpdesk module with a ticket queue (triage, assignment, SLA response/resolution timers, and round-robin routing to teams), a **branded customer portal** where your customers sign in to open and track their tickets, and multi-channel intake so **inbound email, SMS/MMS, voice, chat, and web forms all become tickets**. AI triages incoming tickets and drafts replies, with a **human approval queue** so nothing goes to a customer unreviewed.
- **Support Knowledge Base & the Knowledge Flywheel** — publish help-center articles that serve both your customers and your AI agents. Solved tickets are distilled (PII-scrubbed) into insights that feed a **Recommendations** review queue surfacing what's worth writing or fixing, and an approved recommendation can be turned into a KB article in one step.
- **Helpdesk reports & CSAT** — ops, CSAT, SLA, and AI-performance reporting with **Trends**, **Impact**, and **Team** tabs, a **custom report builder**, and post-resolution CSAT surveys.
- **Helpdesk automations (journeys)** — milestone-driven outbound over SMS, email, and voice, governed with confidence gates and human-above-the-loop, including in-call confidence routing and voice CSAT.
- **Tenant Brain — versioned business knowledge your agents share** — a new per-tenant knowledge base in the Open Knowledge Format that **every agent type** (voice, chat, SMS, task, email, document) can read, search, and propose additions to. **Brain Genesis** seeds it by crawling your site and scanning uploaded documents and your CRM on a schedule, and published knowledge is embedded across your vector stores so agents answer more consistently.
- **Brain browser, graph view & trust controls** — browse and edit the Brain under **Knowledge → Tenant Brain**, see how concepts connect in a **graph view**, and govern agent-proposed knowledge with **graduated autonomy** and a **trust ledger** so proposals earn their way to auto-publish. A content-quality check gates what's allowed in.
- **Send emails and texts by hand from the CRM, with AI compose-assist** — reply, follow up, or start a new email or SMS straight from a contact, with an AI assistant that drafts the copy for you. A new **call dialer** adds a slide-over keypad, in-call notes, and DTMF tones.
- **Schedule sends for later** — queue reply and follow-up emails or texts to go out at a chosen time, track them under **CRM → Scheduled Activities**, and get alerted if a scheduled send fails.
- **CRM attachments & financial records** — quick-upload files to any record (with opt-in AI document analysis), mass-upload contacts and companies, and promote uploaded **estimates and invoices** into first-class financial records on contact, company, deal, and lead pages.
- **Agent Prompt Studio** — an AI creator/optimizer that writes and refines your agent instructions, plus one-click **starter-instruction examples** on every agent form and a cleaner, progressively-disclosed **Tools** tab with a shared recommended tool set across channels.
- **Agent performance monitoring** — a cross-channel performance rollup on the dashboard with per-agent drill-down (KPIs and lowest-scoring conversations) and periodic AI insight reports on your weakest performers.
- **AI access governance & per-surface billing** — control which members can use which AI features, with AI usage now metered per surface and consolidated governance visibility.
- **Smarter chat & voice agents** — a new **get_weather** tool for chat agents, overridable inactivity check-in and session-ended messages, transcripts that cross-link as a conversation is handed between agents, and **Widget Identity Verification** so a signed-in visitor's identity is confirmed in the chat widget.
- **Reliability & polish** — create/save actions are now idempotent and guard against double-click duplicates, orchestrations flag misconfigurations when you save them, list views surface load failures with a retry instead of showing empty, and an in-app **Help Center** is now reachable from the top navigation.

---

## v1.13 — CRM command center, power-user lists & smarter agents

*2026-07-03*

- **Redesigned CRM detail pages** — every contact, lead, company, and deal now opens with a full-width **hero** (avatar, inline-edit name, inline email/phone, status chips, and grouped action buttons), a deterministic **vitals strip** below it (last touch, inbound vs outbound responses, a blended cross-channel engagement rate, and a Warming / Steady / Cooling / Dormant trend with a plain-English reason), and collapsible sections your browser remembers.
- **Recommended next move** — an AI-chosen, prefilled action card sits atop each record, grounded in your own conversation history. The AI picks only fitting actions from a fixed catalog (create task, draft email, log note, new deal, add tag, set lifecycle) and one click opens the right surface already filled in — or shows nothing when there's no clear next step.
- **Engagement cadence setting** — vitals windows are now tenant-configurable, because cadence is business-model-specific (B2B runs slow, B2C/support fast). Pick a **B2B (60d)** / **B2C (21d)** / **Custom** preset or set explicit base / cooling / dormant day thresholds, with per-pipeline and per-lifecycle overrides.
- **Power-user list views** — an inline **Filter / Sort / Columns** toolbar on Contacts, Companies, Deals, and Leads, so you can shape a list ad-hoc without leaving for the Views page. AND/OR/nested filter groups, removable filter chips, your tenant custom fields as filterable/sortable columns, and **Save as view** / **Update view**.
- **Activity & intent filters** — filter records by a related record ("has an email sent after…", "no open task", "has a deal in stage X") and by AI signals (buying intent, sentiment, relationship temperature, confidence) surfaced from Relationship Intelligence.
- **Ask AI to build a filter** — describe the segment in plain English and the AI turns it into a structured filter, validated against the allowed fields and operators, loaded into the toolbar for you to tweak.
- **Segment actions (Organize)** — act on the *whole filtered segment*, not just the visible rows. A select-all-matching banner unlocks add-to-list, new list, tag / untag, assign owner, enroll in a sequence, create a task per record, and delete across everything that matches — not just the current page.
- **Your list layout follows you** — filter, sort, and column preferences now save server-side per user, so your working view is the same on every device.
- **Complete record timelines** — every action taken on a contact, lead, or company (not just deals) now writes to that record's activity log: notes, tags, owner changes, contact ↔ company links, lifecycle changes, merges, and more. A unified engagement & activity timeline spans all detail pages, with slide-in drawers to open any row in place, and processed web-form submissions now appear on the contact timeline too.
- **Mobile-optimized CRM** — below tablet width, list pages render a mobile-native experience: compact rows with activity chips, sticky A–Z headers with a scrubber, filter chips, a thumb-reachable bottom tab bar, and a floating add button. The desktop UI is untouched.
- **Refreshed look** — dark and light themes realigned to the Karmaflow.ai palette (neutral-charcoal dark mode with clearer surface elevation, a deeper indigo accent, higher-contrast link text), plus a decluttered list-page toolbar with a single primary action and calmer secondary/cleanup buttons.
- **Live chat-agent preview** — the chat agent editor now previews against the **real** engine using a sandbox copy of the agent, *including your unsaved edits*, so replies have full production fidelity — tools, RAG / vector stores, MCP, and memory. A live **tool-call inspector** shows each call's parameters and result as it runs.
- **Agent-to-agent chat handoff** — configure, per chat agent, which agents it may hand a conversation to and the circumstances for each. Ownership transfers on the session and every handoff is recorded, so a conversation can move through a chain of specialists with a full history.
- **Cross-agent enrichment** — give any voice, chat, SMS, or task agent context from a contact's most recent interactions with your *other* agents, with the set of agent types configurable per agent, plus a tool to pull a full transcript on demand.
- **Pick vector stores from a list** — agent forms now show your vector stores with name, description, and file count to check off, instead of typing comma-separated IDs. Already-referenced stores are preserved even if they're not in the list.
- **Analytics dashboard refresh** — a readable AI **Account Overview** briefing that stitches your sentiment, channel volume, and CRM signals into a short written summary (role-scoped: admins and analytics managers see all accounts, everyone else sees the accounts they own), period-over-period comparison pills on metric cards, a richer landing-pages table, polished zero-data empty states, and hardened chart rendering.
- **Per-agent usage in billing** — the tenant billing screen now breaks agent-attributable usage down by the agent that generated it, with an Unassigned / unattributed rollup so the totals still reconcile.
- **Voice IVR & extensions** — a new **send-DTMF** tool lets voice agents navigate phone menus, and outbound calls dial a contact's extension automatically (from the contact field or trigger context).
- **Full prompt for super admins** — call and chat detail pages now expose the exact assembled LLM prompt (super-admin only) for debugging.
- **Cleanup & fixes** — the Apollo (apollo.io) enrichment integration was removed end to end; the CRM activity filter no longer reports Chat and SMS sent as 0; orchestration batch-email no longer reports partial sends as full successes; and several smaller crashes and edge cases were fixed.

---

## v1.12 — Cal.com scheduling, the data analyst over MCP & safer controls

*2026-06-17*

- **Cal.com integration** — connect one or more Cal.com accounts so agents can check availability and book meetings. Karmaflow.ai connects through Cal.com's hosted MCP server over OAuth 2.1 and manages token refresh for you, so there are no API keys to copy. Configure it under **Settings > Cal.com**, then point an MCP server at a specific account.
- **Multiple Cal.com accounts per workspace** — give each account a name (per team, calendar, or brand), pick a default, disconnect or remove independently, and pin individual MCP servers to the account they should use.
- **Ask the data analyst over MCP** — a new `ask_data_analyst` tool on the built-in MCP server lets external AI agents ask natural-language questions about your communication activity. It's the same analyst behind the embedded chat on the analytics dashboard and returns a written answer, the query it ran, and any chart it generated.
- **Hard Stop for orchestrations** — alongside the existing soft **Pause**, you can now **Stop** a workflow to immediately cancel its spawned-but-not-yet-run work: pending jobs, queued (not-yet-dialed) calls, and a recurring workflow's self-reschedule loop. Calls already in progress finish naturally. Use it to halt a campaign that's actively sending or dialing.
- **Global rules always apply** — the per-agent opt-out has been removed, so workspace-wide guardrails are now enforced consistently across every agent.
- **Permissions enforced end to end** — navigation menus, create/edit/delete action buttons, and the underlying routes and APIs now hide and block consistently based on each member's agent and CRM permissions, so members only see and do what their roles allow.

---

## v1.11 — Granular roles & permissions

*2026-06-05*

- **Custom roles** — define your own access levels with fine-grained, per-feature permissions, so each teammate gets exactly the access they need.
- **Suggested defaults out of the box** — start from ready-made **Manager**, **Member**, **Viewer**, and **Billing Admin** roles (alongside the full-access **Admin**), then tweak them or build your own.
- **Per-object CRM permissions** — grant view, create, edit, and delete independently for Contacts, Leads, Companies, Deals, Tasks, and custom objects. Let a rep edit Deals but only view Contacts.
- **Per-channel agent permissions** — scope access to specific agent types, so you can have, say, a chat specialist who only sees Chat Agents and nothing else.
- **Multiple roles per member** — stack roles on a person; their access is the combination of everything their roles allow.
- **Menus adapt to each role** — navigation now shows only the areas a member can actually use and hides the rest.
- **Assign roles from the Users page** with a simple multi-select.
- **No disruption for your team** — existing members keep their current access until you assign them roles, so you can roll permissions out at your own pace.

---

## v1.10 — Meetings, smarter enrichment & a wave of refinements

*2026-06-03*

- **Meetings** — import meeting audio or paste a transcript (auto-transcribed) and associate it to contacts, leads, and companies with AI-suggested matches. Linked meetings appear on CRM timelines as interactions, alongside calls, emails, and chats.
- **Self-service onboarding** — sign up, request to join an existing workspace by its URL, and track your request status, with a cleaner request history and resend-invite flow.
- **AI web-search enrichment** — the Enrich action now pulls live web results for contacts, leads, and companies, on top of your own data.
- **Company detail editing** — edit a company inline from its detail page, with AI-ranked suggestions for which contacts to attach. New companies seed their name and domain from the originating contact.
- **Saved Views, more consistent** — switching a view reliably applies its sort and columns across Contacts, Companies, and Deals, plus a new **Last updated** option for filtering, sorting, and columns.
- **Stronger email deliverability** — outbound sends flow through a fair-share rate limiter with warm-up ramping and adaptive backoff to protect your domain reputation during big campaigns.
- **Streamlined agent models** — every agent type (voice, mail, chat, SMS, task, document) offers the Gemini Flash 3 / 3.5 lineup, with new agents defaulting to Gemini 3 Flash.
- **Faster voice-agent setup** — outstanding configuration items surface as jump-links right in the header so you can finish telephony setup in fewer clicks.
- **More reliable orchestrations** — recurring triggers no longer self-stall, post-wait steps schedule correctly inside for-each and branch containers, and for-each items carrying a phone or email auto-create or update the matching contact.
- **Forecast leaderboard** shows owner names instead of IDs.
- **Meetings moved into the CRM menu** (from Data) for quicker access.
- **Duty Schedule fixes** — the Notifications tab and SMS delivery no longer break on hidden characters pasted into phone numbers, and on-call replies now include the customer contact so the responder can call back directly.
- **Document polish** — set tenant default values for document template tokens, manage a replacements dictionary, and drag signing fields across page boundaries.
- **Quality-of-life fixes** — forgot-password emails now send reliably, the register form no longer loses focus while typing, and the date/time picker icon is visible in dark mode.

---

## v1.9 — Document Agents & built-in e-signature

*2026-05-25*

- **Document Agents** — configure AI generators for any business document type (contracts, proposals, quotes, invoices, offer letters) with their own prompt, tools, model (default Gemini 3.5 Flash), output formats, hardcoded boilerplate sections, and signer roles.
- **Ten built-in templates** ship out of the box and install with one click: Mutual NDA, One-Way NDA, MSA, SOW, Consulting / Independent Contractor Agreement, Sales Proposal, Sales Quote, Invoice, Employment Offer Letter, Letter of Intent. Every template is fully editable once installed.
- **Streaming AI generation** — pick a template, fill in context, watch sections land one at a time in the editor. Renders simultaneously to PDF, DOCX, and HTML.
- **Hardcoded "carbon-copy" sections** — paste legal boilerplate (governing law, severability, force majeure) that gets inserted verbatim on every document of that type and is locked from AI edits.
- **Global sections library** — reusable headers, footers, clauses, and signature blocks shared across many document types, with `{{variable}}` substitution at render time.
- **Visual signing-field placer** — drag and drop signature, initial, date, text, and checkbox fields onto the rendered PDF preview. Per-signer color coding, drag-to-resize, click-to-delete.
- **Self-hosted e-signature** — no DocuSign, no per-envelope fees. Each signer gets a unique tokenized link and signs in an ESIGN/UETA-compliant portal that captures consent, IP/UA, and either a drawn-on-canvas signature or a typed name.
- **Sequential or parallel signer routing** — pick per document or lock at the template level.
- **Recall + Reset actions** for stuck documents — pull an in-flight document back to **Approved** (resets signers, invalidates old links) or all the way back to **Draft** for a full rework. Old signing links stop working immediately.
- **Final stamping with Certificate of Completion** — every signed PDF gets stamped signatures, a cert page with the full audit trail (timestamps, IPs, user agents per signer), and a SHA256 integrity hash so any future tampering is detectable.
- **Attach to CRM** — Document Agents declare which entity types (contacts, leads, companies, deals) they apply to. Each CRM detail page gets a **Documents** card with a filtered template picker, and the counterparty signer auto-populates from the attached record.
- **Editor with embedded PDF preview tabs** (Draft / Place fields / Signed), per-signer status pills, reminder buttons, audit trail, and integrity-hash badge — plus a Documents list filterable by status, agent type, or attached CRM record.

---

## v1.8 — Web Analytics platform

*2026-05-22*

- **Web Analytics platform** — privacy-respecting, first-party page-view and event tracking for any site you operate. Drop a snippet, see real visitors live.
- **Realtime dashboard** — live event stream with per-tenant capped buffer; visitors appear within seconds of loading your page.
- **Site Overview** powered by daily rollups with auto-fallback to live BigQuery and a **freshness pill** so you always know when the data was last refreshed.
- **Web Performance dashboard** with Core Web Vitals (LCP, INP, CLS) measured from real visitors, not synthetic monitors.
- **JS error tracking** with grouped dashboard — see which JavaScript errors are hitting real users, with stack traces, browser/OS breakdown, and frequency.
- **Funnels** — multi-step conversion analysis with both event-grouped and user-grouped modes (identity-stitching parity with cohorts).
- **Cohort retention analysis** with a BigQuery-direct heatmap UI.
- **Tag Manager** with multi-draft workspaces, version history, and one-click rollback. Container publish replicates the GTM experience without the third-party blob.
- **AI tag suggestions** (Gemini) — point the AI at your live site, get suggested tags and tracking events, then one-click promote any suggestion to a permanent EventDefinition.
- **Preview mode + AI element picker** for tag-rule construction — click on your page to pick the element a rule should fire on.
- **Identity stitching** — visitor_id ↔ user_id resolution feeds both cohort retention and user-grouped funnels.
- **First-party CNAME proxy + DNS verification** — serve the tracker from your own domain to dodge ad-blockers, with snippet auto-switching when DNS verifies.
- **Auto-collected events** out of the box — scroll depth, form submissions, web vitals — no custom tags required.
- **Server-side event ingest** with HMAC-signed auth for server-to-server tracking.
- **Live Events debugging table** — see every incoming event as it arrives with full payload, useful when wiring up new tags.
- **IP → geo enrichment** via geoip-lite — country, region, and optional city auto-populated on every event.
- **Persistent sidebar nav** on every analytics sub-page, plus Web Analytics moved to the top of the **Data** menu.

---

## v1.7 — Sales velocity & Relationship Intelligence

*2026-05-22*

- **Relationship Intelligence card** on every contact, lead, and company detail page — surfaces temperature, intent signals, risks, and the recommended next move grounded in your own conversation history. Extraction now covers signals, snapshots, and lifecycle changes; **opt-in backfill** rebuilds intelligence for existing records.
- **Global "+ New" menu** in the top bar — create a contact, lead, company, deal, task, or note from anywhere without navigating away.
- **Drill-downs everywhere** — Forecast tiles, CRM dashboard widgets, and "Most relevant context" items are now clickable.
- **Cross-link actions** on every CRM detail page — jump from contact ↔ deal ↔ company in one click with the right context pre-loaded.
- **Full deal edit** from the deal detail page — stages, dates, value, custom fields all editable inline. No more bouncing to a separate edit screen.
- **Email actions + keyboard shortcuts** — quick-reply / forward / archive from inbound-email detail, plus `j/k` row navigation and `g d` / `g c` / `g l` jumps across the CRM.
- **"Log note" button** pinned to the top bar of every CRM detail page.
- **Call vs meeting outcomes** are now visually distinguished from plain notes in the CRM timeline.
- **Voice call tool calls** render as separate call + result entries in transcripts, easier to scan.
- **New Deal modal stability** — rebuilt to scroll cleanly on short screens, escape backdrop-blur layers, and stop overflowing the viewport.
- **Notes panel uniform** across contact, lead, and company pages; lead notes now surface regardless of which entrypoint created the lead.
- **Email-related cards** on the dashboard grouped into a dedicated "Email & Messaging" cluster.
- **Platform Assistant** default model switched to Gemini 3 Flash for faster in-app AI responses.
- **CRM Tasks card** no longer crashes when subtasks signal a refresh; card-view checkboxes no longer hijack the click and navigate.

---

## v1.6 — CRM Tasks, inbound email & record ownership

*2026-05-21*

- **CRM Tasks overhaul** — task type, status workflow, recurrence, subtasks, and multi-record associations. A new **Task Detail Modal** surfaces every field with inline comments and subtasks; a side drawer adds an activity log and **Log complete with outcome** so closing a task captures *what happened* alongside *done*. Tasks now sit **above** Notes on contact, lead, and company detail pages.
- **Inbound email** — every workspace gets a dedicated address at `<tenantId>@sys.karmaflow.ai`, with the Mailgun route auto-provisioned (no DNS step). Configure a **default owner** and a **pre-filter agent** per inbox. Inbound messages auto-associate to every party in from/to/cc/bcc, surface on the contact **and** company interactions timeline, and open a dedicated **inbound-email detail view** when clicked. Senders on a tenant-owned domain no longer spawn phantom contacts.
- **Email Settings & Notifications** — the Mailgun page is renamed **Email Settings** in the UI and user-visible Mailgun branding is gone. A new **Notifications** page holds tenant-scoped sender profile settings.
- **Assign records to users** — contacts, leads, deals, and companies now have an owner. Filter and sort lists by assignee.
- **Link contacts ↔ companies from either side** — the Add Contacts modal on a company suggests likely contacts to attach, and the relationship can be created from either detail page.
- **Limited-time prompts for agents** — schedule prompt overrides that activate within a window via `{{limited_time_prompts}}`. Useful for seasonal pushes, time-bound offers, and short campaigns.
- **Gemini 3.5 Flash** is now selectable on every agent type.
- **Per-tenant default country code** — set once in tenant settings and it's applied across every phone exit point (dialer, voice agents, SMS sends, click-to-call).
- **Safer contact importer** — unmapped email columns now raise a visible error instead of silently dropping rows. Mail-agent sends with an empty subject **or** body are skipped rather than dispatched.

---

## v1.5 — Sales OS — pipelines, forecast & AI-grounded sales

*2026-05-18*

- **Forecast page** — commit / best / pipeline / weighted tiles, funnel by stage, win-rate by source, and a per-owner leaderboard. Filter by pipeline, owner, and close-date window.
- **CRM Dashboards** with eight preset widgets (forecast, leaderboard, funnel, win rate, activity per rep, lifecycle ladder, stuck deals, hottest deals). Pin the ones you want — selection persists per browser.
- **Configurable pipelines per workspace**, each with their own stages, colors, probabilities, and won/lost flags. The Deals kanban gains a pipeline picker so the board renders the stages of whichever pipeline you select.
- **Saved views with a visual builder** — filter rows where the operator dropdown adapts to the field type (text gets *contains*, dates get *between*, selects get *is any of*), sort by up to three fields with Asc/Desc toggles, choose visible columns and reorder them. Private or shared, with a default-view toggle. An **Advanced JSON** toggle preserves the raw editor for power users.
- **View picker** on Contacts, Companies, and Deals lists applies any saved view in one click.
- **Spreadsheet view** on Contacts, Companies, and Deals — toggle from the toolbar. Inline edit on click (Enter commits, Esc cancels, Tab moves to the next column), sticky header, drag-to-resize columns, multi-select with Shift-click range, and a bulk-action bar with **Edit** (set one field on every selected row) and **Delete selected**.
- **Global semantic search** — the Cmd/Ctrl+K bar searches across calls, chats, emails, SMS, notes, activities, contacts, companies, and deals. Match by meaning, not just keyword.
- **Find similar** panel on Contact, Company, and Deal detail pages — closest neighbours from your own data. Lookalike accounts, similar deals, similar contacts.
- **Most relevant context** panel — the top semantically-relevant historical interactions for the current record. Cold-opening a deal? It points you straight at the conversations that matter.
- **AI-research custom fields** auto-populate from a record's own history plus optional web search, with cited sources. No third-party enrichment account required.
- **Conversation-grounded sales coaching** — call-by-call comparison against your top-performer transcripts. Returns strengths, gaps, and concrete coaching drills.
- **Who else is here** — avatar chips show who else is viewing the same record, refreshed every 20 seconds.
- **Recently Deleted** — single feed across contacts, companies, deals, and tasks with filter chips and one-click restore.
- **Detail-page upgrades** — paginated Notes timeline with inline add (no more page-load slowdowns on records with hundreds of notes), field-level validation errors inline on every CRM form, redesigned CRM + Agents top-nav as four-column megamenus with per-item descriptions, and a Contact Cleanup merge dialog that scrolls cleanly even for large duplicate groups.

---

## v1.3 — Voice campaigns, editor polish & smarter pacing

*2026-05-09*

- Self-service verified caller ID for outbound voice agents
- Streamlined campaign editor with tabbed layout across chat, voice, mail, task, and SMS agents
- Voice previews directly on voice campaign create/edit screens
- Automatic language detection for voice agents
- Card-based agent list view replacing dense tables
- Redesigned Tenant Settings with categorized sections
- Per-day pacing schedules and a redesigned send-window editor for email campaigns
- Pronunciation dictionary with per-agent opt-in packs
- Voice billing now split by direction (phone vs voice chat)

---

## v1.2 — Wizards, integrations & a smarter Curator

*2026-04-23*

- Mail Campaign Wizard — 4-step Quick Start for outbound email campaigns
- Platform Assistant — persistent AI chat widget available across the app
- Google Workspace integration: Gmail, Calendar, Drive, Sheets, Docs, Slides
- Microsoft 365 integration: Mail, Calendar, OneDrive
- The Curator — per-agent feedback review with a tenant-editable prompt
- Tenant-scoped prompt components with sandbox / push-to-live workflow
- Sensitive content redaction (Gemini-powered) configurable per API key
- Email tracking domains with TLS certificate management and DMARC checks
- Contact memories on profile and list pages, plus cleanup, merge & duplicate detection
- Orchestration dashboard redesign with operational metrics
- Cold transfer for direct SIP call transfers

---

## v1.1 — MCP, billing, duty schedules & widget health

*2026-03-14*

- MCP server with OAuth 2.0 (Claude.ai compatibility) — orchestration builder, agent CRUD, and reporting tools
- Duty Schedule with SMS confirmation escalation, voice-agent duty-check, and Rules & Preferences
- Tenant Billing — packages, per-contract overrides, and a tenant-facing billing page
- Admin tax management with province / state lookup
- For-each iterator and recurring / looping workflow primitives in orchestrations
- AI spam scoring for form submissions plus daily call budget controls
- Widget Health dashboard with hero cards and FAILING / DEGRADED / HEALTHY status
- Tenant P&L screen and platform cost configuration
- Effort / verbosity controls for all agent types; Gemini 3 Flash support
- Tenant-scoped user management and agent revision history
- Configurable dead-air timeout for voice campaigns

---

## v1.0 — Initial release — orchestrations, search & analytics

*2026-02-18*

- Canvas-based orchestration flow builder with full-screen editing
- Hybrid search engine (exact + fuzzy + semantic) with global Cmd+K search
- Public help center with 39 documentation articles
- Email-to-form submission with AI field extraction and discovery mode
- Campaign-style dashboard with channel delivery stats (opens, clicks, answer rate)
- Orchestration analytics dashboard and Escalations Drill-Down Explorer
- Background-audio toggle for voice campaigns
- Trigger context passed to voice, email, and SMS agents in orchestrations
- CRM contact linking on chat and voice pages
