Segmentation

Target anyone.
Compose it with and / or / not.

A segment is a recursive condition tree. Match on country, device, headers, cookies, query params, time of day, or custom attributes — nest the logic as deep as you need. Define it once, reuse it everywhere.

Get early access See feature flags →

What you can match on

Everything in the request.

geo
Geo
Country and region, resolved at the edge — no GeoIP library to ship in your app.
request
Headers & cookies
Match any header, cookie, or query parameter by exact value, substring, regex, or set membership.
device
Device
Branch on device class without parsing user-agent strings yourself.
time
Time
Weekday and hour conditions — for business-hours rollouts or weekend-only experiments.
custom
Custom attributes
Pass your own signals via X-AYBEE-ATTRS — plan tier, cohort, anything you know about the visitor.
matchers
Rich matchers
equals, contains, regex, in, numeric_range, exists — and their negations.

The shape of a rule

A tree, not a flat list.

Conditions nest. A group has an op of and or or; any branch can be wrapped in not. That's enough to express targeting that flat rule lists can't.

// "premium plan, in the EU, but not on mobile"
{ op: "and", conditions: [
  { input: { type: "custom", name: "plan" },
    matcher: { type: "equals", value: "premium" } },
  { input: { type: "geo_country" },
    matcher: { type: "in", value: ["FR", "DE", "ES"] } },
  { op: "not", condition:
    { input: { type: "device" },
      matcher: { type: "equals", value: "mobile" } } }
] }

Define once, reuse everywhere

One segment, every surface.

Segments are first-class objects. The same premium-eu segment can gate a flag, scope an experiment, and drive a routing rule — change it in one place and every surface updates on the next publish.

Target precisely. Reuse freely.

AyBee is in development. Get early access and we'll reach out personally.

Get early access