Personalizing form success messages creates meaningful connections with your users by acknowledging their input directly in the confirmation.
While traditional Webflow forms display generic "Thank you" messages, brix-form-success attribute automatically captures and displays user data in your success states, turning cold confirmations into warm, personalized responses.
Best of all, this Webflow attribute implementation takes under 5 minutes and requires no external services (and is 100% free too!).
The brix-form-success attribute transforms generic form confirmations into dynamic, personalized messages that reflect the data users just submitted. You'll implement this using a single custom attribute and simple JavaScript that captures form values and displays them instantly in your success message.
Webflow forms include three distinct states: Normal (the default form view), Success (shown after submission), and Error (displayed when submission fails). The success state typically shows static content - but with JavaScript, we can dynamically update this content based on the submitted form data.
This works because Webflow triggers the success state on your page, giving us the opportunity to capture and display form values right after submission.
Before implementing the dynamic success message, we need to properly structure our form with the right settings and elements.
Follow these steps to set up your form foundation. If you already have a form created, all of these steps are likely already completed:
1 - Add a form block:
2 - Configure your form:
3 - Add your form fields:
Important note about optional fields: If any field is optional and left empty by the user, the success message will simply omit that data rather than showing placeholder text.
This applies to all field types - text inputs, dropdowns, radio buttons, etc. Consider making key fields required if you always want them in your success message.
Now let's set up the success state to receive our personalized content:
1 - Switch to the success state:
2 - Create your personalized message:
3 - The result:
Now we'll add the attribute that automatically captures form data and displays it in your success message.
Here's the simple process to connect everything:
1 - Mark your input fields:
2 - Mark your success message spans:
Important note: Only add the brix-form-success attribute to actual form inputs (INPUT, SELECT, TEXTAREA) and to text spans inside your success message.
Avoid adding it to other elements like divs or paragraphs in the Normal state, as they will be treated as display targets, like the spans inside the success text.
The brix-form-success system works with all Webflow form elements:
Here's the JavaScript that makes the magic happen. The script includes everything you need - both the functionality and the CSS to prevent placeholder flashes:
1 - Copy this single code block:
essage(form, formName) {
let attempts = 0;
const maxAttempts = 30; // 3 seconds max wait
const checkInterval = setInterval(function() {
// Look for success message within the specific form
const successMessage = form.querySelector('.w-form-done');
if (successMessage && window.getComputedStyle(successMessage).display !== 'none') {
// Success message is visible - populate it
clearInterval(checkInterval);
populateSuccessMessage(form, formName);
} else if (attempts++ >= maxAttempts) {
// Give up after 3 seconds
clearInterval(checkInterval);
console.warn('brix-form-success: Success message did not appear within 3 seconds');
// Clean up stored data
sessionStorage.removeItem('brixForm_' + formName);
sessionStorage.removeItem('brixFormElement_' + formName);
}
}, 100);
}
function populateSuccessMessage(form, formName) {
// Get saved form data
const savedData = sessionStorage.getItem('brixForm_' + formName);
if (!savedData) return;
const formData = JSON.parse(savedData);
// Find all display elements within this form's success message
const successMessage = form.querySelector('.w-form-done');
const displayElements = successMessage.querySelectorAll('[brix-form-success]');
displayElements.forEach(function(el) {
// Skip input elements (shouldn't be in success message, but just in case)
if (el.tagName === 'INPUT' || el.tagName === 'SELECT' || el.tagName === 'TEXTAREA') {
return;
}
const identifier = el.getAttribute('brix-form-success');
if (formData[identifier]) {
// Format the value
let displayValue = formData[identifier];
// Capitalize names
if (identifier.toLowerCase().includes('name')) {
displayValue = displayValue.charAt(0).toUpperCase() + displayValue.slice(1);
}
// Update the text
el.textContent = displayValue;
// Mark as populated for CSS
el.classList.add('populated');
// Add subtle fade-in effect
setTimeout(function() {
el.style.transition = 'opacity 0.3s ease';
el.style.opacity = '1';
}, 50);
}
});
// Clean up stored data
sessionStorage.removeItem('brixForm_' + formName);
sessionStorage.removeItem('brixFormElement_' + formName);
// Success confirmation in console
console.log('✉️ BRIX Form Success - Personalized message displayed for form: ' + formName);
}
})();
</script>
2 - Add to your Webflow project:
3 - That's it! The script automatically handles all form submissions on your site
Transform your confirmations with these message patterns:
Simple personalization examples
Combine multiple fields for richer confirmations, for example: "Hi [name], thanks for reaching out! We'll call you at [phone] to discuss your inquiry. Confirmation sent to [email]."
Styling your personalized content (optional)
If you want to make dynamic content stand out, select your spans and add Text Color, Bold font weight, or subtle Background Color to draw attention to the personalized elements.
Ensure everything works with these quick tests:
1 - Basic test:
2 - Test different scenarios:
Here are the most common problems and solutions:
No personalized data appears:
I see [name] instead of the actual name:
Some dynamic texts are missing:
To display a user's name in your Webflow form success message, add the brix-form-success attribute to both your name input field and a text span in your success message, using the same value like "name" for both.
When the form submits, our JavaScript automatically captures the name and displays it in the success message, creating a personalized "Thank you, [name]!" experience.
Add the brix-form-success attribute with value "email" to your email input field and to a span element in your success message where you want the email to appear.
The script will automatically show the submitted email address in your success message, allowing users to verify they entered the correct email and creating messages like "We'll send confirmation to [email]."
You can personalize your entire success message by adding the brix-form-success attribute to multiple form fields (name, email, phone, service type) with unique values for each. Create corresponding spans in your success message with matching attribute values.
This lets you build rich confirmations like "Thanks [name]! We'll call [phone] about your [service] project."
Implementing personalized success messages with the brix-form-success attribute transforms your Webflow forms from generic endpoints into engaging, user-centric experiences. The single-attribute approach makes implementation remarkably simple while maintaining full flexibility.
For implementations requiring complex conditional logic, multi-language support, or integration with marketing automation systems like HubSpot forms, our Webflow development team can create sophisticated personalization systems that perfectly align with your business objectives.
Learn how to automatically detect and fill country fields in Webflow forms using the brix-autocountry attribute and IPinfo free API.
Learn the proven workaround to restore a single page from Webflow backup without losing current changes. Complete step-by-step guide.
Essential checklist to evaluate your Webflow migration quality. Verify design, performance, SEO, and more, without technical expertise.