@e30powar
The way you're setting Direct channel "Non-overriding channel" is correct appraoch.
-The reason you see Campaigns against Direct channel is because of the persistence of s.campaign(eVar0) variable.
- You cna verify this by adding "Tracking codeInstances" metric in your table. It should show 0 against Direct channel for this campaign value.
For example:
Assume that campaign variable is set to expire for a week
1 Jan : Visitor came from paid where utm_campaign = fb001 // Visit 1, campaign = fb001 , M. Channel = Paid
4 Jan : Visitor came Directly on website // Visit 2, campaign = fb001 is persisting, M. Channel = Direct
If you see the 2nd visit here, this visitor came from Direct channel in next visit, however the campaign value was still persisitng, This is the reason you see in your reports.
Hope this helps.
Regards,
Kanika