A custom event is a tracked interaction you define yourself—beyond a default Pageview, Session, or User—to capture behavior that actually matters to your product. Think pricing CTA clicks, video milestones, validation errors, or feature usage. It’s a precise signal (often a “micro” in Macro Conversion / Micro Conversion) that ties cleanly to your funnel and decisions.
Why teams instrument custom events
- Business alignment: You track actions that map to goals and reporting, not generic defaults.
- Diagnostics: With Event Parameters you can segment by plan, device, or A/B variant without new releases.
- Clean paths: Wire events via a Trigger and a Tag in your TMS to keep journeys consistent.
Minimal schema
- event_name — snake_case, action-oriented (
signup_submit
,pricing_cta_click
). - params — compact key/value payload (e.g.,
plan="pro"
,variant="B"
). - context — platform-provided identifiers (user/session/page). Every event is still a Hit, so keep payloads lean.
Naming convention (recommended)
<object>_<action>[_<qualifier>]
→ video_play_50
, form_submit_contact
, cta_click_pricing
.
Quick math
- Event Count = total number of occurrences.
- Custom Event Rate =
event_count / sessions
orevent_count / users
(choose one and stay consistent). - Conversion Rate from event to goal =
conversions / event_count
.
Example: 3,200 pricing_cta_click
over 10,000 sessions → Event Rate = 32%.
Mini reference table
Example event | When to use | Sample params |
---|---|---|
cta_click_pricing | Measure CTA quality | page="/pricing" , placement="hero" |
video_play_50 | Media engagement via Video Engagement | asset_id="intro-01" , percent=50 |
form_submit_contact | Lead gen quality via Form Submission | fields=5 , errors=0 |
outbound_click_affiliate | Partner traffic via Outbound Click | domain="vendor.io" |
Implementation notes
Emit events from app code or a TMS rule bound to a DOM Click Event or Scroll Event. Keep payloads typed (string/number/boolean). Maintain a shared tracking plan with owner, purpose, and consumers. Validate in dev; then sample production for parameter drift. Avoid duplicating semantics of base events unless you need extra context.