Events & Variables
Complete reference for all tracked events and variables
This is the complete reference for all events and variables captured by ListenLayer's website tracking.
Quick Links: Standard Events • Custom Events • Standard Variables • Custom Variables
Event & Variable Naming
ListenLayer uses two naming formats:
Short Code
Wire format (SDK → Edge)
pv, clk, fsu
Long Name
Data warehouse, event_type field
pageview, click, form_submit
Tables below show both formats. See Code Examples for full event structures as they appear in the data warehouse.
Standard Events
ListenLayer automatically tracks these events without any configuration (although you can use the SDK API to explicitly provide eCommerce events and identity events). Events are grouped by category and the tables indicate the event type collected from each event.
Core Events
Fundamental page and session tracking.
pv
pageview
Page load or SPA navigation
ss
session_state
Session end with engagement metrics
con
consent
User consent preferences changed
pd
platform_detection
Third-party platform detected on page
See Code Examples → Core Events for full event payload structures.
Click Events
ListenLayer automatically tracks clicks on links, buttons, download links, phone/email links, and elements with role="button". You can also track clicks on any element by adding data-ll-* attributes or configuring custom click rules in your account settings.
clk
click
User clicked an interactive element
Click Types
Each click includes a click_type field that classifies the interaction:
link
Standard link click
button
Button element click
download
File download link
tel
Phone number link
mailto
Email link
cta
Call-to-action element
rule
Click matched a tracking rule
other
Other clickable element
Custom Click Rules
Click rules let you track specific elements that aren't automatically tracked. Configure rules in your account settings with a CSS selector:
When a rule matches, the click_type becomes rule and the rule field contains your rule ID.
Custom Attributes
Add data-ll-* attributes to any element to track it automatically:
These attributes are captured in the event payload.
See Code Examples → Click Events for full event payload structures.
Scroll Events
Page engagement depth tracking at milestones: 25%, 50%, 75%, 90%, 100%.
scr
scroll
User scrolled to depth milestone
See Code Examples → Scroll Events for full event payload structures.
Form Events
Complete form lifecycle tracking.
fl
form_load
Form added to page
fv
form_visible
Form scrolled into viewport
fs
form_start
User begins interacting with form
ffs
field_start
User focuses on a field
ffc
field_complete
User completes a field
fsc
form_step
Multi-step form progresses
fvf
form_validation_fail
Form validation error
fsu
form_submit
User submits form
fab
form_abandon
User leaves without submitting
See Code Examples → Form Events for full event payload structures.
See Integrations → Forms for a list of form platforms we automatically track.
Identity Events
ListenLayer automatically detects identity from forms, chats, and other sources. See Identity for configuration and SDK usage.
id
identify
Explicit identity via _ll.identify()
pp
possible_person
Detected identity (form, chat, etc.)
See Code Examples → Identity Events for full event payload structures.
Chat Events
Chat widget interaction tracking.
chl
chat_load
Chat widget loaded on page
cho
chat_open
User opened chat widget
chs
chat_start
User began conversation
cms
chat_message_sent
User sent a message
cmr
chat_message_received
Bot or agent sent message
cec
chat_email_captured
Email collected in chat
cmb
chat_meeting_booked
Meeting scheduled via chat
cof
chat_offline_form
Offline form submitted
che
chat_end
Conversation ended
See Code Examples → Chat Events for full event payload structures.
See Integrations → Chat for a list of chat platforms we automatically track.
Video Events
Video engagement tracking.
vld
video_load
Video player loaded
vpl
video_play
User pressed play
vpa
video_pause
User paused video
vpr
video_progress
Video reached progress milestone
vsk
video_seek
User seeked in video
ven
video_end
Video completed
vfs
video_fullscreen
Fullscreen toggled
vmt
video_mute
User muted video
vum
video_unmute
User unmuted video
See Code Examples → Video Events for full event payload structures.
See Integrations → Video for a list of video platforms we automatically track.
Scheduling Events
Meeting booking tracking.
sld
scheduling_load
Scheduling widget loaded
sop
scheduling_open
Widget opened
sds
scheduling_date_selected
User selected a date
sts
scheduling_time_selected
User selected a time
sfs
scheduling_form_start
User began booking form
sch
scheduling_scheduled
Booking confirmed
sca
scheduling_cancelled
Booking cancelled
srs
scheduling_rescheduled
Booking rescheduled
sbc
scheduling_confirmed
Confirmation received
See Code Examples → Scheduling Events for full event payload structures.
See Integrations → Scheduling for a list of scheduling platforms we automatically track.
eCommerce Events
Complete purchase funnel tracking.
evi
view_item
User viewed a product
eil
view_item_list
User viewed product list/category
esi
select_item
User selected a product
atc
add_to_cart
Product added to cart
rfc
remove_from_cart
Product removed from cart
eca
view_cart
User viewed cart
eco
begin_checkout
Checkout started
esh
add_shipping_info
Shipping details entered
epi
add_payment_info
Payment details entered
epu
purchase
Purchase completed
erf
refund
Purchase refunded
epr
view_promotion
Promotion viewed
eps
select_promotion
Promotion selected
ewl
add_to_wishlist
Item added to wishlist
See Code Examples → eCommerce Events for full event payload structures.
See Integrations → eCommerce for a list of eCommerce platforms we automatically track.
Custom Events
Use the _ll object to track custom events, identify people, and capture eCommerce transactions. The _ll object is available globally after installing the ListenLayer script.
Ensure SDK is Ready
Custom events may fire before the SDK finishes loading. Wrap calls with waitFor() to prevent race conditions:
If you're calling SDK methods at page load, install the stub script to queue early calls.
Generic Events
Track any event specific to your business using _ll.track():
cus
custom
Any event tracked via _ll.track(); the event name is captured in the name property
See Code Examples for more patterns including revenue tracking and content interactions.
Reserved Event Names
These names are reserved for ListenLayer's automatic tracking and cannot be used with _ll.track():
Core Events pageview, pv, session_state, ss, consent, possiblePerson, pp
Click Events click, linkClick, buttonClick, ctaClick, downloadClick, telClick, mailtoClick
Form Events form, formLoad, formVisible, formStart, formFieldStart, formFieldComplete, formStepChange, formValidationFail, formSubmit, formAbandon, form_load, form_visible, form_start, form_field_start, form_field_complete, form_step_change, form_validation_fail, form_submit, form_abandon, fl, fv, fs, ffs, ffc, fsc, fvf, fsu, fab
Engagement Events scroll, scrollDepth, contentEngagement, pageExit
Identity Events identify, identifyPerson
Chat Events chat, chatLoaded, chatOpened, chatStarted, chatMessageSent, chatMessageReceived, chatEmailCaptured, chatMeetingBooked, chatOfflineForm, chatEnded, chat_loaded, chat_opened, chat_started, chat_message_sent, chat_message_received, chat_email_captured, chat_meeting_booked, chat_offline_form, chat_ended, chs, cho, che, cms, cmr, cec, cmb, cof
Video Events video, videoLoaded, videoPlay, videoPause, videoProgress, videoSeek, videoEnd, videoFullscreen, videoMute, videoUnmute, video_loaded, video_play, video_pause, video_progress, video_seek, video_end, video_fullscreen, video_mute, video_unmute, vpl, vpa, vpr, vpg, ven, vsk, vmt, vum, vfs, vxf
Scheduling Events scheduling, schedulingLoaded, schedulingOpened, schedulingDateSelected, schedulingTimeSelected, schedulingFormStarted, schedulingScheduled, schedulingCancelled, schedulingRescheduled, scheduling_loaded, scheduling_opened, scheduling_date_selected, scheduling_time_selected, scheduling_form_started, scheduling_scheduled, scheduling_cancelled, scheduling_rescheduled, sld, sop, sds, sts, sfs, sch, sca, srs, sbc
eCommerce Events ecommerce, view_item, view_item_list, select_item, add_to_cart, remove_from_cart, view_cart, begin_checkout, add_shipping_info, add_payment_info, purchase, refund
Reserved name checking is case-insensitive. For example, PageView, PAGEVIEW, and pageview are all reserved.
DataLayer Method
ListenLayer intercepts dataLayer.push() calls and can capture them as custom events based on rules in your account—no code changes required.
cus
custom
DataLayer event matched by a rule
When a dataLayer push matches a rule, it becomes a custom event. The rule ID you configure in your account becomes the event's name field, and the original event property is preserved as _dl_event in the params.
See Code Examples → DataLayer Events for dataLayer patterns and how they translate to your data warehouse.
Identify People
Associate visitors with known identity information:
Calling _ll.identify() emits an identify event. ListenLayer also auto-detects identity from forms, chats, and other sources as possible_person events. Use tthe identify call when you want to explicitly notify us of the visitor's identity.
See Identity Events above for the event details.
See Code Examples → Identity Events for full event payload structures.
eCommerce Events
Track eCommerce transactions via the SDK:
See eCommerce for the complete list of methods and field reference.
Standard Variables
Every event includes these standard variables automatically.
Base Fields
Present on all events.
a
account_id
Your ListenLayer account identifier
t
event_type
Event type code (pv, clk, fsu, etc.)
ts
timestamp
When the event occurred (Unix ms)
url
url
Full page URL
pvid
pageview_id
Unique ID linking events on same page
cs
consent_state
User's consent preferences based on client-side CMP
tm
tracking_mode
id, anon, or dnt
Identity Fields
User and session identification.
did
device_id
Unique device identifier
pid
person_id
Cross-device person identifier
sid
session_id
Current session identifier
nd
is_new_device
First event from this device
ns
is_new_session
First event of new session
Page Context
Page-level information.
tt
page_title
Document title
ref.url
referrer_url
Previous page URL
ref.host
referrer_host
Previous page domain
ref.type
referrer_type
search, social, referral, direct
ref.same
is_same_site
Referrer from same domain
Attribution
Traffic source attribution.
utm.s
utm_source
Traffic source
utm.m
utm_medium
Marketing medium
utm.c
utm_campaign
Campaign name
utm.n
utm_content
Ad content identifier
utm.t
utm_term
Search term
Supported Click IDs
gclid
Google Ads
gbraid
Google Ads (iOS)
wbraid
Google Ads (web-to-app)
fbclid
Facebook/Meta
msclkid
Microsoft Ads
ttclid
TikTok
li_fat_id
twclid
Twitter/X
epik
qclid
Quora
sccid
Snapchat
rdt_cid
_kx
Klaviyo
irclickid
Impact Radius
wickedid
WickedReports
dclid
Google Display
ScCid
Snapchat (alt)
ef_id
Adobe/Efficient Frontier
s_kwcid
Adobe Analytics
Device & Browser
Client environment.
vp.w
viewport_width
Browser width (px)
vp.h
viewport_height
Browser height (px)
vp.dpr
device_pixel_ratio
Screen density
conn.type
connection_type
4g, 3g, 2g, slow-2g
conn.dl
downlink
Connection speed (Mbps)
Geo & Network
Location and network data (added at edge).
cli.co
country
Country code
cli.rg
region
State/region
cli.ct
city
City name
cli.pc
postal_code
Postal/ZIP code
cli.tz
timezone
IANA timezone
cli.lat
latitude
Geographic latitude
cli.lon
longitude
Geographic longitude
cli.cont
continent
Continent code
cli.eu
is_eu_country
In European Union
cli.asn
asn
Network provider ID
cli.aso
asn_organization
Network provider name
Performance
Page load metrics.
cwv.lcp
largest_contentful_paint
Largest Contentful Paint (ms)
cwv.fid
first_input_delay
First Input Delay (ms)
cwv.cls
cumulative_layout_shift
Cumulative Layout Shift
cwv.inp
interaction_to_next_paint
Interaction to Next Paint (ms)
cwv.ttfb
time_to_first_byte
Time to First Byte (ms)
cwv.fcp
first_contentful_paint
First Contentful Paint (ms)
Custom Variables
Define your own variables to enrich events with business context.
Custom variables can pull data from:
Page elements (CSS selectors, data attributes)
JavaScript (window variables, functions)
URL (path, query params, hash)
Cookies (first-party cookies)
DataLayer (GTM-style dataLayer)
Configure custom variables in Settings → Custom Variables. They're automatically added to matching events.
Use Cases
User ID
JavaScript
window.userId
Plan type
Data attribute
[data-plan]
A/B test variant
Cookie
ab_variant
Product category
URL path
/products/:category/:id
Cart value
DataLayer
ecommerce.cart.total
Event Counts
Core
4
Click
1
Scroll
1
Form
9
Identity
2
Chat
9
Video
9
Scheduling
9
eCommerce
14
Custom
∞
Total Standard
58
Last updated
Was this helpful?