Hi Bec,
I haven't done this myself, but off the top of my head, I'm thinking that you could create three UTM fields: UTM Original, UTM Last Touch, and UTM Capture.
On your form, you would only include the UTM Capture field. This field would be told to record the utm_source (or whatever field you'd like) when someone completes a form.
Then in the flow, you could do something like:
CHANGE DATA VALUE
If UTM Original is empty, change field UTM Original to {{lead.UTM Capture}}
Otherwise, change UTM Last Touch to {{lead.UTM Capture}}
This way, UTM Capture will write the source value to the original field ONLY IF there isn't already a value there. If there IS a value there, it will write it to the Last Touch field (which would then change any time they submit the form).
Does that make sense? Whew - I hope this helps 🙂