Skip to main content

Experiments (A/B Testing)

Run member-level A/B tests without building custom label hacks or workspace-wide toggles. Define Groups (control and variants), branch in Actions and workflows with CEL, and compare outcomes on Journey Goals.

What Experiments Do

  • Assign members to groups with weighted randomization that stays sticky
  • Branch behavior in Event Rules, task edges, and journey step conditions
  • Track exposure so reporting counts only members who actually saw the treatment
  • Compare journey goals by group with privacy-safe aggregate stats

How Assignment Works

Gravity Rail assigns on first encounter, not when you start the experiment:

  1. You write a condition such as member.experiments["opening-test"] == "friendly".
  2. The first time that expression runs for a member (on a supported runtime surface), Gravity Rail assigns them to a group, records exposure, and resolves the branch.
  3. Later reads return the same group.

No separate “assign member” action is required for typical tests.

Filtering

Who can be assigned (eligibility)

Optional Eligibility CEL on the experiment limits assignment — for example, age, labels, or form data. Members who fail eligibility are never assigned and do not appear in experiment stats.

What you see in lists

Archived experiments are hidden by default. Enable Include archived on the Experiments list to see historical tests.

Finding members by assignment

On the Members page, add an Experiments filter rule to list members assigned to an experiment, not assigned, or in a specific Group. Saved member filters and routines support the same rule type.

What counts in reports

Journey goal breakdowns use exposed members enrolled in that journey — not everyone assigned elsewhere, and not members who never reached the branch. Counts below five are shown as "<5" to protect privacy.

Common Patterns

GoalApproach
Compare two SMS openings on a journey stepEvent Rule on journey_step:execute with experiment condition
Route workflow pathsAutomatic task edge with member.experiments["slug"]
Limit test to a cohortEligibility CEL on the experiment
See per-member assignmentMember profile → Experiments tab
Find members in a test cohortMembers → filter by Experiments / Group

For setup steps, see the Experiments user guide.