Dynamic Tag Manager is great, but it seems to lack an interface for tracking s.products.
Thank you for the answer!
Theese suggestions may not solve the problem entirely, but they may help:
It is possible to find elements on a page through CSS selectors in data elements. For instance a CSS selector could be: .product-name. This selector would find every product name on the page. So if a customer has bought two products it would return an array of two strings:
Apple iPhone 5C 16GB
Samsung Galaxy S4 16GB
This requires that data elements can return an array of data. (I am not sure if it already does that.) So by letting data elements return an array of data it could be possible to handle multiple products on the page.
Another issue could be that there exists an internal mapping for categories (or other fields). So for instance purchases of tablets/smartphones maps to mobile and purchases of laptops/desktop maps to computer. In order to handle this issue a mapping table could be applied to a data element.
I hope that I express my ideas clearly.
As a heads up, this is how you use the "Custom Code" section of DTM to enable s.products:
Remember that if you're calling s.products in a Link (s.tl) tag then you'll want to set s.linkTrackVars!