If you’ve already set up UTM tracking on your X Ads but the traffic is still showing up as ‘Direct’ in Google Analytics instead of ‘Twitter / CPC’, it’s almost always due to a referral drop or parameter stripping issue—not just a UTM formatting problem.
Let’s break it down:
Most Likely Cause: Referral Drop (Parameters Being Stripped)
When UTM-tagged URLs get redirected—say, through:
—they often strip the UTM parameters before the visitor lands on your final URL. Without those parameters, Google Analytics has nothing to attribute, so it drops the session into the Direct bucket.
What to do:
Click your ad yourself and see if the full UTM string is preserved in the browser's address bar.
If not, check your redirect settings. All redirect rules should preserve query strings.
Secondary Cause: Improper UTM Formatting
If your UTM tags are present but formatted incorrectly, Google Analytics may not recognize them. But in that case, the session would usually fall under Referral or miscategorized Source/Medium—not “Direct.”
Correct example:
Common mistakes:
Bonus Check: Landing Page Load Speed & Timing
If the landing page takes too long to load or uses JavaScript-heavy tracking, the UTM may time out or get overridden before the session is recorded.
Tip: Use Google Tag Assistant, GA’s Real-Time report, or browser tools to test and verify attribution in action.
Final Checklist to Fix It:
Ensure your ad links contain full, correctly formatted UTM parameters
Test the full URL from live ads—do UTM parameters survive redirects?
Check if you’re using link shorteners or retargeting layers that strip parameters
Verify your Google Analytics property is set up to track UTM parameters correctly (no filters overriding them)
Bottom line: If traffic is landing in ‘Direct’ despite UTMs being present, you're most likely dealing with redirects or tracking tools stripping the parameters mid-path. Fix those, and attribution should clean up.