Signals Docs
Concepts

Event definitions & triggers

Dashboard-defined events, matched in the browser with zero code changes.

An event definition turns interactions into named conversion events without touching your site's code. Definitions are created in the dashboard (or by AI suggestion), served to the tag via /v1/config, and matched client-side - so a definition you save now starts firing on visitors' next page load.

Anatomy

FieldMeaning
namesnake_case identifier, unique per site (hero_cta_clicked). Normalized automatically: lowercased, spaces → _, other characters stripped
triggerclick, submit, visible or pageview
selectorCSS selector - required for every trigger except pageview
url_patternPathname filter with * wildcards; empty matches every page
text_containsCase-insensitive substring filter on the element's text
value_selectorCSS selector of the element showing the amount (.order-total); parsed as money at fire time and sent as value unless the event already has one
field_selectors{ email, phone, first_name, last_name, city, state, zip, country } → CSS selectors of the inputs holding them; read live at fire time and hashed server-side as match keys. Pick them by clicking with the browser extension
propertiesExtra properties merged into every fired event
conversion_eventOptional conversion type (purchase, add_to_cart, lead, …). Empty = analytics-only; set = forwarded to Meta CAPI, TikTok and GA4 with browser/server deduplication
destinationsPer-event routing flags ({facebook, tiktok, ga4}). An absent key means send; an explicit false turns that platform off for this one event — browser pixel and server-side both, so a disabled side never gets half a deduplicated pair
enabledDisabled definitions stay saved but are not served to the tag

Conversion pickers in the dashboard and the browser extension list the events recommended for your site's business category first (set in site settings - E-commerce & Retail, Entertainment & Media, Education, Real Estate, Technology, Financial Services, Automotive, Travel, or Other). A real-estate site sees lead / schedule / submit_application up top; a store sees the purchase funnel. The category orders suggestions only - every site can map any conversion type.

Triggers

  • click - a delegated, capture-phase listener; matches via target.closest(selector), so clicks on child elements (an icon inside a button) still count.
  • submit - same mechanics on form submission.
  • visible - an IntersectionObserver at 50% visibility; fires once per element per page load (useful for "saw the reviews section" style events).
  • pageview - fires on each pathname change matching url_pattern (initial load, back/forward, and SPA navigations).

Per-platform mapping (Meta CAPI / GA4 / TikTok tabs)

Dashboard → Events has one mapping tab per ad platform. Each tab lists that platform's standard events in its own vocabulary (AddToCart, begin_checkout, PlaceAnOrder, …), which of your tracked events feeds each one, and a per-row toggle that switches that platform on or off for that one event. Configure mapping opens a modal that assigns discovered elements to each standard event in bulk.

The same platform choice exists in the browser extension's Mapping target selector: map an event "for Meta CAPI" and the definition is created routing to Meta only — the other platforms switch on when you map the event from their own tab or extension mode. The default target ("All platforms") keeps the classic behavior: one mapping, every connected destination.

The extension's target selector also lists your saved funnels: pick one and map each step to real elements/pages. A step mapping writes a definition named after the step's own event (with its conversion attached when it has one), so the funnel chain built in Dashboard → Funnels is fed verbatim.

URL patterns

  • Empty → matches everything.
  • No * → exact pathname match (/pricing also matches /pricing/).
  • With * → each * matches any characters: /products/*, */checkout.
  • Patterns match the pathname only - query strings are ignored.

Fired event shape

Matched events flow through the exact same pipeline as code-level signals.track() calls - enrichment, rollups and destination fan-out included. They carry marker properties: $remote_event: true, $definition_id, plus $el_text / $el_href and any data-signals-* properties found on the element.

On this page