---
title: "KaiCalls Product Updates - September 04, 2026"
date: "2026-09-04"
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 04, 2026**

## ✨ New Features

- **Remove hostname brand switching (KaiCalls does not white-label)**
- **Activation: verified conditional call forwarding (carrier codes, live verify, Connected state, trial clock at forwarding)**
- **use-case step (Business vs Personal) offers no visible stakes for the decision**
- **Move "how did you hear about us" off the account-creation screen (highest-friction step in signup)**
- **support verified imported SMS consent and expose failed send attempts**
- **Add persistent sidebar setup checklist and one-time coach mark**
- **Rebuild feature help pages with complete guidance and KaiCalls brand**
- **Document the canonical KaiCalls feature inventory across public pages and docs**
- **Pricing and checkout truth: preserve validated plan, source, and Stripe value**
- **API signup: truthful callable readiness and usable auth link**
- **Intake continuity: preserve LSA journey and bounded attribution**
- **Authoritative milestone contract and qualifying-call classifier**
- **implement provider-backed WhatsApp sender provisioning**
- **Battle-test and control proof-first rollout**
- **Save and independently verify deployment routes**
- **Make MCP activation use shared proof authority**
- **Build resumable activation shell and server gate**
- **Prove owner notifications with provider receipts**
- **Bind genuine inbound calls to proof sessions**
- **Freeze proof data and state authority**
- **add WhatsApp as a public contact option**
- **Add Google Jobs metadata and public job-board XML feeds**
- **publish Markdown-backed KaiCalls careers listings**
- **Live H1 sells an after-hours safety net, but 57-88% of real calls are in-hours and ZERO paying customers configured the after-hours split**
- **feat(phone): verify Kai Voicemail forwarding activation**
- **Rework phone-system readiness, routing, and coverage UX**
- **reconcile ambiguous live-call takeover outcomes**
- **make dashboard task-first and customer-friendly**
- **expose failed SMS attempts**
- **define activation evidence contract**
- **complete proof-first activation journey**
- **prove activation notification delivery**
- **bind inbound activation proof calls**
- **provision customer WhatsApp senders**
- **establish proof-first activation evidence authority**
- **add WhatsApp as a public contact option**
- **add automated careers distribution feeds**
- **publish Markdown-backed careers listings**
- **add Kai Line phone control summary**
- **make dashboard task-first and customer-friendly**

## 📈 Improvements

- push-to-litify crashes with "multiple (or no) rows returned" from getCredentials
- Uncaught TypeError: Invalid IP address: undefined in POST /api/intake/extract-from-url
- LSA landing page: truthful proof, CTA, and bounded attribution events
- Cursor MCP OAuth fails: unsupported redirect URI
- ai receptionist — page exists but unranked
- fix(phone-system): dedupe hub-card testid across responsive mounts
- fix(intake): auto-select business selector after signup hand-off
- fix(billing): wire live $69.99 Stripe price for Solo checkout
- feat(pricing): phone-system pricing — Solo $69.99, itemised regulatory fees, $15 extra lines and desk phones
- feat(phone-system): caller-ID prefix on every number (partner answer to #1822)
- fix(phone-system): Vault fallback for API-key provisioning; allow api_purchase in the number registry
- wiki: phone-system pricing offers proposal (keeps $69.99 and the packages)
- Phone system: carrier rate ranges + provisioning from any MCP client
- fix(build): stop tracing public/ into help route functions (production build failure)
- Phone system follow-up: marketing pages, walkthrough rig, red-team fixes, flow builder, sandbox ping rig (#1821)
- Kai on PBX rails: DialStack tenant provisioning, Kai as extension 700, signed call ingestion, runtime stitching, journey surfaces (#1821)
- Drop price anchor from the use-case step
- fix(types): use BRAND instead of removed DEFAULT_BRAND_CONFIG export
- fix(security): authorize four unauthenticated service-role API routes
- remove hostname brand switching (no white-label)
- static marketing pages, self-hosted fonts, SSR header, web-vitals capture
- fix(security): gate customer-line Vapi tool routes behind the internal router
- SMS notifications on by default, with one resolved owner destination
- fix(admin-mode): make the owner call-in line answer, remember, and hang up
- fix(activation): require the owner mobile before the forwarding step
- Green the test suite, run it in CI, and fix the booking-time defect (plus the audit that found them)
- fix(sdr): never greet a lead with a placeholder first name ("Hi New,")
- feat(attribution): demo_line and directory as measurable signup sources
- Activation: verified conditional call forwarding, carrier codes, owner phone, trial clock (#1796)
- Fix trial-copy mismatch, account-screen friction, and use-case stakes
- Add search_local_business concierge referral tool
- Fix daily production errors across intake, routing, evals, and telemetry
- Add persistent sidebar setup checklist and one-time coach mark
- Add report_issue MCP tool for customer issue reporting
- Fix duplicate SMS leads from ambiguous existing-lead matches
- Add monthly "what's new and why you'd care" release digest
- Fix uncaught Invalid IP address crash in website SSRF fetch
- Add verified safe Bigcapital company import
- Format outbound Discord/Slack notifications instead of raw JSON dumps
- finish plain language feature pass
- remove dash punctuation from feature copy
- deepen and brand every public feature guide
- publish canonical KaiCalls feature inventory
- fix(onboarding): activation dial link feedback + dead-click labels
- fix(sms): stop leaking Twilio to the no-numbers empty state
- fix(docs): correct stale VAPI_WEBHOOK_AUTH docstring
- Unblock KaiCalls conversion deployment
- Fix KaiCalls Google Ads website conversions
- fix(admin): stop retired plans from being assignable, make plan optional
- feat(attribution): make the demo-line acquisition channel visible
- fix(onboarding): stop synthesis cron clobbering hand-tuned agent prompts
- security(vapi-tools): gate setup/onboarding tool routes on the internal-origin secret
- feat(phone): verify Kai Voicemail forwarding activation
- fix(typecheck): clear all pnpm typecheck / typecheck:strict errors on main
- test(api): route-level coverage for POST /api/v1/sms/send
- fix(oauth): accept native-client private-use redirect URIs
- feat(seo): add 6 core money pages and product truth routes with navigation

## 🔧 Bug Fixes

- Business selector not auto-selected after intake signup (stale BusinessProvider)
- Four unauthenticated service-role routes: recording-callback, internal-outbound-call, test-setup-flow, openrouter-proxy
- Customer-line Vapi tool routes are reachable unauthenticated (charge_saved_card, send_sms, bookings)
- Trial-mechanics promise mismatch: hero/use-case/pricing/FAQ say "7-day trial", actual default path is 25 free minutes
- bulk Vapi routing audit lookups and surface missing provider numbers
- Fix daily production errors: intake, lead lifecycle, evals, routing, call latency, PostHog
- Fix review-request email fan-out and make delivery idempotent
- Fix duplicate SMS leads and repeated Lead Notifier alerts
- publish code-backed feature truth for comparison crawlers
- Atomic callable-number claim and routing read-back
- make intake auth initialization resilient to Meta WebView sendSync bridge failure
- restore canonical 4,000 calls blog route
- prevent invalid call timestamps from crashing call detail
- render email-only website signups as leads, not calls
- Replace careers pipeline copy with direct hiring language
- intake_extraction_failed is caught and swallowed (KAICALLS-45/46, handled:true) — one user submitted the intake form three times because it silently failed twice
- Raw Twilio error shown to business owners on day one: 'No SMS-capable phone numbers found. Please configure your Twilio phone numbers first.'
- Dead clicks on inert elements that look like buttons — 'Phone-First Setup' on /intake (6 clicks/6 users) and 'Finish creating your account' (5/5)
- Activation ask converts at ZERO — 87 users shown, 44% skip, 40% click a dial link that does nothing visible, 0 subscribed
- daily-errors hardcodes a 24h Sentry window — surfaces only 4 of 14 onboarding-relevant issues; the signal is in the 14-90 day tail
- Six cro-events.ts event names have ZERO emitters — any dashboard on them reads zero forever and looks like a funnel collapse
- Sentry.setUser() is never called — userCount = 0 on all 35 issues, 'how many customers hit this' is unanswerable
- Google-OAuth signups never fire user_signed_up — src/app/auth/callback/route.ts omits phServer.userSignedUp, whole acquisition path missing from PostHog
- forwarding_verified can never become true — gate requires outcome.source === 'trusted_inbound' which nothing emits; is_live permanently false, setupStallAlert false-fires for every business
- Dashboard activation count is ~2x truth — 83 seeded 47s sample:true welcome calls counted as real usage (67 of 190 accounts activated, not 158)
- trial_minutes_used reads 0.0 for 4,335 of 4,444 all-time real inbound calls (98%) — every activation decision this month is built on it
- ~67 further ungated vapi-tools routes beyond the 16 fixed in #1680 — payment, SMS, ordering, calendar, directory/PII
- vapi-webhook secret verification is FAIL-OPEN by default (VAPI_WEBHOOK_AUTH defaults to observe) — check prod value today
- distinguish signup leads from anonymous website visitors in Slack
- pnpm typecheck is red on main: 37 errors across 9 files block the production deploy typecheck gate
- DNI number rendering, off-screen dialogs, and admin mode discoverability
- enable concierge search in admin mode
- bulk routing audit provider lookups
- don't crash push-to-litify on missing/duplicate Litify credentials
- deduplicate review request emails
- publish code-backed KaiCalls feature truth
- wire the 6 dead cro-events GA4 milestones to real emitters
- recover from intake extraction failures
- preserve post-call caller notification settings
- preserve pricing and checkout truth
- preserve LSA intake attribution continuity
- make API signup success prove callable readiness
- claim callable phone numbers atomically
- make LSA landing claims and attribution truthful
- filter detached Meta WebView bridge error
- restore canonical podcast blog routes
- prevent invalid call timestamps from crashing details
- separate signup leads from call alerts
- clarify header trial CTA
- make careers listings direct and open
- Sentry user/business context on the client + surface the 14-90 day issue tail
- reconcile ambiguous live-call takeover outcomes
- label account signup leads accurately
- trial cron reads the column that is actually written; caller-clock timezone defaults

---

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)
