Here is a list of attributes for you. The specific one you're looking for may be "ContentID" or "SkuID" depending on the catalogue type. In my implementation of a content catalogue, there are a few steps in this order:
Step 1: Set and collect the data
<script src="//{MID}.collect.igodigital.com/collect.js"></script>
<script>
_etmc.push(["setOrgId", "{MID}"]);//Tracks to this MID
_etmc.push(["setUserInfo", { "email": "{USER_EMAIL_ADDRESS}" } ]);//Tracks to this user
_etmc.push(["trackPageView", { "item": "{CONTENT_ID}" }]);//Tracks page view of this product, matches the "ContentID" for content or "SkuID" for products
</script>
Step 2: Dynamically stream the item's update to your catalogue (as opposed to a batch upload of a pipe delimited file)
<script>
_etmc.push(["updateItem", {
"item_type": "content",// or "product" for a product catalogue
"item": "{CONTENT_ID}",//Matches the "ContentID" for content or "SkuID" for products
"url": "{ABSOLUTE_URL}",
"available": "{AVAILABILITY}",// Accepts "Y" or "N"
"name": "{CONTENT_NAME}",
"image_link": "{IMAGE_ABSOLUTE_URL}",
"author": "{AUTHOR}",
"release_date": "{PUBLISHED DATE}",//Should be in YYYY-MM-DD format
"abstract": "{DESCRIPTION}",
}]);
</script>
If you're wondering where I got these keywords from, you can find them in your specific catalogue's implementation by going to Admin > Implementation when viewing the Web Recommendations dashboard.
When updating items in the content catalogue via a batch file, I'm using the list of attributes as my column headers, like this:
ContentID|Link|Availability|Title|ImageLink|Author|PublicationDate|Abstract
The batch file is pipe-delimited with each item on it's own line and has the "psv" file extension, much like your example. Though make sure if a field is empty, there is still a pipe for it, like how I've omitted the "author" from this:
9999|https://example.com/9999/|Y|Foo|https://example.com/media/9999.jpg||2019-11-25|Lorem ipsum dolor sit amet.
I actually have both the batch file updating the catalogue every 24 hours as well as the dynamic streaming updates.
When it comes to scenarios, here's some documentation on which attributes are needed to drive them.
Step 3: Recommend personalized content/products to the user
<script src="https://{MID}.recs.igodigital.com/a/v2/{MID}/product/recommend.js?item={CONTENT_ID}&email={USER_EMAIL_ADDRESS}"></script>
The "item" parameter in recommend.js or recommend.json refers to the "ContentID" (in a content catalogue) or "SkuID" (in a product catalogue), the same that gets passed as "item" in the "updateItem" push. The "email" parameter refers to the "email" attribute sent in the "setUserInfo" push. Keep in mind that the email address does not have to be a valid email address. If you want to track/personalize for anonymous users, you can generate a random unique ID or GUID and pass that along instead.
So putting it all together, the final snippet might look something like this:
<script src="//1234567890.collect.igodigital.com/collect.js"></script>
<script>
_etmc.push(["setOrgId", "1234567890"]);//Tracks to this MID
_etmc.push(["setUserInfo", { "email": "somebody@example.com" } ]);//Tracks to this user
_etmc.push(["trackPageView", { "item": "9999" }]);//Tracks page view of this product, matches the "SkuID" in the product catalogue
_etmc.push(["updateItem", {
"item_type": "product",
"item": "9999",//Matches "SkuID" in the product catalogue
"url": "https://example.com/products/9999/",
"available": "Y",// Accepts "Y" or "N"
"name": "Foo",
"image_link": "https://example.com/media/9999.jpg",
"author": "Bar",
"release_date": "2019-11-25",//Should be in YYYY-MM-DD format
"abstract": "Lorem ipsum dolor sit amet.",
}]);
</script>
<script src="https://1234567890.recs.igodigital.com/a/v2/1234567890/product/recommend.js?item=9999&email=somebody@example.com"></script>
Hope this helps!
The catalogue data extensions (PI_CONTENT and PI_CONTENTATTRIBS) are not dependent on the behaviour tracking, as the data is originating from the uploaded catalogue.
When trying to enable data extension integration in Einstein Web Recommendations, you might see some notifications explaining why your data is not coming into your data extensions. In my case, when a brand new catalogue is uploaded (with no other activities done), I am seeing these issues:
- This feature requires existing Einstein data extensions. Confirmation is pending, check back shortly. Contact support if you continue to see this message.
- This feature requires a catalog. Please ensure you've uploaded a catalog.
- This feature requires completion of the first time user experience. Please ensure that data collection has been set up and a recommendation page has been created.
- No item detail views have been collected in the last 24 hours. The igo_views data extension will not populate until item detail views are collected.
- No conversions have been collected in the last 24 hours. The igo_purchases data extension will not populate until conversions are collected.
Please have a look at especially number 3 item. Even though you don't need recommendations, you still need to configure at least one recommendation page, for the data to flow into the data extensions.
And also, as EazyE is telling you - setUserInfo also needs to be included in the code, for IGO_PROFILES to be populated with the value from setUserInfo, mapping it to the internal GUID of Einstein Recommendations.
Best Answer
the main answer to your problem are localized product catalog fields: Localization Documentation
Lets cover Availability:
I haven't tried it but i think that you cannot use localization options on the Availability field because its used to activate or deactive recommendations for that product over all recommendations.
What you would need to do is create either a Country_Availability that stores the countries where it is available seperated by ~. Then something like USA~MEX~CAN or whatever is in that field and you would use this inside the recommendation engine create rules like the following:
And then create multiple rules for every country you have.
Maybe it is also possible to create localized availability fields but i am uncertain if these can be used inside rule manager.
Let us cover discount:
For discount you would need to create localized discount columns in your product catalog. Then create displays etc.. and use it inside the email. But you will need to write AMPScript to concat localization parameter to the recommendation call inside the email like "?locale=fr-fr" dynamically from the subscriberattributes you have. Remember you will need to have every field you want to display localized in a localized column inside the product catalog (also productnames etc).
Therefore your Einstein recommendation blocks need to be rewritten inside its HTML.
The other option is to code the localization option static into content blocks and use audiences that definitely only have that localization option. Therefore you would create a dynamic content block that has einstein content blocks inside of itself which have to be configured correctly by the rules from the dynamic content blocks.
I hope is what kind of understandable. If you have more questions or need clarification please comment on this post (or write per LinkedIn or Salesforce Collaboration Plattform, my name is always the same).
Before you might become angry from the process of the catalog image generation read this post:Catalog Generation Process