I have a general question about form submission that I was not able to find any info about it.
I have a form in my website for clients to send their details, and Webflow email me their form submissions, until then, great. But I have a few info in that form that is irrelevant for me to receive in the email, and I wasn’t able to find a solution to hide those inputs in the response.
For example, from the image above of the email with the form submission, I would like to hide the field “cf-turnstile-response” and “Checkbox” from the email, can I do that?
Not using Webflow’s form notification emails.
You could build your own however using automation like make.com and a transactional email provider like MailJet.
None that I’ve ever seen. You might contact support and see if they have some kind of custom attribute to suppress form fields that you do not want to appear in the email, but I’m fairly certain that does not exist.
Webflow’s form submit capture has no configuration options. It stores the form submit data and, optionally it email all of it too.
I encountered the same problem where Webflow was sending unnecessary input fields (like qty) in the form submission.
The workaround I found is to capture the form data before submission, process it with JavaScript, and remove any fields you don’t want to send.
Here’s an example for the Pre-Order form:
document.addEventListener('DOMContentLoaded', () => {
const form = document.querySelector('#wf-form-pre-order');
if (!form) return;
form.addEventListener('submit', () => {
collectProductsForForm();
});
});
function collectProductsForForm() {
// Select all product wrappers
const wrappers = document.querySelectorAll('.th_product_wrapper');
const products = \[\];
// Helper function to write product info into hidden input fields
function writeProductsToFields(products) {
const fieldNames = \[
\];
fieldNames.forEach((name, i) => {
const field = document.querySelector(\`input\[name="${name}"\]\`);
if (field) {
field.value = products\[i\] || '';
}
});
}
// Loop through each product wrapper
wrappers.forEach(wrapper => {
const name = wrapper.querySelector('.product-name')?.dataset.name;
const rawPrice = wrapper.querySelector('.product-price-field')?.dataset.price;
const discountRawPrice = wrapper.querySelector('.product-discount-price-field')?.dataset.discountPrice;
let price = 0;
if (discountRawPrice) {
price = parseFloat(discountRawPrice.replace(/\[^0-9.\]/g, ''));
} else if (rawPrice) {
price = parseFloat(rawPrice.replace(/\[^0-9.\]/g, ''));
} else {
return; // skip this product if price is missing
}
const qtyInput = wrapper.querySelector('.qty');
const qty = Number(qtyInput?.value || 0);
// Remove the quantity input so it doesn't get sent in the email after recording or using data
if (qtyInput) qtyInput.remove();
if (!name || isNaN(price) || qty <= 0) return;
const lineTotal = price \* qty;
// Save product info for hidden fields
products.push(
\`${name} | Qty: ${qty} | Unit: $${price} | Total: $${lineTotal}\`
);
});
// Write all product info into hidden fields to be submitted
writeProductsToFields(products);
}