feat: store userLanguage in checkout metadata for multi-language emails

Adds userLanguage and userLocale to checkout metadata during order completion.
This allows N8N workflows to detect the customer's selected language and
send order confirmation emails in the correct language (sr, en, de, fr).
This commit is contained in:
Unchained
2026-03-28 07:27:09 +02:00
parent 09294fd752
commit a419337d99

View File

@@ -244,7 +244,7 @@ export default function CheckoutPage() {
} }
console.log("Step 2: Shipping method set successfully"); console.log("Step 2: Shipping method set successfully");
console.log("Step 3: Saving phone number..."); console.log("Step 3: Saving metadata...");
const metadataResult = await saleorClient.mutate<MetadataUpdateResponse>({ const metadataResult = await saleorClient.mutate<MetadataUpdateResponse>({
mutation: CHECKOUT_METADATA_UPDATE, mutation: CHECKOUT_METADATA_UPDATE,
variables: { variables: {
@@ -252,6 +252,8 @@ export default function CheckoutPage() {
metadata: [ metadata: [
{ key: "phone", value: shippingAddress.phone }, { key: "phone", value: shippingAddress.phone },
{ key: "shippingPhone", value: shippingAddress.phone }, { key: "shippingPhone", value: shippingAddress.phone },
{ key: "userLanguage", value: locale },
{ key: "userLocale", value: locale },
], ],
}, },
}); });
@@ -316,7 +318,16 @@ export default function CheckoutPage() {
}); });
if (emailResult.data?.checkoutEmailUpdate?.errors && emailResult.data.checkoutEmailUpdate.errors.length > 0) { if (emailResult.data?.checkoutEmailUpdate?.errors && emailResult.data.checkoutEmailUpdate.errors.length > 0) {
throw new Error(`Email update failed: ${emailResult.data.checkoutEmailUpdate.errors[0].message}`); const errorMessage = emailResult.data.checkoutEmailUpdate.errors[0].message;
// Check if checkout no longer exists
if (errorMessage.includes("Couldn't resolve to a node")) {
console.error("Checkout not found, clearing cart...");
localStorage.removeItem('cart');
localStorage.removeItem('checkoutId');
window.location.href = `/${locale}/products`;
return;
}
throw new Error(`Email update failed: ${errorMessage}`);
} }
console.log("Step 1: Email updated successfully"); console.log("Step 1: Email updated successfully");