Hi @tnxx,
On the first page load, the user hasn't yet qualified for either Activity A or B in their profile stored on Adobe Target's edge network. That means:
- When the visitor hits the page for the first time, they haven't qualified for any activities yet.
- The decisioning engine can't yet include Activity A or B in user.activeActivities because the decision is being made right now, and profile updates happen after the decision.
- So user.activeActivities is empty at the moment of initial evaluation, even though the user might end up qualifying for Activity A or B in that request.
First visit:
- Adobe Target makes a decision.
- Activity is served.
- The user's profile (including user.activeActivities) is updated after this request.
Second visit (or later):
- Now, user.activeActivities includes the previous qualification.
- You can use that to exclude users from other activities.
To enforce mutual exclusivity of Activity A and B on the first visit, you’ll need a different approach. Options include:
- Custom Profile Attribute Flag
- Use a custom profile script like qualifiedForActivityA.
- In Activity A, set this flag using profile update.
- In Activity B’s targeting rule, exclude users where qualifiedForActivityA == true.
Caveat: Still subject to same lifecycle delay.
- Client-Side Storage (LocalStorage or Cookies)
- On the client side, once a user is shown Activity A, set a flag in a cookie or localStorage.
- Use Target's mbox or at.js to read this value into a custom parameter.
- Use this custom parameter in the targeting logic to exclude users from Activity B.
Thanks.
Pradnya