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
| Signal | Source | Connector |
|---|---|---|
_fbp | Cookie / JS | Meta |
_fbc | Cookie / JS | Meta |
fbclid | Query param | Meta |
gclid | Query param | |
gbraid | Query param | |
wbraid | Query param | |
li_fat_id | Query param | |
ttclid | Query param | TikTok |
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
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.
This context is persisted on the event and used for deterministic payload rebuilds during replay.
Returns the list of click ID signal keys (from query params).
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.
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.
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
Merges connector signals from multiple sources.
Later sources take precedence (JS-supplied values override server-captured). Nil/empty values are filtered out.