GoodAnalytics.Core.Tracking.SourceClassifier (GoodAnalytics v0.1.1)

Copy Markdown View Source

Classifies the source of an inbound request.

Classification priority (highest to lowest):

  1. Platform click IDs (gclid, fbclid, etc.) — highest confidence
  2. GoodAnalytics params (via=, ref=) — referral tracking
  3. UTM parameters — explicit marketer intent
  4. 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

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"}.

classify(conn_or_map, opts \\ [])

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_params and :referer_map keys to override compile-time defaults.

Returns a map with source classification fields.

normalize_medium(m)

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