Any suggestions how I could do this?
NovakSolutions has a way to create a tag with field data, so you could have their tool run right after lead submission and have the tool set a tag of “Profile - Lead Source - [zip]” and have the ZIP code fed into it. Without doing a set of massive decision diamonds, this is the only way I know of.
Hope that helps.
NovakSolutions also has a “Geographical Areas” tool that will tag your contacts based on zip-code. For example, you can setup anyone with a zip-code for a specific metro area to be tagged with that city name, letting you then set the lead-source for a more general area based on that.