One other way I've heard of (I'm currently testing it) is to have a campaign that grabs the Latest Referrer and store it each time there is a new visit.
This can be done by using the trigger.referrer token and assign it to the Last Referrer field upon any page visit, except if referrer is another page of your site (you only want to grab external referrers).
This could looke like this:
Smartlist
![0EM50000000SnsA.jpg 0EM50000000SnsA.jpg](/t5/image/serverpage/image-id/7108i27CC0855E2E94E26/image-size/large?v=v2&px=999)
Flow:
![0EM50000000SnsK.jpg 0EM50000000SnsK.jpg](/t5/image/serverpage/image-id/7463iA23773AD00EE9287/image-size/large?v=v2&px=999)
Note that Last Referrer gets overritten each time a new visitor comes in though...