---
version: v1.2.0
title: Smarter follow-ups, multi-CTA cards, and behavior-trigger reliability
released_at: 2026-05-13
---

## New features

**Suggested follow-up questions.** After every answer, the widget
now shows up to three follow-up prompts the visitor can tap to keep
the conversation moving. Reduces the dead-end "I don't know what
else to ask" drop-off. Generated automatically from the answer's
context — no setup needed.

**Stage-aware typing indicator.** Instead of a generic "..." dot,
the widget now tells the visitor exactly what's happening:
"Searching your site…" while we pull relevant pages, then
"Thinking…" while the AI writes the reply, then the streamed
answer. Makes the wait feel deliberate instead of frozen.

**Unread badge + soft chime when minimised.** If a visitor walks
away from a half-finished reply, the widget pops a small red badge
on the closed bar and plays a one-time soft tone. They come back,
see "1 new message", click, and pick up where they left off. The
chime respects the system's "reduce motion" preference and never
plays more than once per session.

**Up to three CTA cards stack per reply.** Earlier the agent could
only show a single call-to-action card after an answer ("Book a
demo"). Now configure up to three CTAs with priorities — all
matching ones render as a clean stack so a visitor asking about
pricing sees Pricing, Demo, and Docs together. Pre-fix only the
top-priority CTA shipped.

**Lead-form trigger strategy.** Every agent now has four ways to
decide when the inline lead form appears: <strong>Engagement</strong>
(default — fires once intent is detected or after a few turns),
<strong>First message</strong> (every visitor sees the form on
turn one — best for sales-led agents), <strong>Keyword only</strong>
(only when the visitor signals real intent like "pricing" /
"demo"), and <strong>Never</strong> (chat without lead capture).
Pick the one that matches your funnel.

**Self-host installation guide.** New <code>/documentation/installation</code>
page walks operators from a fresh server to a running Pitchbar
deployment — requirements, environment variables, database setup,
asset build, Octane/Horizon/Reverb processes, cron, first admin,
smoke test, troubleshooting. Covers both host cron and the
one-click Cloudflare Cron Worker option.

**Simplified Chinese for the WordPress plugin.** The Pitchbar
WordPress companion plugin (v2.0.5) now ships with a complete
Simplified Chinese (zh_CN) translation pack — 53 strings covering
settings, sync buttons, status messages, and admin notices.
WordPress automatically loads it when the site or user locale is
set to 简体中文.

**Bundled standalone documentation in the WordPress plugin.**
Every plugin zip now includes a single-file <code>documentation.html</code>
buyers can open without an internet connection. Mintlify-style
reference covering installation, content sync, page builders,
WooCommerce, REST API, troubleshooting.

**Connected WordPress sites surface per agent.** The Integrations
page in the dashboard now shows every WordPress site that
connected the companion plugin to one of your agents — site URL,
plugin version, WooCommerce status, "Last seen X ago". Confirms
the integration is live without having to log into each WP install.

## Improvements

**Existing agents no longer answer "I don't have enough
information" with sources indexed.** The default similarity
threshold for newly created agents drops from 0.78 to 0.5 to match
how Cloudflare's embedding model scores real matches (it scores
lower than OpenAI's by design). Visitors now get answers from the
content you indexed instead of the fallback line.
<strong>Note for existing agents:</strong> agents created before
this release may still be on 0.78. If you see the "no information"
fallback, open the agent's settings and lower the threshold to
0.5.

**Analytics page survives stale-schema deploys.** Earlier a single
broken column on the analytics dashboard would return a generic
"Internal Server Error" page. The dashboard now degrades
gracefully — missing data shows as zeros, a yellow banner explains
"some metrics couldn't be loaded — the most likely cause is a
pending database migration", and the rest of the page renders
normally.

**Customer-safe wording on crawl errors.** When a crawl failed —
service hiccup, missing page, blocked site — the Sources list
used to show the raw upstream message (sometimes including
JSON envelopes from Cloudflare with status codes and error bodies).
The customer-facing column now shows short friendly lines like
"We couldn't reach this page" or "The crawl service is busy right
now — we will retry automatically." Operators still see the full
raw message under <strong>Show details</strong>.

**PDF, TXT, DOCX uploads now reliably index.** A queue worker
configuration was missing the indexing lane for file uploads, so
PDFs and text documents could sit in "pending" indefinitely on
some deployments. Knowledge uploads from now on flow through
correctly and finish indexing within a minute.

## Fixes

**Behavior triggers now actually fire.** The widget's behavior
triggers — exit-intent, idle, scroll-depth, time-on-page,
abandoned-cart — were silently disabled in earlier releases. Rules
configured in the admin saved fine and showed up in the live
init payload, but a teardown bug detached the listeners
milliseconds after they attached, so they never ran. Buyer
Dovydas's "behavior triggers don't work" report turned out to be
real and a critical regression. Fixed; every trigger kind now
fires as documented. No reconfiguration needed.

**Three configured CTAs no longer collapse to one.** A buyer
reported that adding three CTAs to an agent only ever rendered the
top-priority one. The selector now returns up to three matching
CTAs and the widget stacks all of them. Existing agents already
configured with multiple CTAs see them all without any setup
change.

**No raw Cloudflare 401 JSON leaks into the Sources list.**
Auto-indexed sources from visitor pages would sometimes show the
raw upstream error envelope (Cloudflare Browser Rendering JSON
with status codes, error codes, and authentication messages)
directly in the customer-facing column. The customer now sees a
sanitized "the crawl service is temporarily unavailable on your
workspace" message instead; the raw message stays available under
the operator's Show details toggle.

**Analytics dashboard no longer 500s on stale schema.** Companion
to the Improvements section above — the actual cause of every
"Internal Server Error" report on <code>/app/analytics</code> we'd
seen in the last few weeks.
