Classifies the source of an inbound request.
Classification priority (highest to lowest):
- Platform click IDs (gclid, fbclid, etc.) — highest confidence
- GoodAnalytics params (via=, ref=) — referral tracking
- UTM parameters — explicit marketer intent
- Referer header — domain-based classification
Compile-time defaults for click ID params and referer map can be
overridden at runtime via GoodAnalytics.Settings.
Summary
Functions
Captures all recognized ad platform click IDs from query params.
Classifies the source of an inbound request.
Normalizes UTM medium values to canonical forms.
Functions
capture_all_click_ids(params, click_id_map \\ %{"dclid" => {:google_display, :paid}, "epik" => {:pinterest_ads, :paid}, "fbclid" => {:meta, :social}, "gbraid" => {:google_ads, :paid}, "gclid" => {:google_ads, :paid}, "irclickid" => {:impact_radius, :affiliate}, "li_fat_id" => {:linkedin_ads, :paid}, "msclkid" => {:microsoft_ads, :paid}, "sccid" => {:snapchat_ads, :paid}, "ttclid" => {:tiktok, :paid}, "twclid" => {:twitter_ads, :paid}, "wbraid" => {:google_ads, :paid}})
Captures all recognized ad platform click IDs from query params.
Returns a map of %{"gclid" => "value", "fbclid" => "value"}.
Classifies the source of an inbound request.
Accepts a Plug.Conn or a map with :query_params and :referer keys.
Options
:overrides- map with optional:click_id_paramsand:referer_mapkeys to override compile-time defaults.
Returns a map with source classification fields.
Normalizes UTM medium values to canonical forms.
- cpc, ppc, paid -> :paid
- email -> :email
- social -> :social
- organic -> :organic
- referral -> :referral
- affiliate -> :affiliate
- anything else -> passed through as-is