---
title: "KaiCalls Product Updates - September 25, 2026"
date: "2026-09-25"
author: "KaiCalls Team"
category: "Product Updates"
description: "What's new in KaiCalls: features, improvements, and bug fixes from the past week"
---

# KaiCalls Product Updates

**Week of September 25, 2026**

## ✨ New Features

- **Add bounded created_after filter to governed calls read API**
- **Thumbtack: register new KaiCalls lines and admin phones automatically, not only at connect/re-sync**
- **Create every DialStack account on the HIPAA agreement (BAA) by default**
- **Phone system: owner accepts the carrier service agreement inside KaiCalls**
- **native Zendesk Support call tickets**
- **add canonical phone inventory policy**
- **automate expired no-card trial number retirement**
- **add bounded calls collection window**
- **add the public number porting guide**
- **add governed DialStack porting workflow**

## 📈 Improvements

- Isolate KaiCalls billing portal from shared Stripe product catalog
- Call Tracking: credit form captures to their website visit, and list each visit
- Separate marketing text consent from service consent
- Only customers who call in give text consent; Florida, Oklahoma and Maryland sales-text rules
- Kai acts over text, remembers team-answered calls, and stops pitching KaiCalls on callbacks
- prepare Zendesk Marketplace listing draft
- explain missing promised SMS in help FAQ
- fix(billing): isolate KaiCalls customer portal from shared catalog
- feat(widget,dni): add A2A direct protocol, Agentic Form Bridge, and CallRail swap.js parity
- fix(help): update porting guide FAQ and limits to reflect ported SMS and fax support
- fix(outbound): handle iOS 26 Call Screening prompt on outbound calls (#2362)
- fix(docs): normalize CRLF line endings in build-help-index --check
- fix(docs): update porting and phone system help to reflect fax and ported SMS support
- fix(compare): rewrite ruby-receptionist and human-receptionist copy to remove AI slop
- docs(prd): device bridge platform — one backend for the iPhone, Android and Mac apps
- fix(deploy): drop the 51st vercel.json functions entry that blocked prod deploys
- feat(thumbtack): register new lines and admin phones with Thumbtack automatically
- Redesign /whatsapp in a bold mint, chat-first style
- TCPA page for outbound calls; DNC + calling hours on human-dialed calls
- fix(vapi-webhook): stop paging on every agentless setup call
- fix(phone-system): a cell answer is a team cell, not "Desk Phone Ext team"
- docs(wiki): BAA vendors are per-business swaps; Discord is not a vendor question
- fix(phone-system): a call the owner answers on their cell is not a missed call
- fix(api): validate max_duration on POST /v1/calls and stop echoing provider errors
- fix(phone-reservation): rate-limit anonymous presale checkout; register both routes with rbac-guard
- feat(dialstack): every phone account signs the carrier's HIPAA agreement (BAA)
- fix(pricing): a desk-phone line is $29, and the carrier declares it that way
- fix(phone-system): credit a phone-system call to the number the customer dialed
- fix(phone-system): always link Kai's answer to the phone-system call
- fix(seo): self-referencing canonicals on /help pages + sitemap coverage
- fix(forwarding): one source of truth for carrier codes; conditional forwarding by default
- feat(phone-system): calls-off banner on top, and a setup-progress view of the phone system
- Move contact row actions under the heat pill; text from the softphone
- Phone system: owner accepts the phone service agreement inside KaiCalls
- Fix the inverted pricing ladder, and add the comparison matrix that exposed it
- fix(setup-callin): unblock intro texts, stop false setup alarms
- fix(signup): keep the owner's cell when the roster write fails (#2243)
- fix(onboarding): the forward-calls nudge is silenced for most signups it should reach

## 🔧 Bug Fixes

- Call Tracking: website form captures always land in Unattributed
- Text replies offer a "guide link" and then say they can't send it
- Post-call follow-up text skipped for "email" channel preference even when the caller has no email
- Setup recovery keeps calling and texting callers the setup assistant off-ramped (wrong numbers)
- attach send_link when a business link is added
- ops: safely retire verified idle phone-number cohort
- require customer number selection and cap phone inventory
- clear phone-normalization guard debt in carrier forwarding
- return actionable hosted phone-system address validation errors
- prevent ring-first callbacks from persisting Vercel preview URLs
- persist successful setup calls with discovered business and agent
- prevent incompatible international SMS sender selection
- Outbound calls: handle iOS 26 Call Screening ("Please state your name and reason for calling")
- POST /api/v1/calls: out-of-range max_duration returns 500 and echoes raw provider error
- Agents call themselves an "AI assistant" on calls: shared Identity guardrail scripts it
- SEO: /help pages canonicalize to the homepage (root layout canonical inherited)
- Phone system: Kai-answered calls are logged as voicemail — handoff stitching is off in production
- Signup requires the owner's cell, then drops it on the floor when roster registration fails — 144 of 199 accounts have no recoverable number
- stop re-contacting off-ramped callers, text when email isn't real, no undeliverable link offers
- identify Zendesk Marketplace API requests
- preserve lead events, webhook receipts and fallback recordings
- attach send_link when textable links are saved
- ignore deleted phone ownership history
- scope demo assistant inventory protection
- allow governed expired-trial API execution
- retire stale trial number references
- add guarded carrier number retirement
- require billing before new phone activation
- clear carrier forwarding normalization guard
- harden signup and telephony failure paths

---

Have questions about these updates? [Contact our support team](https://kaicalls.com/contact) or reply to our weekly email.

Want to stay updated? [Subscribe to our newsletter](https://kaicalls.com/newsletter)
