Signup launch-site: keep the plan step for free-trial sites - #113922
Open
bogiii wants to merge 5 commits into
Open
Signup launch-site: keep the plan step for free-trial sites#113922bogiii wants to merge 5 commits into
bogiii wants to merge 5 commits into
Conversation
A free-trial plan (e.g. the eCommerce trial) has a non-free product ID, so isCurrentPlanPaid reports it as a paid plan and isPlanFulfilled excluded the plans-launch step. Trial sites launching through start/launch-site were therefore never offered the underlying plan to purchase. Detect trial plans by slug and keep the plan step available. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
WordPress.com
Automattic for Agencies
|
|
Here is how your PR affects size of JS and CSS bundles shipped to the user's browser: Sections (~237 bytes added 📈 [gzipped]) Details
Sections contain code specific for a given set of routes. Is downloaded and parsed only when a particular route is navigated to. Async-loaded Components (~19 bytes added 📈 [gzipped]) Details
React components that are loaded lazily, when a certain part of UI is displayed for the first time. Legend What is parsed and gzip size?Parsed Size: Uncompressed size of the JS and CSS files. This much code needs to be parsed and stored in memory. |
An eCommerce free trial is created without a plan in the cart, so the site never gets a `sell` site_intent and the plans grid falls back to the full WPCOM set. Resolve the eCommerce-trial plan to the `plans-business-trial` intent in the site-meta bridge so surfaces like start/launch-site's plan step show the Business + Commerce plans. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
9 tasks
…anches Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
bogiii
marked this pull request as ready for review
September 1, 2026 12:33
…anches Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes p1787825846047019-slack-C02BGMUPFEC
Proposed Changes
isPlanFulfilled(client/lib/signup/step-actions/index.js), don't exclude theplans-launchstep when the site's current plan is a free-trial plan, detected by plan slug.usePlanIntentFromSiteMetanow resolves an eCommerce-trial site to theplans-business-trialintent (Business + Commerce) instead of the full WPCOM plan list.Why are these changes being made?
When a site on a free trial (e.g. the eCommerce trial,
ecommerce-trial-bundle-monthly) launches viastart/launch-site, the flow only offereddomains-launchand never let the user purchase the underlying plan.The flow defines steps
[ 'domains-launch', 'plans-launch', 'launch' ], butisPlanFulfilledskips and excludesplans-launchwheneverisPaidPlanis true.isPaidPlancomes fromisCurrentPlanPaid, which only checks the plan'sproduct_idagainst a hardcoded free-plan list. A trial has a non-freeproduct_id, so it is misclassified as a fully paid plan and the plan step is dropped.Even once the step is shown, it displayed the whole plan list. The eCommerce trial is created without a plan in the cart, so the site never gets a
sellsite_intent, andPlansFeaturesMainfell back to the default WPCOM grid. Keying off the current plan and returning theplans-business-trialintent scopes it to the commerce plans.This mirrors the
/plans/<site>page, which correctly detects the free trial and prompts the user to complete their purchase.isCurrentPlanPaidis left untouched (it is used widely).Scope notes:
@automattic/calypso-products, per that package'sAGENTS.mddirection to treat it as frozen and not add new slug lists/predicates.Testing Instructions
start/launch-site/launch?siteSlug=<trial-site>and click Launch.domains-launch, confirm the flow now shows the plan-selection step (plans-launch), scoped to the commerce plans (Business + Commerce), instead of launching directly.yarn test-client client/lib/signup/test/step-actions.jspasses.Pre-merge Checklist
🤖 Generated with Claude Code