Custom Event

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 or event_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 eventWhen to useSample params
cta_click_pricingMeasure CTA qualitypage="/pricing", placement="hero"
video_play_50Media engagement via Video Engagementasset_id="intro-01", percent=50
form_submit_contactLead gen quality via Form Submissionfields=5, errors=0
outbound_click_affiliatePartner traffic via Outbound Clickdomain="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.