Targets are evaluated at different times for different message types. This is because push and email messages come directly from Leanplum’s servers, while in-app messages are synced and stored on the user’s device at app start.
For In-app messages, targets are evaluated at the start of a new session with the call
Leanplum.start(). If the user fits the target criteria at app start, the message will be synced to their device with all appropriate triggers and other settings.
But, if the user’s relevant segment criteria changes during that session, the user won’t be re-evaluated as a target till the start of their next session.
For example, let’s say the target for your in-app message is users with a Lifetime value greater than $200.
Next, a user with a Lifetime Value of $100 starts the app—they don’t fit into our target audience, so our message won’t be synced to their device yet. Now, our user spends $150 dollars during their session, bumping up their Lifetime Value to $250.
Technically, this user should fit into our message's target segment (>$200 Lifetime Value), but for in-app messages, Leanplum won’t reassess the user’s target status until their next session starts. So if the user triggers your in-app message during this session, the message won’t fire.
Once a new session starts, their target status will be re-evaluated, making them eligible for your in-app message.
For Push notifications and email messages, targets are evaluated at the time of the message send or trigger.
Using the example from above, our user starts the app a Lifetime Value of $100. In that same session, they make a purchase that bumps their Lifetime Value up to $250.
Now if the user triggers an email or push message with a target of Lifetime Value over $200, the user will receive the email. This is because their target criteria were evaluated at the time of the message send (or in this case the time of the trigger) rather than at the beginning of the session.
Updated almost 2 years ago