This request came in:
I have a customer trying to implement limiting re-offers, but wants to have differing time periods based on whether a user accepts or rejects the offer. Specifically, a recommendation should appear after 6 months if the recommendation is rejected, and 4 months if the offer is accepted.
This canbe done with two branches and a Limit Reoffers on each branch. A third branch would be used to represent recommendations that have neither been approved or rejected. All three branches would initially load the same set of recommendations.
Later in the strategy, you would use a Branch Select to decide which branch to allow through.
On each branch, your goal would be to filter the original set down. One branch would want to filter it to Only the Recs That This User Most Recently Rejected. The second branch would want to filter to Only the Recs That This User Most Recently Accepted. The third branch would be Only the Recs That Have Neither Been Approved or Rejected By This User.
Since the built-in Limit Reoffers doesn’t support the variability this customer needs, they would have to store their own information on User Accepts or Rejects so the filters have something to work with.
In order to do that, you’d need to store records that reflect whether a particular recommendation was accepted or rejected by a particular user. You’d create a custom object called something like ‘RecommendationUserResponse’. In the downstream flows, you’d create or update a RecommendationUserResponse record. It would have three fields: a Recommendation Id, a User Id, and a Response value of either ‘Accepted’ or ‘Rejected’.
To apply the filter logic, you would use the Enhance element and an invocable action. The Enhance element would call the action. The action would iterate through the provide recommendations and query for RecommendationUserResponses with a matching Recommendation Id and User Id. It would then use the Response field to determine whether to filter each recommendation out.