Yes I think its possible to track all UTM parameters of a contact in HubSpot. HubSpot allows you to track UTM parameters through the use of tracking URLs, which are unique URLs that contain UTM parameters and are associated with specific marketing campaigns.
To track all UTM parameters of a contact, you can create a custom property for each UTM parameter (e.g. utm_source, utm_medium, utm_campaign, etc.) in your HubSpot account. You can then add these custom properties to your contact properties and map them to your tracking URLs.
To track intermediate parameters, you can create hidden form fields for each UTM parameter and add them to your forms. When a contact fills out your form, the hidden fields will capture the UTM parameters and store them in the corresponding custom properties in HubSpot. You can then use this information to analyze the effectiveness of your marketing campaigns and optimize your strategies accordingly.
That is currently set up and I am able to track the first and last UTM of a user who converts on my form.
What I need is to track the intermediate UTM parameters of a lead.
For example, if a lead converts first through Facebook Ads, then through Twitter Ads, then through Linkedin and finally through Google Ads, I am only able to track Facebook and Google, but not the other sources.
Is it possible to see this history somehow in HubSpot?
I don't have an exact answer for you, but I'd like to address your question because the accepted answer to the original question fails to address this kind of important, big-picture thinking. Simply creating new fields for each of the UTM parameters on the Contact object is good for recording last touch UTM data. Notably, HubSpot provides related fields on the Contact object for recording both first and last touch sources (ref: understanding source properties).
If you want to record all (first, intermediate, and last) UTM touches for each Contact, then you'll need to create a custom object [maybe called UTM Touchpoint] which can store these. In addition to the UTM parameters you collect, you'd want this object to hold the Contact's name, the touchpoint date, and a unique ID for the touchpoint (this is because you could have multiple touchpoints for a Contact in a single day). When the Contact is updated with new UTM data, that should then be pushed to the UTM Touchpoint object using automation (arguably with a Workflow).