We talked about this in person, but I'll repeat it here for the record. You're creating this table_fields hash to map uppercased keys to their original form. While this would fix the previous problem where not-uppercase keys were missed, this causes a different problem where you might collide two keys (e.g. Foo and foO would collide as FOO). All responsys keys are all-caps (I guess responsys talks like Kanye West), but I think it'd be a better idea to leave the keys as they are and have the request fail if the keys do not match exactly.