And it didn't make a difference. I made sure the form had all the fields as identified by their internal name.
However I did some deeper testing. It seems there was a failure to URL encode a string that contained "&". I'd assumed that my libs would do that for me, but that's what assuming get ya.
After making sure everything was URL encoded, it worked - even after I removed all the fields from the form that I'd added for testing.
1. MAKE SURE TO URLENCODE. Don't trust your libraries to do such for you even when the library should "know" that it's going to be needed.
2. No, the actual form on the site does not need any fields added unless you wish to use the form directly. If you are just POSTing your own custom form, don't sweat trying to duplicate the setup.