Targeting

Reach exactly
who you want.
No SQL required.

Signal targeting lets you control which users see which features using rule-based segments. Target by user ID, email domain, country, subscription plan, or any custom attribute you already have in your user object — no data warehouse, no third-party analytics tool.

How it works

Pass your user context.
Signal does the matching.

You pass any object at evaluation time. Signal compares it against your segment rules and returns the right flag value — or the fallback if no rule matches. Evaluation happens locally from a cached copy of your flag config, so every flag read is synchronous and sub-millisecond.

Context object

signal.flag('premium-ui', {
  userId: 'usr_8821',
  plan: 'enterprise',
  country: 'FR',
  beta_opt_in: true,
})

Rule operators

Eight operators.
Infinite combinations.

Combine operators with AND/OR logic. Stack multiple conditions into a single segment. No code change when you update a rule — the new logic applies immediately.

equalsuser.plan == "enterprise"
not equalsuser.country != "US"
containsuser.email contains "@acme.com"
starts withuser.id startsWith "beta_"
in listuser.country in ["FR", "DE", "ES"]
greater thanuser.account_age_days > 30
less thanuser.failed_attempts < 3
existsuser.beta_opt_in exists

Segment examples

Common segments
your team will recognise.

Reusable segments you define once and attach to any flag. Update the rules, and every flag that references the segment picks up the change instantly.

Internal team

user.email endsWith "@yourcompany.com"

First recipients of every feature. Catches obvious issues before external exposure.

Beta testers

user.beta_opt_in == true AND user.plan != "free"

Paying users who opted in. Higher engagement, better feedback signal.

Enterprise accounts

user.plan == "enterprise" AND user.account_age_days > 90

Mature, high-value accounts. Useful for testing features with compliance requirements.

EU region

user.country in ["FR", "DE", "ES", "IT", "NL"]

GDPR-scoped rollouts or region-specific features.

FAQ

Common questions.

Does targeting happen on the server or the client?
Signal supports both. The server SDK evaluates rules locally using a cached copy of your flag configuration — no network round trip per evaluation. The client SDK can evaluate locally or defer to the server, depending on how sensitive your targeting rules are.
How do I pass user context to the SDK?
You pass a plain object at SDK initialisation or per flag evaluation. Any key-value pair is valid — Signal does not impose a schema. Your existing user object works as-is.
Can a flag target multiple segments simultaneously?
Yes. A flag can include multiple targeting rules. Signal evaluates them in order and returns the first match. Users who match no rule receive the default fallback value.
Can I reuse a segment across multiple flags?
Yes. Segments are defined once and can be attached to any number of flags. Updating the segment rules propagates to all flags that use it.

Join the waitlist

Ship your next feature
with confidence.

Join the waitlist. We will reach out personally before we open access.

No spam. One email when we open.