The first question is if you have the right to have this data in the first place. E-mail and name will typically be covered by contract reasons; you may need consent for other pieces of information if they are not needed to fulfill the contract or legal obligations. Other data may require the user's consent.
Sending to a user his own data is not an issue, as e-mail is usually considered a safe communication channel.
A different issue is that, by using this mechanism, that data is going to appear in more places than needed. For example, in your server and firewall logs, that registers accesses to
https://firstname.lastname@example.org&name=DrDoom, for example. These registers then become affected by the GDPR, and if the person asks you to provide which information do you have about them, you have to include them1.
Additionally, someone could object to the system on the grounds of data rectification. If a customer tells you "My name is not Larry, but Lawrence (or, FWIW, Vanessa)", the link will still fill the fields with the old name. I would say that you would be ok (it is not your data that is wrong), but a less technically savvy person may object and get upset and force you to do some work explaining your system without need; and in the best of cases it is a nuisance to your customer who will be correcting the name each time.
From a technical POV I do not understand why you do not just send an ID in the parameters and then, when you get that ID, fill the forms with the data that you have in your database. And of course, keep that form protected2 with a password or whatever so nobody can just pass random IDs and retrieve your users data without proving that it is them.
It would also become an issue if the user asks you to delete your records about him; you might be able to claim "legitimate needs" to keep the logs but it is still an unnecessary trouble.
2Because you are already protecting that form from unauthorized access, AREN'T YOU?