late-ambulance-66508
07/30/2026, 8:49 AMfirst_visit_date, which determines whether a user is considered new and eligible for an experiment.
first_visit_date is initially set when the user opens the app for the first time. However, if the user later signs in to an existing account, this attribute is updated to the first_visit_date associated with that account.
This creates the following scenario:
• A user is initially eligible for an experiment targeting new users.
• They are assigned to a variation, and the assignment is persisted through Sticky Bucketing for the duration of the experiment phase.
• The user then signs in, and their attributes are updated.
• Based on the new first_visit_date, the user no longer matches the experiment’s targeting conditions.
• However, because of Sticky Bucketing, they remain in the experiment and continue receiving the assigned variation.
Is there any mechanism that would allow us to remove such a user from the experiment? We are not only looking to exclude these users from the experiment analysis, which would be relatively straightforward. We would also like them to stop receiving the experiment variation once they no longer match the targeting conditions.
One idea would be to add a rule before the experiment with conditions that are the inverse of the experiment’s targeting conditions, so that these users are immediately excluded from further targeting. However, this would not remove them from the experiment results or exposure data.
Ideally, we would also like to have a callback similar to experiment_view, but for when a user leaves or becomes ineligible for an experiment — something like experiment_leave.flaky-noon-11399
07/30/2026, 10:27 AMexperiment_leave callback. If you control the sticky bucket store, you could also clear that user’s sticky assignment when they become ineligible, but that would need to be handled in your implementation.late-ambulance-66508
07/30/2026, 10:35 AMexperiment_leave - I know, it was more like feature request. 🙂crooked-rainbow-90115
09/07/2026, 12:24 PMlate-ambulance-66508
09/07/2026, 2:18 PMfirst_visit_date, so they qualify for an experiment targeting new users and see UX optimized for newcomers.
Later they sign in, and first_visit_date is replaced with the account-level value. At that point they no longer satisfy the experiment targeting, but Sticky Bucketing keeps serving the assigned variation.
This creates a couple of practical inconsistencies for us:
• If we later roll out the winning variation as a regular rule in a feature flag using the same first_visit_date targeting, the user is now evaluated with the correct account-level attribute and no longer matches. So the UX they were seeing during the experiment can suddenly change after rollout.
• Cross-device behavior becomes inconsistent as well. A user may first sign in on an iPhone, then later use an iPad or another phone, and effectively see different UX depending on which sticky assignment/history exists on that device.
2. Eligibility changes naturally during the user lifecycle
Another common example is an experiment targeting users without a subscription. If the user purchases a subscription, they no longer belong to the population the feature is intended for, but Sticky Bucketing can keep them in the experimental experience.
Of course, there are experiments where the treatment is specifically meant to drive that transition — e.g. increasing purchase conversion — and in those cases we absolutely want to preserve the original assignment/exposure for analysis.
So I wouldn't expect something like experiment_leave to automatically remove a user from experiment results. What would be useful for us is an optional callback/event when a user stops matching an experiment's targeting after attributes are updated. Then the application could decide whether to stop serving the variation / clear the sticky assignment, while still keeping the original exposure in the experiment data.
In other words, I'd like to keep the causal analysis intact, but have more control over the runtime lifecycle of an experiment assignment.crooked-rainbow-90115
09/07/2026, 5:29 PM