Hi Patrick >
The best way to do this is probably with URL Parameters & Hidden Form Fields. We create a unique URL for each traffic source, then when each person comes in we add them to a static list. Then you can always look at the list to see who has come from which place.

The core elements of the campaign are 1 & 2. Then the Engagement email is 3. And the individual URLs are 4.
The single Landing Page has a url like my.company.com/lp.html
Then we add URL Parameters to each string. by adding
?utm_source=facebook&utm_medium=social&utm_campaign=Video-Gartner
my.company.com/lp.html?utm_source=facebook&utm_medium=social&utm_campaign=Video-Gartner
I set the Source & Detail at this stage. That's a personal choice to set it before conversion, that's all about your philosophy on leads.

For more information
you can look at URL Builder thread. It's long but complete.