Adobe Journey Optimizer Business Practitioner study materials
Adobe Journey Optimizer Business Practitioner study resources

The Segment That Never Refreshes

Adobe Journey Optimizer Business Practitioner · Put your knowledge to work in context.

All case studies

The Segment That Never Refreshes

A subscription business defines a segment LapsedHighValue as: profile has lifetimeValue > 500 AND has NOT had a renewal event in the last 90 days. The segment is used to drive a win-back campaign. After launch, the campaign reaches far fewer people than expected (about 12,000 vs. an anticipated 40,000), and profiles that clearly lapsed weeks ago are not appearing. A second segment, ActiveSubscribers, defined purely on a profile attribute (status = active), refreshes correctly. The team uses streaming segmentation for LapsedHighValue because they want near-real-time behavior.

1. Why does `LapsedHighValue` under-populate while `ActiveSubscribers` works, and what does 'NOT had an event in the last 90 days' actually require?

Read the worked answer

ActiveSubscribers works because it is evaluated purely on profile attributes, which are always current on the profile. LapsedHighValue depends on event history and the absence of a recent event - a fundamentally different evaluation.

The critical issue: "has NOT had a renewal event in the last 90 days" is a negative, time-windowed condition over events. Streaming/batch segmentation evaluates membership at a point in time against the data available. A profile only enters the segment when the system can affirm the condition. Two failure modes:

  • Absence of evidence. If a profile's event history is incomplete or the negative condition is evaluated against a window the system hasn't fully processed, the profile is excluded rather than included.
  • No trigger to re-evaluate. A profile that simply stops renewing generates no event, so nothing prompts re-evaluation. Membership can go stale in the wrong direction - the profile never gets added even as it lapses.

So the negative window condition is the weak link: it depends on a lack of activity, which produces no event to drive updates.

2. Propose a more reliable way to build the win-back audience and explain the tradeoff you're accepting.

Read the worked answer

Convert the absence condition into a presence condition that the system can act on:

  1. Derive a timestamp attribute. Maintain lastRenewalDate on the profile (updated on each renewal event). Then the segment becomes lifetimeValue > 500 AND lastRenewalDate < now - 90 days, which is an attribute comparison, not an event-absence check.
  2. Schedule evaluation. Run the segment on a regular cadence (e.g., daily) so profiles cross the 90-day threshold predictably. A daily batch evaluation of an attribute condition is deterministic and complete.
  3. Trigger the campaign from segment membership, not from a missing event.

Tradeoff: you lose true real-time behavior - a profile enters the win-back audience on the next scheduled evaluation, up to ~24h after crossing the threshold. For a 90-day win-back motion, a day of latency is immaterial, and completeness matters far more than immediacy. The principle: prefer conditions the system can affirm from present data over conditions defined by absence of events.