feat: show a premium paywall on the external auth settings page - #28435
Merged
Conversation
The browser-only connections paywall on /deployment/security fell back to the generic PREMIUM_FEATURES list. Use the bullets from the Premium Copy Updates doc, and add a paywalled story so the state is covered.
The multiple-providers notice was a plain info alert, so the copy doc bullets for external auth had nowhere to render and the surface was missing from premium funnel attribution. Replace it with PremiumPaywallSmall, shown only when the deployment lacks the multiple_external_auth entitlement, and add an external_auth premium funnel source so CTA clicks are attributable like every other paywall.
Contributor
Docs previewCheck off each page once it's been reviewed. If a page changes in a later push, its checkbox clears automatically so it gets a fresh look. Pages not yet wired into the docs navigation aren't listed here. |
Contributor
|
Spacing in the screenshot is gnarly (if the screenshot is accurate). Also, should we remove the empty providers* UI below the paywall? If we do, the paywall will be the only thing on the page, so we should probably use the bigger paywall layout to be consistent. Edit: I forgot we allow 1 external auth on Community licenses, so we'll need to retain that UI. |
…' into dfraley/external-auth-paywall
Collaborator
Author
|
@mattvollmer manually confirmed, the weird spacing was cause the gif wasn't rendering in the screenshot |
jeremyruppel
approved these changes
Aug 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

TL;DR: hooking up more than one Git provider needs Premium, and now the page says so the same way every other Premium page does.
The Premium Copy Updates doc has a description, a Learn more URL, and three bullets for
/deployment/external-auth, but the page rendered a plainAlert, which had nowhere to put them. It was also the only premium surface left out of the funnel telemetry added in #28425.Alertis replaced withPremiumPaywallSmall, using the doc's description and bullets.multiple_external_authentitlement. Previously the notice showed unconditionally, including on deployments that already had the feature.external_authvalue inPremiumFunnelSource(codersdk/premiumfunnel.go, plusmake genoutput) so CTA clicks are attributable like every other paywall./admin/external-auth, which is the doc's Learn more URL. The deep link to#multiple-external-providers-premiumthat lived in the alert is dropped in favour of that button.Proof
From a local dev deployment with no license. The earlier screenshot here showed a large blank band above the paywall. That was a capture artifact: the Playwright bundled Chromium cannot decode the H.264
external-auth.mp4, so the video collapsed to a 300x150 fallback box. Re-captured in real Chrome, the video renders at 953x348, sits flush against the header, and the paywall follows 24px below it from the wrapper'smt-6. No spacing change was needed. DOM assertions on that page:Telemetry, captured by clicking "Start trial for free" on that page and recording the outbound request:
make gen,go build ./codersdk/...,pnpm exec tsc --noEmit,pnpm exec biome check src, and the page's Storybook tests pass.Generated by Coder Agents on behalf of @david-fraley.