Podcast: skip the upgrade prompt on the welcome screen for entitled sites#50062
Conversation
…ites Sites whose plan already includes podcasting (WordPress.com Business or Premium, grandfathered, or self-hosted Jetpack Growth/Complete) report has_product_access = true but were still shown the "Start your <Plan> podcast" checkout button on the welcome screen, which errors at the cart because the plan is already owned (PODS-189). Pass the existing access flag into Welcome and, when the site is already entitled, render a "Podcasting is included in your plan" confirmation card with an Enable CTA instead of the Free-vs-paid upsell. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014REeE16oBwyUh4QsKcNqqN
|
Are you an Automattician? Please test your changes on all WordPress.com environments to help mitigate accidental explosions.
Interested in more tips and information?
|
|
Thank you for your PR! When contributing to Jetpack, we have a few suggestions that can help us test and review your patch:
This comment will be updated as you work on your PR and make changes. If you think that some of those checks are not needed for your PR, please explain why you think so. Thanks for cooperation 🤖 Follow this PR Review Process:
If you have questions about anything, reach out in #jetpack-developers for guidance! |
Code Coverage SummaryCannot generate coverage summary while tests are failing. 🤐 Please fix the tests, or re-run the Code coverage job if it was something being flaky. |
There was a problem hiding this comment.
Pull request overview
Updates the Podcast dashboard welcome screen to avoid showing an upgrade/checkout CTA for sites that already have podcasting entitlement, instead presenting a confirmation state with an enable action.
Changes:
- Pass
has_product_access(ashasAccess) into the Welcome screen and conditionally render an “included” confirmation card when entitled. - Add SCSS styles for the new “included” card state and check icon treatment.
- Add a podcast package changelog entry documenting the fix.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| projects/packages/podcast/src/dashboard/welcome/style.scss | Adds styling for the “included in plan” welcome card and check icon. |
| projects/packages/podcast/src/dashboard/welcome/index.tsx | Accepts hasAccess and conditionally replaces the upgrade prompt with an entitled confirmation + enable CTA. |
| projects/packages/podcast/src/dashboard/index.tsx | Passes hasAccess into the Welcome component. |
| projects/packages/podcast/changelog/fix-pods-189-podcast-welcome-entitled | Documents the user-facing change in the podcast changelog. |
For sites that already include podcasting, the welcome screen showed the hero (with an "Enable podcasting" button) above a separate green "Podcasting is included in your plan" card carrying a second, identical "Enable podcasting" button. The duplicate CTA read as a bug. Fold the confirmation into the hero as a green eyebrow and use the "what's unlocked" copy as the hero description, leaving one card and one CTA. The free-vs-paid comparison now renders only for non-entitled sites; that upsell path is unchanged. Drop the now-unused included-card outline rule and add the hero eyebrow style. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017gE9TE4bUuokYsiovKB8ho
|
@jeherve Yes, I thought the same. Thanks for the nudge. It's updated and I updated the screenshot above. Can you take a look? |
|
@copilot resolve the merge conflicts in this pull request |
…-welcome-entitled # Conflicts: # projects/packages/podcast/src/dashboard/welcome/index.tsx
Merged trunk into this branch and resolved the conflict in |
The trunk merge commit on this branch stripped every leading tab from welcome/index.tsx, leaving the file fully de-indented (it would fail the tab-indentation lint). This restores the indentation. No code change: the file content is otherwise identical to the prior version. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BVfZyPjjhSgTeswVZn1cPh
For entitled sites, replace the green eyebrow plus the generic "belongs
with your blog" title with one confirmation heading ("Podcast is included
with your plan") and the included-features description, dropping the upsell
pitch that no longer applies once the plan covers podcasting. Render the
heading via <Text as="h2"> so the entitled view keeps a real heading in the
document outline, and remove the now-unused eyebrow style.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BVfZyPjjhSgTeswVZn1cPh
…ting The welcome screen's "included with your plan" confirmation was driven by the fail-open access flag (a missing flag is treated as entitled), so an absent flag could assert entitlement and hide the upgrade path from a non-entitled site. Gate the welcome copy on a fail-closed has_product_access === true, while keeping the fail-open signal for tab gating so a deploy-race-absent flag still never locks anyone out of the Stats or Episodes tabs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BVfZyPjjhSgTeswVZn1cPh
…rettier Removing the eyebrow className left the HStack short enough that prettier wants its props inline. Fixes the ESLint (prettier/prettier) failure on CI. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BVfZyPjjhSgTeswVZn1cPh

If the site already includes podcasting, the welcome screen confirms that instead of showing the pricing cards.
Proposed changes
The podcast welcome screen always showed a Free-vs-paid pricing comparison whose paid card links to checkout. Sites that already include podcasting (WordPress.com Business or Premium, grandfathered, or self-hosted Jetpack Growth or Complete) report
has_product_access = true, yet they still saw the paid "Start your … podcast" button. Clicking it errored at the cart, because the plan is already owned.When the site is already entitled, the hero now shows a "Podcast is included with your plan" confirmation heading with an Enable podcasting button, and hides the pricing comparison. The confirmation copy adapts to WordPress.com vs self-hosted. To avoid claiming entitlement we can't confirm, the welcome copy reads a fail-closed
has_product_access === true, while tab gating keeps the existing fail-open check so a missing flag never locks anyone out.One commit restores indentation a prior trunk merge had stripped from
welcome/index.tsx. It makes no behavior change.Related product discussion/links
Does this pull request change what data or activity we track or use?
No.
Testing instructions
You need a site where the Podcast dashboard (Jetpack > Podcast) is available, the plan already includes podcasting (for example a WordPress.com Business site), and no podcast category has been set up yet.
wp-admin/admin.php?page=jetpack-podcaston that site.Before / after: