Skip to content

Fix the outdated product page URL in the MyYoast software statement - #23558

Merged
thijsoo merged 2 commits into
trunkfrom
myyoast-product-url-fix
Aug 20, 2026
Merged

Fix the outdated product page URL in the MyYoast software statement#23558
thijsoo merged 2 commits into
trunkfrom
myyoast-product-url-fix

Conversation

@diedexx

@diedexx diedexx commented Aug 18, 2026

Copy link
Copy Markdown
Member

Context

The Provided by yoast.com link on the MyYoast connection screens pointed at https://yoast.com/wordpress/plugins/seo/. That URL now 301s to the premium product page, so the free plugin was linking the wrong product.

The link text comes from the client_uri claim in the OAuth software statement. That claim is sealed inside MyYoast-signed JWTs, so changing the constant in the Grunt task is not enough on its own — both baked credential pairs had to be re-signed against MyYoast before the new URL can reach users.

Fixes #23556

Summary

This PR can be summarized in the following changelog entry:

  • Updates the plugin's app URL and logo that are used when initiating the MyYoast connection.

Relevant technical choices:

  • Two commits: the claim changes (client_uri + logo_uri), and the re-signed public v0 fallback pair.
  • Both claims are sealed inside MyYoast-signed JWTs, so editing the constants is not enough on its own — the values reach users only once the credentials are re-signed.
  • Issuer_Config.php is deliberately not touched. Trunk re-baked it for 28.4-RC1 while this PR was open; the next release build re-signs from the claim values in this PR, so baking a pair here would only conflict with that.
  • The v0 fallback is re-signed here, because software_version is "0" for it — it is version-independent and unaffected by release bumps. It ships on PR/dev/fork builds and would otherwise keep the old branding.
  • Used /product/yoast-seo-wordpress/ (free) rather than the premium page, since this statement identifies the free plugin.
  • free_icon.svg is the free counterpart of the premium.svg it replaces: byte-identical to free_icon-1.svg (sha256 b52541fa…), same viewBox and Yoast mark as the premium badge, without the crown.

Test instructions

Test instructions for the acceptance test before the PR gets merged

This PR can be acceptance tested by following these steps:
You might need to enable the feature flag if you don't see the integration card: define("YOAST_SEO_MYYOAST_CONNECTION",true); in wp-config.php

  • Note: this branch changes only the unsigned claim constants, so a build from this branch still presents trunk’s 28.4-RC1 credentials with the old URL and logo. To see the new values, either use a build whose credentials were signed from these claims, or override the software statement at runtime via the wpseo_myyoast_software_statement filter.
  • Start from a WordPress site that is not yet connected to MyYoast. An already-connected site keeps the client metadata it registered with, so the old link will persist — disconnect and reconnect, or use a fresh site.
  • Go to Yoast SEO > Integrations and connect the site to MyYoast.
  • Complete the connection flow and go to MyYoast > Profile.
  • Find the Provided by yoast.com text next to the Yoast SEO connection.
  • Hover the yoast.com link and check the URL shown in the browser status bar.
  • Expected: it points to https://yoast.com/product/yoast-seo-wordpress/. Before this fix it pointed to yoast.com/wordpress/plugins/seo/.
  • Click the link and confirm it lands on the Yoast SEO product page without redirecting to the premium page.

Relevant test scenarios

  • Changes should be tested with the browser console open
  • Changes should be tested on different posts/pages/taxonomies/custom post types/custom taxonomies
  • Changes should be tested on different editors (Default Block/Gutenberg/Classic/Elementor/other)
  • Changes should be tested on different browsers
  • Changes should be tested on multisite

Test instructions for QA when the code is in the RC

  • QA should use the same steps as above.

QA can test this PR by following these steps:

  • Same steps as above. The connection must be a fresh registration — the link is set when the site registers, so a site connected before this change keeps the old URL until it reconnects.

Impact check

This PR affects the following parts of the plugin, which may require extra testing:

  • The MyYoast connection / Dynamic Client Registration flow. The re-signed credentials are what the plugin presents when registering, so connecting a site is worth a regression check even though the only claim that changed is the link.

Other environments

  • This PR also affects Shopify. I have added a changelog entry starting with [shopify-seo], added test instructions for Shopify and attached the Shopify label to this PR.
  • This PR also affects Yoast SEO for Google Docs. I have added a changelog entry starting with [yoast-doc-extension], added test instructions for Yoast SEO for Google Docs and attached the Google Docs Add-on label to this PR.

Documentation

  • I have written documentation for this change. For example, comments in the Relevant technical choices, comments in the code, documentation on Confluence / shared Google Drive / Yoast developer portal, or other.

Quality assurance

  • I have tested this code to the best of my abilities.
  • During testing, I had activated all plugins that Yoast SEO provides integrations for.
  • I have added unit tests to verify the code works as intended.
  • If any part of the code is behind a feature flag, my test instructions also cover cases where the feature flag is switched off.
  • I have written this PR in accordance with my team's definition of done.
  • I have checked that the base branch is correctly set.
  • I have run grunt build:images and committed the results, if my PR introduces or edits images or SVGs.

Innovation

  • No innovation project is applicable for this PR.
  • This PR falls under an innovation project. I have attached the innovation label.
  • I have added my hours to the WBSO document.

Fixes #23556

@diedexx diedexx added the changelog: other Needs to be included in the 'Other' category in the changelog label Aug 18, 2026
@github-actions

Copy link
Copy Markdown

A merge conflict has been detected for the proposed code changes in this PR. Please resolve the conflict by either rebasing the PR or merging in changes from the base branch.

@coveralls-official

coveralls-official Bot commented Aug 18, 2026

Copy link
Copy Markdown

Coverage Report for CI Build 0

Warning

No base build found for commit 2c9327a on trunk.
Coverage changes can't be calculated without a base build.
If a base build is processing, this comment will update automatically when it completes.

Coverage: 40.743%

Details

  • Patch coverage: No coverable lines changed in this PR.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

Requires a base build to compare against. How to fix this →


Coverage Stats

Coverage Status
Relevant Lines: 19637
Covered Lines: 8445
Line Coverage: 43.01%
Relevant Branches: 12602
Covered Branches: 4690
Branch Coverage: 37.22%
Branches in Coverage %: Yes
Coverage Strength: 19.92 hits per line

💛 - Coveralls

diedexx and others added 2 commits August 18, 2026 15:00
…are statement

The `Provided by yoast.com` link on the MyYoast connection screens came from the
`client_uri` claim, which pointed at `https://yoast.com/wordpress/plugins/seo/`.
That URL now 301s to the premium product page, so the free plugin linked the
wrong product. The `logo_uri` claim had the matching problem: it pointed at
`premium.svg`, the Premium badge with a crown.

Point both at the free plugin's own assets.

Both claims are sealed inside MyYoast-signed JWTs, so this edit reaches users
only once the credentials are re-signed. The next release build re-signs from
these values; `Issuer_Config.php` is deliberately left as trunk baked it for
28.4-RC1.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Rotates the public v0 fallback pair so its sealed `client_uri` and `logo_uri`
carry the new values. Signed against production MyYoast via
`sign-v0-myyoast-credentials`; `software_version` stays "0", so this pair is
unaffected by release version bumps.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@diedexx
diedexx force-pushed the myyoast-product-url-fix branch from eb20ef7 to e7652a6 Compare August 18, 2026 13:00
@thijsoo thijsoo added this to the 28.5 milestone Aug 20, 2026

@thijsoo thijsoo 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.

CR + ACC 👍

@thijsoo
thijsoo merged commit 9a6717d into trunk Aug 20, 2026
27 of 28 checks passed
@thijsoo
thijsoo deleted the myyoast-product-url-fix branch August 20, 2026 07:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog: other Needs to be included in the 'Other' category in the changelog

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: MyYoast connection registers outdated "yoast.com" product page url

2 participants