my topic is about the relatively new product "predictive web" there are multiple contradictory facts delivered by salesforce which makes implementation hard or nearly impossible. I will quote multiple statements by salesforce documentation and their implementation instructions.
The main topic is the definition of the product catalog and the tracking code to match this catalog.
So let's begin.
Extract from your documentation:
SkuID Attribute Description: Unique identifier for each product, specific to the customer. This must match the product sku on the website and be passed via Collect Code.
ProductCode Attribute Description:Used to identify a group of related products. For example, a piece of apparel will appear in the catalog multiple times with a unique SkuID for each size the product is available in, all of these size variations will be sent with the same ProductCode. The ProductCode value cannot contain spaces or special characters.
Extract from the implementation instruction inside predicitive web:
Extract from your Tracking Code implementation on the install instructions in the Marketing Cloud:
<script> _etmc.push(["setOrgId", "MID-Number"]); _etmc.push(["trackPageView",{ "item" : "INSERT_PRODUCT_CODE" }]); </script>
Replace 'INSERT_PRODUCT_CODE' with dynamic code to pull the UNIQUE IDENTIFIER for the item being viewed. If you have connected or uploaded a catalog file, the value sent in place of 'INSERT_PRODUCT_CODE' must match the value mapped to your ProductCode catalog field.
To make it even clearer i provide you with a few lines of the sample_catalog.psv delivered by salesforce:
SkuID|ProductCode|ProductName|ProductType|ProductLink|ImageLink|RegularPrice|SalePrice|BrandName|Color|Rating|NumReviews|ReleaseDate|Keywords
12345|XCode12340|Brand X Whiz 9000|Electronics|http://www.companyx.com/products/12345|http://www.companyx.com/images/12345.jpg|80.89|72.8|Brand X|Blue~Red|4.12|1|8/27/2012|Technology~Music
12346|XCode12340|Brand X Whiz 9001|Electronics|http://www.companyx.com/products/12346|http://www.companyx.com/images/12346.jpg|94.57|85.11|Brand X|Blue~Red|4.12|1|8/28/2012|Technology~Music
12347|XCode12340|Brand X Whiz 9002|Electronics|http://www.companyx.com/products/12347|http://www.companyx.com/images/12347.jpg|22.08||Brand X|Blue~Red|4.12|1|8/29/2012|Technology~Music
12357|XCode12350|Brand X Whiz 9012|Headphones|http://www.companyx.com/products/12357|http://www.companyx.com/images/12357.jpg|54.92|49.43|Brand X|Blue|4.12|3|9/8/2012|Technology~Music
12349|XCode12340|Brand X Whiz 9004|Electronics|http://www.companyx.com/products/12349|http://www.companyx.com/images/12349.jpg|7.73||Brand X|Blue|4.12|1|8/31/2012|Technology~Music
12350|XCode12350|Brand X Whiz 9005|Electronics|http://www.companyx.com/products/12350|http://www.companyx.com/images/12350.jpg|94.29|84.86|Brand X|Blue|4.12|1|9/1/2012|Technology~Music
A summary: Salesforce told contradictory facts by now.
Catalog Documentary says ProductCode is not unique, Catalog install instruction says that i have to pass a unique identifier which is matched on the productcode field ==> productcode has to be unique. The sample_catalog shows that the productcode should not be unique.
What is the truth here?
To continue with our problem, what we have tried to do:
- Catalog: ProductCode not unique, Tracking Code: Sends non unique Product Code to Salesforce, Result: Error "An item not in the catalog was viewed".
- Catalog: ProductCode can be unique for items with only one article, Tracking Code: Sends the value of this specific product, Result: No error by Salesforce (seems to work). But how would you group multiple Articles under a productcode? This wouldn't be possible if ProductCode is unique.
- Catalog: ProductCode not unique, Tracking Code: Sends unique value which is stored under SkuID in Product Catalog, Result: "An item not in the catalog was viewed". With this test we tried if Salesforce might match to SkuID and not ProductCode field. But it seems that the data of the tracking code "item" is matched against ProductCode, where this value is obviously not stored.
- Now i tried to switch the values of productcode and skuid. So the field ProductCode would contain the articlenumber value and the field SkuID would be the productcode. Result: This is simply not possible because of your mapping functionality. Since i have to define the unique field when i start to upload the catalog, this field won't show up in the mapping view. Therefore it is impossible to pass those values to product code unless i would double that field [which would be completly missleading].
- Each Product has an own line in the product catalog, where the sku is artificial, since it is no article. Each article has a productcode which is artificial and doesn't relate to the product. But the productcode field has a unique value now. Result: Everything works, but i think it is not the way it should be.
The tracking code is implemented on product pages (not article pages) and looks like this:
<script type="text/javascript" src="//MID-Value.collect.igodigital.com/collect.js">
</script>
<script>
_etmc.push(["setOrgId", "MID-Value"]);
_etmc.push(["trackPageView",{ "item" : "P11111111111" }]);
</script>
When we uploaded the catalog we tried multiple things to make sure that there is not a mistake:
- First of all we tested different suffixes .pdv .psv .csv. ==> No Success
- We renamed the header fields of the catalog to ensure we didnt hit a keyword ==> No Success
- We doublechecked over special characters and encoding and all this stuff. ==> No Success
What can i do now? All options we did are either not working, really early work arounds or not usable for real scenarios. Is there some option i did not try? Is there anything i need to pay more attention on?
Additional Questions:
- How is it possible to track articles?
- Which json-"keyword" of trackPageView matches against the SkuID field of the product catalog?
- When you want to do recommendations based on the context of the current website the code looks like the one shown below. Does item relate to productcode or the SkuID field?
src="https://MID-VALUE.recs.igodigital.com/a/v2/MID-VALUE/product/recommend.json?item=sku" type="text/javascript">
Thank you for reading. I hope someone can tell a solution or some detailed insight in this.