Hello All,
Trying to setting up my first recommendation activity in AT. Completed uploading few products to product catalog via Recommendations API. How can we set up a basic or simple recommendation activity after this catalog set up? Sample use case like if a user searches a particular product , then displaying that product based on the search term. Would be really helpful to get the inputs. Thank you.
Topics help categorize Community content and increase your ability to discover relevant content.
Views
Replies
Total Likes
Hi @Sankaran ,
Recommendation is one of my favourite features of Adobe Target - just as much as i love it, I hate having to show that it actually works when only a few products has been uploaded. Ideally you implement it on all pages, let it collect behaviour for a week or two and then it will be much easier.
It is worth keeping in mind that Recs is driven by the behaviour of the users, so in order for it to show/recommend something it isn't enough to just upload a few products. There needs to be some behaviour in order for a Criteria like 'people who viewed this also viewed that' to work.
In order to track the behaviour you need to implement target requests on the product detail pages that sends in the entity.id parameter - this is what is used to track the behaviour. Creating the products via API is primarily used for enriching the product with meta data if you're not doing this via the target requests on the product detail page.
If you only have the products created via api, these are your options:
1) hardcode a custom criteria to show products (my preferred option). This still requires that entity.id is set on the page where you would like to see it working.
2) if you have Adobe Analytics implemented and the SKU collected in AA is the same as you used when uploading products to Recs you can update the criteria to use Adobe Analytics behaviour data. Again, you still need to ensure you have entity.id set on the page where you would like to see it working.
In your specific case where you would like to return something based on a search, you need to set entity.id on the search result. You need to ensure that entity.id has an id of a product that exist in your catalogue, which sometimes can be difficult on a search result page. Typically this is achieved by capturing the SKU of the first product the search is returning.
Let me know how it goes!
Views
Replies
Total Likes
Hi @kandersen Thank you so much for a prompt response and for the detailed insight. We are currently using the web SDK implementation w.r.t target. It's just an initial POC I am doing. Would be really helpful if I can do something setting up a recommendation activity with a simple use case to start with.
Views
Replies
Total Likes
The tricky part about a simple use case is collecting the behaviour and is depending on how where/how many pages you have implemented the required parameters for Target. That you're using WebSDK isn't changing a whole lot. Passing entity.id is still required, so with webSDK it is just the process of passing it that has changed (you know, Schema, Data Stream, etc.).
Assuming you have entity.id set on several product detail pages the easiest POC to run is creating an activity on frontpage/or any other page (set a query string criteria for the activity, if you don't want to expose to every visitor) and use the 'most popular products across site' or 'recently viewed' Criterias. Both will start showing recommendations immediately, as you browse pages with entity.id set and then navigate to the frontpage.
It is a requirement that you're passing entity.id - it is not enough creating products in the catalogue using api.
Views
Replies
Total Likes
Hi @kandersen Sorry for the late response as I was out sick. Assuming you have entity.id set on several product detail pages - Regarding this point, do you mean that entity.id is set via the datalayer already? I have the entity.id, name ,category, thumbNail URL uploaded into the catalog via the API for 3 products. Would you mind sharing some exact steps which can be used to create a successful recommendation activity to validate. Thanks.
Views
Replies
Total Likes
Absolutely, @Sankaran !
Let's just first clarify a few functionalities to make sure we are on the same page.
1) To 'enable' the product recommendation it is required to set the entity.id on your product detail pages. This is what powers the criterias/algorithms. This is passed to Target via the Target request on the site. Entity.id needs to be unique for each product, so typically it is the SKU of the product that is populated as entity.id.
2) With entity.id you have a unique id/SKU and are collecting the behaviour, but if you want filter based on a certain color/category/size/price/in stock/ etc. you need to enrich the product (add meta data to your SKU). You can do this through other entity. parameters in the target request e.g. entity.size, entity.value, etc. Some are out of the box others you can create yourself. Here's a description of the out of the box entity parameters. Or you can do this via API - which is sounds like you've done.
If you've only done #2, Recommendation won't show any products, as there is no behaviour data collected to drive what to recommend. You've just created the products in the backend, but are not passing in any behaviour.
Here's the steps required:
1. Pass entity.id parameter on all or some product detail pages. If you're using Adobe Analytics, you typically already have the product SKU in the data layer. You'll then simply update your rule in the tag manager.
If you're using websdk you need to update your schema. If you're using custom code it will look something like this:
alloy("sendEvent", {
"renderDecisions": true,
"data": {
"__adobe": {
"target": {
"entity.id": "123",
"entity.genre": "Drama"
}
}
}
});
If you're usign Adobe Tags, you can do the same in the UI:
2. Once you're passing in entity.id you'll see these new product be created in your catalogue, so now you'll need to create the activity, the design and criteria. For the simplest setup I won't go into details on how to create your own design or criteria - so we'll use one of the already provided ones.
3. Create a new Recommendations criteria. could be on the frontpage. When going through the steps you'll need to select a design - pick a random one of the already provided designs. You'll have to select a criteria. Choose either Most viewed across site or recently viewed.
Please note that you may have to change the selection under page type to view it.
I've recorded a quick screen recording to show the steps: https://www.loom.com/share/d8de64b0b15640ca83d630534d989c1a?sid=6ca9b52a-245f-4726-8c03-5aebe2ca90dd
4. optional. if you want to ensure not everyone can see Recommendation while you're testing, you can apply a query parameter requirement on your activity. I've documented the steps in this post: https://experienceleaguecommunities.adobe.com/t5/adobe-target-blogs/struggling-with-qa-links-here-s-...
I hope this helps!
Views
Replies
Total Likes
Thank you so much for the very detailed steps @kandersen . I now get the logic. But just a clarification. In my case, what I did is I first uploaded the 3 products in the Catalog via the Recommendations API using the 3 entity attributes such as entity.id, name ,category, thumbNail URL . Here only thumbNail URL is the one which I acquired by inspecting the specific product available in a page (https://abc.com/image.png) and the remaining attributes such as entity.id and entity.category are the ones which I manually defined by giving some hardcoded values such as 1234 for entity.id and medicine for entity.category since I couldn't fine these available in the datalayer or at the page source. Now having said this, the hardcoded value (1234) which I uploaded to catolog can be used to pass to the target via the target request on the site(your mentioned 1st step) ?? Please let me know on this. I just want to know that we can do this only if we have the entity.id or SKU id is defined already at the datalayer level or with the method which I have mentioned?? Note: Mine is not a retail site . It's a Healthcare domain website for Health care professionals.
Views
Replies
Total Likes
Hi @Sankaran ,
I'll try and address each of your questions here - let me know if anything isn't clear and I'll do my best to help explain further.
Is there any documentation or a video recording that shows the complete steps of setting up a recommendation activity in Adobe Target?
I haven't been able to find any. I'll try and find time to record a video of it, but realistically it won't be until august i have time for it.
Why is the meta object not appearing in recommendation activity calls, while it does show up in A/B test or XT activity calls (e.g., experience.name)?
Not sure i understand. It should be passed as an entity parameter. experience.name is probably appearing due to it being enabled as a Response Token. The meta data for recommendation needs to be passed from the website to target via entity parameters. Any meta data you have uploaded via a feed will not be part of the requests. Only entity.id will be seen in the response from target when it is serving a recommendation.
Can I use hardcoded values like "1234" for entity.id and "medicine" for entity.category when uploading products to the catalog – if those values are not available in the datalayer or page source?
In theory yes, but not recommended - it is critical that it matches whatever id is passed to target as an entity parameter on the 'product' page (I'm saying product, but it can be anything e.g. article, faq, video, etc.).
Will this still work as long as I pass the same hardcoded entity.id in the Target request on the website (as mentioned in your first step)?
As long as they are the same, then yes. This will be fine for a poc/mvp, but not recommended for running in production.
Is it only valid to use this method if we already have entity.id or SKU defined in the datalayer – or can we safely use my manual approach if the site is non-retail (e.g., healthcare)?
I work with healthcare too, who may not necessarily have an id no the page. In those cases we pick up a value from the URL that is unique for the page. This will function as a unique entity.id - it isn't ideal but will do the job to avoid having to go through a big IT project of implementing a unique id in the data layer.
I hope I covered all your questions and that it will help you move forward!
Views
Replies
Total Likes
Hey @kandersen Thanks a ton again for your response.
As per the loom video you recorded, I saw you captured the steps in target UI where you selected the criteria and design. I will just reiterate the steps which I did and you can confirm will this be sufficient to set up a successful recommendation activity.
Simple Use case : If we see or view a particular product , then push the recommendations.
1. Catalog upload : I first uploaded 2-3 products in the Catalog via the Recommendations API using the 3 entity attributes such as entity.id, name ,category, thumbNail URL as already mentioned. As we discussed, I have hardcoded the value of entity.id as Dose1 . I was able to see the products in the Catalog section.
2. When I try to set up the activity in target UI, I selected the Recently Viewed items Criteria and some design . But here , I am experiencing an issue with the new UI toggle where I couldn't see my uploaded products appearing in the recommendation location. Not sure if it's the issue for everyone. But I could see it appearing working using the old UI toggle. Just wanted to confirm if this is the issue with new toggle for everyone since I couldn't see the option to select the page, etc while choosing the criteria in the UI
Updated new UI toggle
Old UI toggle
3. For passing the entity.id
Currently the target calls are getting fired for the remaining activities via the option we checked Render visual personalization decisions as part of the page load web SDK rule. Hence, can I just reference a data element in the same page load rule which contains the below logic? probably along with the experience.name and experience.id as you suggested
alloy("sendEvent", {
"renderDecisions": true,
"data": {
"__adobe": {
"target": {
"entity.id": "Dose1",
}
}
}
});
If I complete these steps, will I be able to see the recommendations working successfully? Or Am I missing something here? Please do the needful. Thank you.
Views
Replies
Total Likes
Hi @Sankaran ,
I can confirm that you've taken all the necessary steps to get Recommendation to work.
Just for reference for anyone new to Recs who sees this thread, I'd like to document the steps in the order i would do them
1. Implement entity.id on the website to be sent as Target parameter (your step 3)
2. Enrich collected products (entity.id from the website) via feed or api (your step 1)
3. Configure the HTML code for the Design (this is optional, as you can use one of the already provided designs, but then it isn't branded)
4. Configure the Target Activity for Recommendations - as part of this step you select the Criteria and the Design
The order between 1-3 is not critical, but this is the order i would do them in.
EDIT: Forgot to mention, I haven't created a Recs activity in the new UI, but if you're having issues or questions i recommend you raise them in this thread: https://experienceleaguecommunities.adobe.com/t5/adobe-target-discussions/announcement-facing-issues...
Views
Replies
Total Likes
Hey @kandersen Thanks for the confirmation. I tried everything and set up the activity . I was able to see the entity.id firing as a separate interact call since I set it up with the custom code logic mentioned above in my 3rd step. But I couldn't see the recommendations appearing even in the respective Activity QA URL. There are no changes I could see where I set up the recommendation while setting up the activity. Could you please let me know If I have missed something here. Thanks.
Views
Replies
Total Likes
@Sankaran which criteria are you using?
If Recently Viewed, you need to navigate to other ‘product pages’ that also are sending in entity.id, otherwise there is no data/behaviour to ‘fuel’ the recommendation.
Views
Replies
Total Likes
Hi @kandersen Yes I am using the Recently Viewed Items criteria . Do you mean that I have to navigate to some other page which contains the same product from the Activity location and then come back to see the recommendations working? Or without navigating, If I just view the product in the page , can I get the recommendation work with any other criteria?
Thank you.
Views
Replies
Total Likes
With the recently viewed you need to navigate to other products to have them show.
Change the critieria to Most Viewed across site, that should ensure it should something.
Views
Replies
Total Likes
Thanks @kandersen But as I mentioned, there are issues with recommendation not appearing in the new toggle UI and I am seeing that old toggle UI is completely deprecated now. Still I am not able to see the recommendation in the VEC itself with the new toggle view. I will change the criteria and see once the issue gets resolved.
Views
Replies
Total Likes
Hi @Sankaran
I've recorded this video which you hopefully find helpful: https://youtu.be/vJwwBBb2g58
If you get to resolve your issue, then please mark a relevant reply as solution.
Thanks,
Kasper
Views
Replies
Total Likes
Hey @kandersen Thank you so much. I will check this and let you know after watching it.
Views
Replies
Total Likes
Hey @kandersen I uploaded 3 products in the catalog section . But when I see the experience in the actual URL, it is only showing one product and remaining is not showing up from the recommendation catalog. I guess the design is not working properly. I am also attaching the design code which I used. Can you please check and tell me if there is an issue with the design. FYI: I just used a normal login based audience for this POC i.e push the recommendations if the user is logged in.
<style type="text/css">
.at-flex-container {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 24px;
max-width: 960px;
margin: 0 auto;
padding: 20px;
}
.at-flex-item {
flex: 0 1 300px;
box-sizing: border-box;
background-color: #f5f5f5;
border-radius: 10px;
padding: 15px;
text-align: center;
display: flex;
flex-direction: column;
justify-content: flex-start;
}
.at-thumbnail {
width: 100%;
height: auto;
max-height: 200px;
object-fit: contain;
display: block;
margin: 0 auto 10px auto;
border-radius: 8px;
}
h3 {
margin: 10px 0 5px;
font-size: 1.1em;
}
.at-light {
font-weight: 300;
font-size: 0.9em;
word-break: break-word;
margin-bottom: 5px;
}
@media (max-width: 768px) {
.at-flex-item {
flex: 0 1 calc(50% - 24px);
}
}
@media (max-width: 480px) {
.at-flex-item {
flex: 0 1 100%;
}
}
</style>
<div class="at-flex-container">
<div class="at-flex-item">
<a href="$entity1.pageUrl">
<img src="$entity1.thumbnailUrl" class="at-thumbnail" />
<h3>$entity1.name</h3>
<p class="at-light">$entity1.message</p>
<p class="at-light">$entity1.value</p>
</a>
</div>
<div class="at-flex-item">
<a href="$entity2.pageUrl">
<img src="$entity2.thumbnailUrl" class="at-thumbnail" />
<h3>$entity2.name</h3>
<p class="at-light">$entity2.message</p>
<p class="at-light">$entity2.value</p>
</a>
</div>
<div class="at-flex-item">
<a href="$entity3.pageUrl">
<img src="$entity3.thumbnailUrl" class="at-thumbnail" />
<h3>$entity3.name</h3>
<p class="at-light">$entity3.message</p>
<p class="at-light">$entity3.value</p>
</a>
</div>
</div>
Views
Replies
Total Likes
Hi @Sankaran
There's nothing in your template that stands out. I need some more details on how you uploaded the products. Did you collect the via entity parameters on the site or uploaded them via feed?
In order for the products to show, it is requied they are collected/tracked via entity paramter. If they are not, that would be the reason they aren't showing.
Let me know how you progress.
Views
Replies
Total Likes
Hi @kandersen I uploaded the products in the catalog via the recommendations API using the below one:
Views
Replies
Total Likes
Assuming this is the api you've used: https://developer.adobe.com/target/administer/recommendations-api/#tag/Entities/operation/saveEntiti...
Then i wouldn't expect them to show. I assume that the one actually showing is collected via entity parameters on the site?
With the API you've created new products in the catalogue, but because it is created via api, there's no behaviour collected for it (this is done using the entity parameters on the site as explained in my youtube video).
What criteria are you using?
Views
Replies
Total Likes
Views
Likes
Replies