Read this:
And this:
And now this that explains how the actual code works.
You can only use what's on the Available attributes list in the page, eg:
https://m5.omnivore.com.au/productAction/edit/259?retailerCode=barbeques-galore
Available attributes found (names are case-sensitive): $Features, $Keywords, $Type, $Warranty, $Wholesale, $amount, $brandName, $category, $categoryTrail, $colours, $currency, $detailedDescription, $detailed_description, $externalId, $mpn, $productName, $product_name, $retailerName, $rrp, $shortDescription, $short_description, $sizes, $sku, $standardColours, $tax, $techSpecs, $tech_specs, $weight
That list is made up of two sub-lists mixed together.
List no 1 is default attributes (or properties) found on all products in Omnivore. They might not have a value, but the attribute exists in the Omnivore product data model.
These are found in Abstract RetailerHelper.extractDefaultProductProperties
sku
brandName
retailerName
colours
sizes
standardColours
productName
externalId
mpn
shortDescription
detailedDescription
weight
techSpecs
currency
categoryTrail
category
rrp
amount
tax
Plus these aliases:
product_name
short_description
detailed_description
tech_specs
If you'd like something added to the default attributes list, dev work is needed.
List no 2 is made of the "extra attributes" for the product. You see these when you look at the product page in Omnivore in the section "Product Attributes". If it's not there. you can't use it. If it's there but its empty, it's not gonna show up.
You get stuff into the "extra attributes" depending on the type of retailer integration, this should be documented elsewhere.
When gathering the data for list no 2, the code looks at 100 products.
Because different products might have different attributes, if the retailer has more than 100 products and they have vastly different attributes, then the resulting list might miss some because they were not found in the 100 that the code looked at.
~