Events

Events are the core unit of analytics in Emit Vision. Every captureEvent() call creates an event record with a name, properties, tags, and context — queryable in the dashboard.

Capturing an event

import { captureEvent } from "@emit-vision/sdk-js";
 
captureEvent("checkout_completed", {
  plan: "pro",
  seats: 5,
  billing: "annual",
});

Event naming conventions

Use snake_case with a verb_noun pattern. Consistent naming makes events easier to find and group in the dashboard.

GoodAvoid
user_signed_upUserSignedUp, signup
page_viewpageView, viewed page
checkout_completedCheckout, done
button_clickedclick, btn_click

Properties vs tags vs context

The captureEvent() signature accepts three distinct buckets for data:

captureEvent(
  "feature_enabled",
  { featureName: "dark-mode" },
  {
    tags: {
      experiment: "onboarding-v3",
      variant: "dark-first",
    },
    context: {
      route: "/settings",
      trigger: "toggle-switch",
    },
  },
);
FieldPurposeWhen to use
propertiesThe event's own dataWhat happened: plan name, seat count, form values
tagsIndexed metadata for filteringHigh-cardinality: feature flags, A/B variants, release channels
contextAmbient environment infoWhere it happened: route, trigger, referrer

Put values you'll filter on frequently — feature flags, experiment variants — in tags. They're indexed differently and make dashboard queries faster.

Adding ambient context

Instead of repeating the same tags on every call, use setContext() and setTags() once:

import { setContext, setTags } from "@emit-vision/sdk-js";
 
// After login:
setContext({ userId: "user_123", orgId: "org_456" });
setTags({ plan: "pro", experiment: "new-nav" });
 
// Now every event automatically includes these
captureEvent("page_view", { path: "/dashboard" });

What you see in the dashboard

The Events tab shows a live stream of captured events. Each event shows:

  • Name and timestamp
  • Properties, tags, and context
  • User identification (if identify() was called)
  • Session link (if sessionId was set)
  • Release label (if release was set at init)

Querying events

The dashboard lets you filter events by name, property values, tags, user, session, release, and time range. Use the Explore view to build ad-hoc queries.

Reserved event names

Events starting with $ are reserved for internal SDK use:

NameWhen it fires
$flag_exposureAfter each evaluateFlags() call (can be disabled)
$errorUnhandled errors auto-captured by autoCapture
$session_startFirst event in a session