diff --git a/changelog/fix-trim-woopay-source-url b/changelog/fix-trim-woopay-source-url
new file mode 100644
index 00000000000..d0542cc8201
--- /dev/null
+++ b/changelog/fix-trim-woopay-source-url
@@ -0,0 +1,4 @@
+Significance: patch
+Type: fix
+
+Checkout error when page URL is too long
diff --git a/client/checkout/woopay/email-input-iframe.js b/client/checkout/woopay/email-input-iframe.js
index f57c3b4e90f..4a2efe861e5 100644
--- a/client/checkout/woopay/email-input-iframe.js
+++ b/client/checkout/woopay/email-input-iframe.js
@@ -263,7 +263,10 @@ export const handleWooPayEmailInput = async (
);
urlParams.append( 'wcpayVersion', getConfig( 'wcpayVersionNumber' ) );
urlParams.append( 'is_blocks', isBlocksCheckout ? 'true' : 'false' );
- urlParams.append( 'source_url', window.location.href );
+ urlParams.append(
+ 'source_url',
+ wcSettings?.storePages?.checkout?.permalink
+ );
urlParams.append(
'viewport',
`${ viewportWidth }x${ viewportHeight }`
diff --git a/client/components/woopay/save-user/checkout-page-save-user.js b/client/components/woopay/save-user/checkout-page-save-user.js
index 8edd7c583d4..c38bcae2929 100644
--- a/client/components/woopay/save-user/checkout-page-save-user.js
+++ b/client/components/woopay/save-user/checkout-page-save-user.js
@@ -73,7 +73,8 @@ const CheckoutPageSaveUser = ( { isBlocksCheckout } ) => {
? {}
: {
save_user_in_woopay: isSaveDetailsChecked,
- woopay_source_url: window.location.href,
+ woopay_source_url:
+ wcSettings?.storePages?.checkout?.permalink,
woopay_is_blocks: true,
woopay_viewport: `${ viewportWidth }x${ viewportHeight }`,
woopay_user_phone_field: {
@@ -291,7 +292,9 @@ const CheckoutPageSaveUser = ( { isBlocksCheckout } ) => {