Dec 11, 202511:55 AM - last edited on Dec 11, 20253:14 PM by JOB3
Participant
I have created a multi-nested form with several hidden fields based on user selection that's used internally for our marketing team. You can view the page with the form here. Upon submission, this is sent to our project manager via the Send to other users in the form Submission settings. It was requested that the submitter also receives a copy which I’ve setup via Creative Brief Workflow . The form in the workflow, Creative Brief Recipient Copy, is using several custom Rich Text programmable modules that will display form data if use has selected a specific option. One of the HUBL if statements are {% if contact.add_asset_2 == "Yes" %} … During testing, I submitted the form adding all 10 assets and the results were as expected. However, on the second submission I only added 3 assets, but the copy I received not only showed the new form data, but it also displayed the data from the previous submission. From what I’ve read, contact properties are only updated with new data and previous fields left blank on a new submission are ignored. However, the email that’s sent to the email address in the Send to other users’ settings displays as it should on every submission (see attached). Is there a better way to address this in my specific use case? I’ve researched this issue and found this HubSpot help article here in which I can add an if/else branch in my workflow and check if the field has been updated recently by a certain date and if not clear the value. A similar solution was to make duplicates of all the form field properties and cross check them. The only problem with either of these solutions is the time it would take to clone and or create if/then branches on my workflow for 121+ contact properties that are associated with this form.
A simple solution would be to add an option in the form submission settings that would allow to send the submitter a copy and negate having to use a workflow. See mockup below.
Hi @swalker1 , I’ve seen this a few times and what you observed is consistent with how HubSpot stores form data. A workflow email that uses HubL like {% if contact.add_asset_2 == "Yes" %} is reading the contact property, not “this submission’s payload”.
If the second submission leaves fields blank, HubSpot typically does not overwrite those properties with blank, so the old “Yes + details” stays on the contact, and your email renders both the new + previous values. Meanwhile the “Send to other users” notification is based on the submission record, which is why it looks correct every time.
If you want the submitter copy to reflect only the latest submission without building 121 branches, the cleanest supported pattern is: create a “snapshot” set of properties (or a custom object record) dedicated to the submission, clear that snapshot set at the start of the workflow, then copy in only what was submitted, and build the email off that snapshot. The important part is that HubSpot workflows can clear property values via the Edit records action, and you can clear multiple properties in one action (you don’t need 121 separate if/then branches). See “Edit records using workflows” for the clear behavior: https://knowledge.hubspot.com/workflows/edit-records-using-workflows.
Your diagnosis is 100% correct -- and you've already figured out why the problem exists. Let me confirm what's happening so you can move forward without wasting time on the 121-property workaround.
The Real Issue (Architecture Problem):
HubSpot's form submission creates two separate data flows:
1. "Send to other users" notification - Captures the form payload at that exact moment of submission 2. Your workflow email - References {{contact.property}} tokens that pull from the current contact record
Here's the trap: HubSpot doesn't clear blank fields. So when you submit form 2 with only 3 assets, your contact record gets those 3 assets updated, but the previous 10 assets from form 1 stay in the record. Your HUBL conditionals in the email then read off the contact record and show both the new AND old data.
The "Send to other users" email works because it's literally just dumping the form submission payload -- not reading from contact properties. That's why it's always correct.
Why Your Solutions Don't Scale:
- The if/else branch approach (121 branches) = technical debt + maintenance nightmare - The duplicate properties approach = Same problem, multiplied - Date comparison hacks = Fragile, breaks when properties update from other sources
The Right Architecture (HubSpot-Native):
Stop putting logic in your email template. Put it in your workflow's conditional branches instead:
- The If/Then branch evaluates the condition once, immediately after the form submission - It uses the form submission data directly, not stale contact properties - Each branch controls which email template (or which sections) get sent
This is how HubSpot's architecture is actually designed to work. You're fighting against the system if you try to do complex conditionals in the email template itself.
The Trade-Off You're Actually Making:
Yes, you'll have If/Then branches for each asset. But here's the reality:
- Current approach: Maintain complex HUBL conditionals + deal with stale data constantly - Branch approach: Set up once, forget it. The conditionals live at the workflow logic layer where they belong
One is operational debt (your current path). The other is just upfront setup.
Quick Validation:
Check your current email template -- are you using {{contact.add_asset_2}} or something from the actual form submission? If it's {{contact.add_asset_2}}, you're reading from the contact record. That's your bug.
Your Feature Request is Spot-On:
HubSpot should ship "Send submitter a copy" with form submission payload access built-in. This is a documented pain point in their community. Worth submitting to their Ideas board -- it's a legitimate gap.
Bottom Line:
Don't go down the property cloning path. Restructure around If/Then branches in the workflow layer. It's the pattern HubSpot's own architecture expects, and it'll eliminate the stale data problem permanently.
What's your current workflow structure look like? I can help you design the branch logic.
Hi @swalker1 , I’ve seen this a few times and what you observed is consistent with how HubSpot stores form data. A workflow email that uses HubL like {% if contact.add_asset_2 == "Yes" %} is reading the contact property, not “this submission’s payload”.
If the second submission leaves fields blank, HubSpot typically does not overwrite those properties with blank, so the old “Yes + details” stays on the contact, and your email renders both the new + previous values. Meanwhile the “Send to other users” notification is based on the submission record, which is why it looks correct every time.
If you want the submitter copy to reflect only the latest submission without building 121 branches, the cleanest supported pattern is: create a “snapshot” set of properties (or a custom object record) dedicated to the submission, clear that snapshot set at the start of the workflow, then copy in only what was submitted, and build the email off that snapshot. The important part is that HubSpot workflows can clear property values via the Edit records action, and you can clear multiple properties in one action (you don’t need 121 separate if/then branches). See “Edit records using workflows” for the clear behavior: https://knowledge.hubspot.com/workflows/edit-records-using-workflows.
Hello @swalker1 thanks for bringing this question to the community. For your security, I’ve edited your post to remove the links to your internal workflows.
Great breakdown of your setup - what you’re seeing is expected behavior: contact properties retain their previous values unless they’re actively overwritten, which is why your workflow email is pulling in data from past submissions. Even though right now there is not an option to send a copy of form submissions to contacts, on the thread you found @karstenkoehler does mention that you could possibly use custom code actions or API functions to implement a custom solution.
I'm also reaching out to some of our Top Developer Experts to see what they think, @BrandonWoodruff@jpsanchez@RubenBurdin do you have any additional recommendations to help @swalker1 send form submission-based emails to the submitter — but only including the latest information the contact submitted on a form ? Thank you in advance !
Your diagnosis is 100% correct -- and you've already figured out why the problem exists. Let me confirm what's happening so you can move forward without wasting time on the 121-property workaround.
The Real Issue (Architecture Problem):
HubSpot's form submission creates two separate data flows:
1. "Send to other users" notification - Captures the form payload at that exact moment of submission 2. Your workflow email - References {{contact.property}} tokens that pull from the current contact record
Here's the trap: HubSpot doesn't clear blank fields. So when you submit form 2 with only 3 assets, your contact record gets those 3 assets updated, but the previous 10 assets from form 1 stay in the record. Your HUBL conditionals in the email then read off the contact record and show both the new AND old data.
The "Send to other users" email works because it's literally just dumping the form submission payload -- not reading from contact properties. That's why it's always correct.
Why Your Solutions Don't Scale:
- The if/else branch approach (121 branches) = technical debt + maintenance nightmare - The duplicate properties approach = Same problem, multiplied - Date comparison hacks = Fragile, breaks when properties update from other sources
The Right Architecture (HubSpot-Native):
Stop putting logic in your email template. Put it in your workflow's conditional branches instead:
- The If/Then branch evaluates the condition once, immediately after the form submission - It uses the form submission data directly, not stale contact properties - Each branch controls which email template (or which sections) get sent
This is how HubSpot's architecture is actually designed to work. You're fighting against the system if you try to do complex conditionals in the email template itself.
The Trade-Off You're Actually Making:
Yes, you'll have If/Then branches for each asset. But here's the reality:
- Current approach: Maintain complex HUBL conditionals + deal with stale data constantly - Branch approach: Set up once, forget it. The conditionals live at the workflow logic layer where they belong
One is operational debt (your current path). The other is just upfront setup.
Quick Validation:
Check your current email template -- are you using {{contact.add_asset_2}} or something from the actual form submission? If it's {{contact.add_asset_2}}, you're reading from the contact record. That's your bug.
Your Feature Request is Spot-On:
HubSpot should ship "Send submitter a copy" with form submission payload access built-in. This is a documented pain point in their community. Worth submitting to their Ideas board -- it's a legitimate gap.
Bottom Line:
Don't go down the property cloning path. Restructure around If/Then branches in the workflow layer. It's the pattern HubSpot's own architecture expects, and it'll eliminate the stale data problem permanently.
What's your current workflow structure look like? I can help you design the branch logic.