Manually Pass Query String vs Hidden Fields
We use a universal form setup. For example we use a single content form for all content downloads for easier management. When a visitor completes a form fill we use the Referrer URL and Query string to understand what content piece was downloaded, and the UTMs in the query string for attribution.
Currently we're using session cookies to preserve UTM parameters, and when a user views a page with a marketo form we rewrite the URL history to include the UTMs in the query string. We do this so we're able to use the form-fill triggers to analyze the query string and funnel the contact for appropriate attribution routing.
We are passing custom hidden fields for UTMs and a custom referrer full URL, but we've had more success relying on Querystring in the trigger for initial routing.
However, having the history rewrite to include the full query string is problematic. For example, we're considering having a newsletter signup form in the footer of all pages and thus the saving querystring data would populate on all pages which is unsightly. It can cause analytics inconsistencies in some cases. etc.
Is there manual way to populate a form's querystring value with data we provide? Same question for referrerURL.
Example form-fill:

Example trigger:

Example Flow:
