Hey Kristine,
I'm a big fan of using a combination of UTM and solid marketing automation governance.
The method that I've found which produces the most "accurate" source is leveraging a cookie (historically google's utmz, these days it requires a little more customization) to "store" the first digital touch and then pulling that information into Marketo at the time of conversion (it's really easy using forms 2.0 and a web developer).
Once you've got that information, I store the new data in a "first touch source" field which has updates blocked by all methods (you can do this through the field management section in Marketo), by making sure that your first touch fields can only be populated once the become a reliable source of information on the source, but still leave your standard utm fields (or source fields) open for change so that you can still trigger all of your monitoring programs based on them.
Hope this helps,
--Guy