I'd like to ask why there are page views where $search_engine is set, but referring domain, referrer, utm_source, utm_medium are all empty. Should I count these as "Organic Search"?
This is a nuanced situation. Here's what's happening and how to interpret it:
Why $search_engine is set but other properties are empty
Mixpanel's JavaScript SDK sets $search_engine by detecting the referring domain and matching it against a list of known search engine domains (e.g., google.com, bing.com). It also captures mp_keyword if search keywords are present in the referrer URL. [Default Event Properties] However, $referrer and $referring_domain are session-level properties that can be absent in certain situations:
"Might not be present if document.referrer does not return a value. As opposed to $initial_referrer and $initial_referring_domain, this property will be omitted if the user lands directly or the referring website adds the rel="noreferrer" parameter." [Default Event Properties]
So what likely happened:
The first page view in the session captured the referrer from a search engine, allowing $search_engine to be set (and possibly stored as a super property or in the cookie).
Subsequent page views in the same session may no longer have document.referrer set (since the user is now navigating within your site), so $referrer and $referring_domain are absent.
UTM parameters (utm_source, utm_medium) are simply not present because the user arrived organically — no UTM tags were in the URL.
Should you count these as "Organic Search"?
Yes, you should. The presence of $search_engine is a strong signal that the user arrived via an organic search engine visit. The absence of UTM parameters is consistent with organic traffic (UTMs are only present in paid/tagged campaigns). [Web Attribution] A practical approach:
Use $search_engine is set as your primary filter/condition to identify organic search traffic.
You can use Mixpanel's Custom Properties to create a "Marketing Channel" property that classifies traffic as "Organic Search" when $search_engine is set and UTM parameters are absent. [Custom Properties Use Cases]
This is consistent with the general guidance that a (not set) UTM value indicates organic or direct traffic, and $search_engine being populated confirms it's specifically organic search rather than direct. [Web Attribution]
ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.
