Skip to content

Podcast: skip the upgrade prompt on the welcome screen for entitled sites#50062

Merged
jeherve merged 9 commits into
trunkfrom
fix/pods-189-podcast-welcome-entitled
Jul 1, 2026
Merged

Podcast: skip the upgrade prompt on the welcome screen for entitled sites#50062
jeherve merged 9 commits into
trunkfrom
fix/pods-189-podcast-welcome-entitled

Conversation

@robertbpugh

@robertbpugh robertbpugh commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

If the site already includes podcasting, the welcome screen confirms that instead of showing the pricing cards.

CleanShot 2026-06-30 at 10 49 03@2x

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

  • PODS-189

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.

  • Go to wp-admin/admin.php?page=jetpack-podcast on that site.
  • The welcome hero shows a "Podcast is included with your plan" confirmation with a green check and an "Enable podcasting" button. There is no "Start your … podcast" checkout button anywhere on the screen.
  • Click "Enable podcasting" and confirm the category setup modal opens (it does not send you to the cart).
  • Regression check: on a free site (no podcasting access), the Free and paid cards still show, and the paid card still links to checkout as before.

Before / after:

Before (entitled site saw the paid upsell) After (entitled site, no checkout)
attach mockup attach mockup

…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
@robertbpugh robertbpugh self-assigned this Jun 30, 2026
@github-actions

github-actions Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Are you an Automattician? Please test your changes on all WordPress.com environments to help mitigate accidental explosions.

  • To test on WoA, go to the Plugins menu on a WoA dev site. Click on the "Upload" button and follow the upgrade flow to be able to upload, install, and activate the Jetpack Beta plugin. Once the plugin is active, go to Jetpack > Jetpack Beta, select your plugin (Jetpack or WordPress.com Site Helper), and enable the fix/pods-189-podcast-welcome-entitled branch.
  • To test on Simple, run the following command on your sandbox:
bin/jetpack-downloader test jetpack fix/pods-189-podcast-welcome-entitled
bin/jetpack-downloader test jetpack-mu-wpcom-plugin fix/pods-189-podcast-welcome-entitled

Interested in more tips and information?

  • In your local development environment, use the jetpack rsync command to sync your changes to a WoA dev blog.
  • Read more about our development workflow here: PCYsg-eg0-p2
  • Figure out when your changes will be shipped to customers here: PCYsg-eg5-p2

@github-actions

github-actions Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Thank you for your PR!

When contributing to Jetpack, we have a few suggestions that can help us test and review your patch:

  • ✅ Include a description of your PR changes.
  • ✅ Add a "[Status]" label (In Progress, Needs Review, ...).
  • ✅ Add testing instructions.
  • ✅ Specify whether this PR includes any changes to data or privacy.
  • ✅ Add changelog entries to affected projects

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:

  1. Ensure all required checks appearing at the bottom of this PR are passing.
  2. Make sure to test your changes on all platforms that it applies to. You're responsible for the quality of the code you ship.
  3. You can use GitHub's Reviewers functionality to request a review.
  4. When it's reviewed and merged, you will be pinged in Slack to deploy the changes to WordPress.com simple once the build is done.

If you have questions about anything, reach out in #jetpack-developers for guidance!

@github-actions github-actions Bot added the [Status] Needs Author Reply We need more details from you. This label will be auto-added until the PR meets all requirements. label Jun 30, 2026
@jp-launch-control

jp-launch-control Bot commented Jun 30, 2026

Copy link
Copy Markdown

Code Coverage Summary

Cannot generate coverage summary while tests are failing. 🤐

Please fix the tests, or re-run the Code coverage job if it was something being flaky.

Full summary · PHP report · JS report

@robertbpugh robertbpugh marked this pull request as ready for review June 30, 2026 01:46
Copilot AI review requested due to automatic review settings June 30, 2026 01:46

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 (as hasAccess) 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.

Comment thread projects/packages/podcast/changelog/fix-pods-189-podcast-welcome-entitled Outdated
@robertbpugh robertbpugh requested a review from a team June 30, 2026 01:56

@jeherve jeherve left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It works, but it's a bit weird to have the same CTA twice:

Image

Maybe the 2nd card should be merged into the first one?

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
@robertbpugh

Copy link
Copy Markdown
Contributor Author

@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 AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 5 comments.

Comment thread projects/packages/podcast/src/dashboard/welcome/style.scss Outdated
Comment thread projects/packages/podcast/src/dashboard/welcome/style.scss Outdated
Comment thread projects/packages/podcast/src/dashboard/welcome/style.scss Outdated
Comment thread projects/packages/podcast/src/dashboard/welcome/style.scss Outdated
Comment thread projects/packages/podcast/src/dashboard/welcome/index.tsx Outdated
@robertbpugh

Copy link
Copy Markdown
Contributor Author

@copilot resolve the merge conflicts in this pull request

…-welcome-entitled

# Conflicts:
#	projects/packages/podcast/src/dashboard/welcome/index.tsx

Copilot AI commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Merged trunk into this branch and resolved the conflict in welcome/index.tsx. The conflict arose because trunk added HStack wrappers around the plan card buttons (to prevent them from stretching), while this branch wrapped the entire plans section in { ! hasAccess && ... }. Both sets of changes are now incorporated.

robertbpugh and others added 4 commits June 30, 2026 16:11
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

@jeherve jeherve left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! 🚢

@jeherve jeherve merged commit aef5aaa into trunk Jul 1, 2026
75 of 77 checks passed
@jeherve jeherve deleted the fix/pods-189-podcast-welcome-entitled branch July 1, 2026 12:54
@github-actions github-actions Bot added [Status] UI Changes Add this to PRs that change the UI so documentation can be updated. and removed [Status] Needs Author Reply We need more details from you. This label will be auto-added until the PR meets all requirements. [Status] In Progress labels Jul 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Package] Podcast [Status] UI Changes Add this to PRs that change the UI so documentation can be updated.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants