From 5de2527e547e50c5ef2e9413af7544eccdcaee6e Mon Sep 17 00:00:00 2001 From: Lucas Smith Date: Wed, 18 Feb 2026 13:35:04 +1100 Subject: [PATCH] fix: v2 embed direct templates not reading email/lockEmail from hash params (#2509) --- .../embed/embed-document-signing-page-v2.tsx | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/apps/remix/app/components/embed/embed-document-signing-page-v2.tsx b/apps/remix/app/components/embed/embed-document-signing-page-v2.tsx index a6069e286..faada31de 100644 --- a/apps/remix/app/components/embed/embed-document-signing-page-v2.tsx +++ b/apps/remix/app/components/embed/embed-document-signing-page-v2.tsx @@ -1,6 +1,7 @@ import { useEffect, useLayoutEffect, useState } from 'react'; import { useLingui } from '@lingui/react'; +import { EnvelopeType } from '@prisma/client'; import { mapSecondaryIdToDocumentId } from '@documenso/lib/utils/envelope'; @@ -25,7 +26,7 @@ export const EmbedSignDocumentV2ClientPage = ({ }: EmbedSignDocumentV2ClientPageProps) => { const { _ } = useLingui(); - const { envelope, recipient, envelopeData, setFullName, fullName } = + const { envelope, recipient, envelopeData, setFullName, setEmail, fullName } = useRequiredEnvelopeSigningContext(); const { isCompleted, isRejected, recipientSignature } = envelopeData; @@ -35,6 +36,7 @@ export const EmbedSignDocumentV2ClientPage = ({ const [hasFinishedInit, setHasFinishedInit] = useState(false); const [allowDocumentRejection, setAllowDocumentRejection] = useState(false); const [isNameLocked, setIsNameLocked] = useState(false); + const [isEmailLocked, setIsEmailLocked] = useState(envelope.type === EnvelopeType.DOCUMENT); const onDocumentCompleted = (data: { token: string; @@ -132,6 +134,17 @@ export const EmbedSignDocumentV2ClientPage = ({ // Since a recipient can be provided a name we can lock it without requiring // a to be provided by the parent application, unlike direct templates. setIsNameLocked(!!data.lockName); + + if (envelope.type === EnvelopeType.TEMPLATE) { + if (!isCompleted && data.email) { + setEmail(data.email); + } + + if (data.email) { + setIsEmailLocked(!!data.lockEmail); + } + } + setAllowDocumentRejection(!!data.allowDocumentRejection); if (data.darkModeDisabled) { @@ -213,6 +226,7 @@ export const EmbedSignDocumentV2ClientPage = ({ return (