GoodAnalytics.Connectors.Signals (GoodAnalytics v0.1.1)

Copy Markdown View Source

Shared signal normalization layer for connector identifiers.

Normalizes connector-relevant identifiers from multiple input sources (request cookies, query params, JS-supplied values) into a canonical signal map used by the tracking plug, beacon controller, event recorder, and connector planner.

Recognized Signals

SignalSourceConnector
_fbpCookie / JSMeta
_fbcCookie / JSMeta
fbclidQuery paramMeta
gclidQuery paramGoogle
gbraidQuery paramGoogle
wbraidQuery paramGoogle
li_fat_idQuery paramLinkedIn
ttclidQuery paramTikTok

Summary

Functions

Returns the list of all recognized connector signal keys.

Returns the list of browser signal keys (from cookies/JS).

Builds a connector source context snapshot from signals, visitor, and event data.

Returns the list of click ID signal keys (from query params).

Extracts connector signals from a Plug.Conn.

Extracts connector signals from a beacon/JS payload map.

Checks if a signal map contains the required signals for a connector.

Merges connector signals from multiple sources.

Functions

all_signal_keys()

Returns the list of all recognized connector signal keys.

browser_signal_keys()

Returns the list of browser signal keys (from cookies/JS).

build_source_context(signals, opts \\ [])

Builds a connector source context snapshot from signals, visitor, and event data.

This context is persisted on the event and used for deterministic payload rebuilds during replay.

click_id_signal_keys()

Returns the list of click ID signal keys (from query params).

extract_from_conn(conn)

Extracts connector signals from a Plug.Conn.

Reads click IDs from query params and browser identifiers from cookies. Returns a map with only the signals that are present.

extract_from_payload(payload)

Extracts connector signals from a beacon/JS payload map.

The JS client may forward _fbp, _fbc, and click IDs explicitly. Returns a map with only the signals that are present.

has_required_signals?(signals, required_groups)

Checks if a signal map contains the required signals for a connector.

required is a list of signal key lists — at least one signal from each inner list must be present (AND of ORs).

Examples

# Meta requires at least one of _fbp, _fbc, or fbclid
has_required_signals?(%{"_fbp" => "fb.1..."}, [["_fbp", "_fbc", "fbclid"]])
#=> true

# Google requires gclid OR (gbraid | wbraid)
has_required_signals?(%{"gclid" => "abc"}, [["gclid", "gbraid", "wbraid"]])
#=> true

merge(signals_list)

Merges connector signals from multiple sources.

Later sources take precedence (JS-supplied values override server-captured). Nil/empty values are filtered out.