Documentation
Protocol reference

Event taxonomy

Reserved event names and the property names FounderHQ owns.

FounderHQ owns every name that starts with $. Your own event and property names never start with $, so the two sets can never collide.

Every table below is generated from @founderhq/events-core. They match the shipped SDKs exactly.

Reserved event names

These are the only $ event names FounderHQ accepts. Send any other $ name and the event comes back with a drop result.

Name
$identify
$groupidentify
$set
$pageview
$pageleave
$session_start
$screen
$autocapture
$rageclick
$dead_click
$outbound_click
$web_vitals
$application_installed
$application_updated
$application_opened
$application_backgrounded
$push_notification_opened

Your own events use plain names: trial.started, invite_sent, Report Exported. Pick one convention and keep it.

Event properties

The SDKs fill these in for you. Set them yourself only when you send events from your own client.

Name
$display_name
$current_url
$pathname
$host
$referrer
$referring_domain
$search_engine
$browser
$browser_version
$browser_webdriver
$os
$os_version
$device_type
$device_id
$device_manufacturer
$device_name
$device_model
$platform
$session_id
$window_id
$pageview_id
$screen_id
$viewport_width
$viewport_height
$screen_width
$screen_height
$screen_name
$lib
$lib_version
$timezone
$locale
$browser_language
$app_build
$app_name
$app_namespace
$app_version
$deep_link_url
$max_scroll_percentage
$last_scroll_percentage
$page_duration_ms
$active_duration_ms
$leave_reason
$outbound_url
$outbound_domain
$prev_pageview_id
$prev_pageview_max_scroll_percentage
$prev_pageview_duration_ms
$prev_pageview_pathname
$geoip_country_code
$geoip_country_name
$geoip_city_name
$geoip_continent_code
$geoip_continent_name
$geoip_time_zone
$geoip_subdivision_1_code
$geoip_subdivision_1_name
$ip_hash
$ip_truncated
$ip
$attribution_channel
$attribution_source
$purchase_attribution_token
$groups
$group_set
$account_context_token
$account_span_id
$bot
$bot_category

Campaign properties

Campaign keys stay unprefixed, because they arrive unprefixed in the URL. FounderHQ reads all 24 from the landing URL and uses them to answer "which channel introduced this contact".

Name
utm_source
utm_medium
utm_campaign
utm_term
utm_content
gclid
gad_source
gclsrc
dclid
gbraid
wbraid
fbclid
msclkid
twclid
li_fat_id
mc_cid
igshid
ttclid
rdt_cid
epik
qclid
sccid
irclid
_kx

Session properties

FounderHQ derives these and attaches them to the session, not to individual events. You do not send them.

Name
$entry_current_url
$entry_pathname
$entry_utm_source
$entry_utm_medium
$entry_utm_campaign
$entry_utm_term
$entry_utm_content
$entry_referring_domain
$channel_type
$session_duration
$is_bounce
$pageview_count
$end_pathname

Cookieless measurement allowlist

When a visitor has not granted tracking, the SDK sends the small cookieless event described in Wire protocol. Only the names below are allowed. FounderHQ removes anything else on the client and rejects anything extra at ingest.

Cookieless event names

Name
$pageview
$pageleave

Cookieless base properties

Name
$pathname
$referring_domain
utm_source
utm_medium
utm_campaign
utm_term
utm_content
$platform

Cookieless page-leave properties

Name
$page_duration_ms
$max_scroll_percentage
$leave_reason

The page-leave properties are valid on $pageleave only. Put any of them on a $pageview and the event is refused.

AI agent or LLM? Read this page as markdown

On this page