In-chat booking (three personas) — Peyton WP

2026-08-19 · BLOCKED — Workshop Personalize+Connect verified, Activate blocked on a live WhatsApp/Meta credential rejection.

Scorecard

ScenarioVerdict
CT-ICBF-01 Workshop activateFAIL — blocked at Activate
CT-ICBF-01b Workshop form + Storage + DBBLOCKED (not reached)
CT-ICBF-02 / 02b EventBLOCKED (not started)
CT-ICBF-03 / 03b RetreatBLOCKED (not started)

Workshop — Personalize + Connect (verified, all pass criteria met)

WS-CONN evidence 1 — /connects: WhatsApp Business shows "Connected · Healthy" (the misleading signal — Meta actually rejects this token at Activate time)
WS-CONN evidence 2 — Workshop Booking Connect tab: Brain check went green (Brand voice "Confirm this is you" click), READY TO RUN: Apps ✓ · Wallet ✓ · Brain ✓

The blocker

Clicking Activate returns: "Reconnect WhatsApp to finish activating — The booking form didn't go live — your WhatsApp connection expired. The assistant is not on." Full clean rollback confirmed in Postgres (no assistants row created).

Root cause traced to src/lib/userFriendlyErrors.ts — the backend's Meta Graph API submission for the launch-message template is rejected with a credential/token-class reason. This contradicts what /connects and the connected_apps table both report ("Connected · Healthy", valid phone/WABA ids). See the findings markdown for full detail and recommendations.

Bugs found this session

  1. Fixed live: scripts/reset-test-account.sh was missing a generation_runs delete step (table added #2982, after the script was written) — blocked every reset for any test account with a completed generation run. Fixed, verified, re-ran successfully.
  2. Test-data gap: no Brain seed script exists for Workshop/Event personas (only Retreat) — worked around by hand-authoring a minimal "The Clay Room" profile.
  3. Reproducible: Personalize/Connect wizard progress is not server-persisted as a draft — a hard page reload silently wipes all filled fields and tab-completion state, with zero "draft saved" indicator. Brain edits, by contrast, do survive reload.

Full findings: docs/testing/click-through/in-chat-booking-flow-findings-2026-08-19.md