You can pass parameters in the URL. I've done something similar with an online customer form something like this in an email template:
#if entity.billzip?has_content#assign url_parameters += '&zipcode=${entity.billzip}'//#if
a href="${form_url}${url_parameters}" target="_blank" rel="noopener"
I found the formatting a bit odd when the parameters being passed are the field IDs, so I wrote a client script attached to the form which parses parameters which have a prefix into the appropriate field (parameter example_zipcode fills in to field with ID zipcode, etc).
Not sure if you can pass the internal ID of a record and have it fill in data from the record, that strikes me as a security risk to have a publicly-accessible form able to do that, but you can absolutely pass individual fields