Populate hidden fields with Mailchimp
Build a Mailchimp campaign link that carries each subscriber's details into a form's hidden fields, so every submission arrives already labelled.
Mailchimp lets you drop merge tags into a campaign, and swaps each one for the matching audience field when the email is sent. The same trick works on a link. Put a merge tag into a form's URL, and every subscriber receives a link that already names them.
On our side the mechanism is a hidden field: a named slot that a form made with Tinyform fills from its own URL's query string. The visitor never sees it, and the value is stored with the submission. Mailchimp only has to build the link.
How it works
1. Create a form
In the editor at /forms/<id>/edit, type /hidden and insert a Hidden fields block. Each row is named after the query parameter it will read; the placeholder says so, URL query parameter. For this example, add two rows, email and source.
Press Publish, then open the Share tab and copy the share link. That is the published form at /r/<id>.
2. Create a Mailchimp campaign
Build the campaign and add a button to it. In the button's Link to: Web address field, paste the form link and append the parameters.
Here the hidden field email is paired with Mailchimp's *|EMAIL|* merge tag, so it takes each subscriber's address, and source gets the fixed word email, because everyone reaching the form through this campaign came from it.
The parameter name has to match the row's name exactly, including case. The value can be anything Mailchimp puts there; the form reads it as text.
3. Launch the campaign
When Mailchimp sends the campaign it replaces the merge tag in every copy, so each subscriber's link carries their own address. When they submit, the hidden field's value is stored beside their answers and appears as its own column in the Submissions tab and in the CSV export, headed by the row's name.
Renaming a row later does not break anything that points at it: a mention or a logic rule is tied to the row, not to its name. Only the parameter on the link has to change with it.