I capture the source by adding a Hidden field, then using a URL Parameter. (a custom field we added)
The edit the field, manually add the parameter name and leave Default Value blank. (see second screen shot)
This is dynamically populating the source field. So far so good.
This is also dependent on if you want to use UTM Campaign as your source, if you don't then this wouldn't work for you.