Contact Address Fields

Hi Xers, I cannot for the life of me figure this out.
As part of a data enrichment marketing campaign, we’re trying to capture full mailing address from people who have already signed up for our newsletter.
The solution uses a hidden page with a form that we are linking people to so that they can provide their mailing address, which should include Street, City, State, Zip.
Pretty standard stuff. However, I have two issues.

  • Based on the “standard” Contacts fields for Addresses (home, work, billing, shipping) there is no State field

  • The Form fields only include generic Address fields which only populates the Street field of the Contact. There is no way to connect a form field to the City, or Zip, or Country. Of course, since there’s no State field that’s not possible.

One other strange behavior that I’ve observed is that even though there no State field on the Contact address I am unable to add a custom field named “State”

If there’s an easy way to do this on the backend using the form database that would be fine, too. However, short of writing code (which is an option but not desirable), I haven’t found a way to accomplish this.

TL;DR
How do I populate all of the Contact address fields beyond just the Street using forms?