Skip to content
Platform · Audiences

Targeting without a rules-engine cliff.

10 condition types. AND / OR nesting. Reusable segments across experiments and flags.

01: Conditions

10 conditions. Three categories.

Context

What the browser already knows: location, device, URL.

  • Locationcontext
  • Devicecontext
  • Browsercontext
  • Platform (OS)context
  • Languagecontext
  • Query paramcontext
Identity

Who the visitor is: cookies, return behavior, your own IDs.

  • Cookieidentity
  • New vs returningidentity
Custom

Your app’s own attributes: anything you pass in.

  • Custom attributecustom
  • Custom JavaScriptcustom
02: Nested rules

AND / OR. As deep as you need.

Every condition is a leaf. Group leaves with AND or OR, then nest groups inside other groups. No artificial depth limit, no rules-engine vendor-speak, just the algebra your stats team already uses.

Conditions evaluate in the order that short-circuits fastest, so a 6-level rule tree costs the same as a flat one for most visitors.

AND
  Location = US, CA
  OR
    Device = Mobile
    AND
      Browser = Chrome
      New vs returning = returning
  Custom attribute plan = 'pro'
03: Segments

Reusable segments. Define once. Attach to many.

Save a rule tree as a segment. Reference that segment from as many experiments and feature flags as you want. Change the segment definition once, and every place it’s used updates.

Segments version automatically. Roll back the segment, roll back every audience that references it.

Segment
us-mobile-pro
3 conditions · AND
Attached to
  • exp · pricing-tiers
  • exp · onboarding-flow
  • flag · new-checkout
  • flag · referral-bonus
04: Where they evaluate

Client-side or server-side. Same rules, either way.

SNIPPET

Client-side, for experiments.

The browser snippet evaluates audience rules locally: the full datafile ships with the page, so there’s no round-trip. Context conditions (location, device, browser, URL) come from navigator, window, anddocument.

  • No server hop per visitor.
  • Custom attributes via window.avsb.setAttribute.
  • Custom JS conditions run in an isolated scope.
NODE SDK

Server-side, for flags.

The Node SDK runs the same rule engine in your backend. Pass a user context object with any identity or custom attributes, and the SDK returns a consistent variation, no client round-trip needed.

  • Deterministic bucketing across services.
  • Redis sticky bucketing for multi-instance apps.
  • SSE streaming so flag updates arrive live.

Show the right visitors the right experiment.

Start free, no card. Build your first audience in minutes.