Skip to content

Show the workspace's own numbers and a trust line on the ended-trial wall - #1497

Merged
helpcodeai merged 1 commit into
mainfrom
feat/trial-wall-trust
Nov 3, 2026
Merged

helpcodeai merged 1 commit into
mainfrom
feat/trial-wall-trust

Conversation

@helpcodeai

Copy link
Copy Markdown
Contributor

What

The ended-trial licence wall on Cloud now gives an admin a reason to subscribe, not only a notice that the trial expired:

  • A headline about what they keep ("Keep your AI connected to your apps") and a body that names their AI client when we know it.
  • The workspace's own numbers, only when they are real: successful tool calls in this workspace, the connectors that made them (up to three, still in the workspace), and a line when the AI tried to use them again after the trial ended. A workspace with no successful call sees no numbers.
  • A trust line under the Subscribe button: cancel any time, secure payment by Stripe, hosted in Frankfurt, GDPR and DPA. Under it, the Cloud workspace count when available and the Claude Directory listing (left out for ChatGPT users, as on sign-in).
  • "Delete your account" stays, in a quieter style.

About 10% of workspaces keep the earlier wall as a control group (fixed per workspace, sha256 bucket). GET /api/license/wall returns the variant and the numbers, only to an admin of a Cloud workspace whose free trial ended, and records license_wall_viewed (server-only, once per workspace a UTC day, metadata variant and calls). Read it against Stripe's completed trial_ended_wall checkouts by organizationId.

Why

The wall is where most direct Cloud purchases start: 87 of 196 paid checkouts and 52% of paid-checkout revenue from 20 Oct to 3 Nov 2026. It had no trust content and no numbers of the workspace, and we could not see how many admins saw it without opening Checkout.

Cloud and self-hosted

  • Cloud: as above. All queries are filtered by organizationId. If the endpoint fails or takes over 3 s, the new wall shows without numbers.
  • Self-hosted: unchanged. It is never walled, and the endpoint answers { wall: null }.

No schema change, no ee/ change. New strings in EN, DE and IT (licenseWall).

Tests

  • packages/backend: npx jest src/license src/audit --maxWorkers=4 → 26 suites, 435 tests passed (new license-wall.service.spec.ts: variant split, numbers only with successful calls, organization scoping, one view a day, endpoint only for ended-trial admins on Cloud). npx tsc --noEmit -p tsconfig.json clean; eslint on the changed files clean.
  • packages/frontend: npx tsc --noEmit -p tsconfig.json clean; eslint on the changed files: 2 warnings, both already on main. Playwright tests/e2e/card-trial.spec.ts and tests/e2e/billing-awareness.spec.ts against next dev on port 3100 → 53 passed (new: wall with numbers and trust line, wall without numbers; the earlier test runs on the control variant).

…wall

The ended-trial wall is where most direct Cloud purchases start (52% of paid
checkout revenue, 20 Oct - 3 Nov 2026), but it said only that the trial
expired. For an admin of a Cloud workspace whose trial ended it now leads
with what they keep, shows the successful tool calls the workspace really
made (and with which connectors, only when there are any), and puts cancel
any time, Stripe, Frankfurt hosting and GDPR under the Subscribe button.

About 10% of workspaces keep the earlier wall as a control group, fixed per
workspace. GET /api/license/wall returns the variant and the numbers and
records license_wall_viewed once per workspace a UTC day, so views can be
read against completed trial_ended_wall checkouts per variant.

Self-hosted is unchanged: it is never walled, and the endpoint answers null.
@helpcodeai
helpcodeai merged commit 67bb3b8 into main Nov 3, 2026
15 checks passed
@helpcodeai
helpcodeai deleted the feat/trial-wall-trust branch November 3, 2026 21:47
@github-actions github-actions Bot locked and limited conversation to collaborators Nov 3, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant