No, IDs are invisible to server-side code.
Only the names of fields are sent to the server.
Possibly the field should be named something *OTHER* than just "email"???
No, comparing the working page to your code, indeed it also uses just "email".
*HOWEVER*.... It does *NOT* use "first_name"!! It uses "fname".
Perhaps it is just the error message from the autoresponder that is bogus? It actually is missing "fname" but reports it incorrectly?
Hmmm...but your action= is nothing like the one that works, so who knows?
An optimist sees the glass as half full.
A pessimist sees the glass as half empty.
A realist drinks it no matter how much there is.