Below is an explanation of the expected functionality of the shipping values for Google Product feed, and a condition under which unexpected values are produced. This issue has been circumvented in Sellerdeck v18.01 (SD-6432 ) by adding an option to exclude a class from the Google Feed shipping cost calculation but I thought I'd just share the results of the last couple of hours' digging given the slightly confusing results, in case anyone is struggling to understand their results in v2016.
Versions tested: 16.03 and 18.00
Relevant section of Google Feed XML:
<g:shipping>
<g:country></g:country>
<g:service></g:service>
<g: price></g: price>
</g:shipping>
Explanation of Expected results:
The default value exported for "g:Country" appears to be the country code of the country selected for the merchant's address in Business Settings > Company/Contact. (This can be overridden to a hard-coded 'GB', or anything else in the feed XML).
"g:service" and "g: price" are determined by checking each of the shipping classes available within the Shipping Zone that includes the merchant's home country (irrespective of any overrides for g:Country as referred to above) and then choosing the cheapest shipping service available for that zone, based on the product's weight (assuming a weight-based scale). All reasonable so far.
Apparent Bug:
If a class is available within the zone that has the 'Free Shipping' checkbox checked (e.g. 'Collect from Store') then this will be considered the 'cheapest' option and so return a g: price of 0.00 in the feed. That in itself may be questionable logic but you could argue for it being desirable depending on the reason for the free shipping class: Clearly 'collect from store' is not relevant when determining the minimum shipping cost for a Google Feed, but a similarly configured 'Free Standard Shipping' - similar to Amazon's offering, would be relevent to Google feed.
That aside, the bug however is that the g:service name exported in this scenario is the name of cheapest non-free class, rather than the free class itself. So let's say the cheapest non-free class for the product's weight was "Standard Shipping" / 2.76 GBP. With a free class called 'Collect from Store' in play, the output would be 'Standard Shipping' / 0.00 GBP instead of 'Collect From Store' / 0.00 GBP.
Conclusion:
It looks like the Sellerdeck code is excluding the free shipping class from consideration of which is the 'cheapest class' when determining g:service name to export in the feed, but the same check is not in place when determining the g: price, resulting in the two values being taken from different class records.
Versions tested: 16.03 and 18.00
Relevant section of Google Feed XML:
<g:shipping>
<g:country></g:country>
<g:service></g:service>
<g: price></g: price>
</g:shipping>
Explanation of Expected results:
The default value exported for "g:Country" appears to be the country code of the country selected for the merchant's address in Business Settings > Company/Contact. (This can be overridden to a hard-coded 'GB', or anything else in the feed XML).
"g:service" and "g: price" are determined by checking each of the shipping classes available within the Shipping Zone that includes the merchant's home country (irrespective of any overrides for g:Country as referred to above) and then choosing the cheapest shipping service available for that zone, based on the product's weight (assuming a weight-based scale). All reasonable so far.
Apparent Bug:
If a class is available within the zone that has the 'Free Shipping' checkbox checked (e.g. 'Collect from Store') then this will be considered the 'cheapest' option and so return a g: price of 0.00 in the feed. That in itself may be questionable logic but you could argue for it being desirable depending on the reason for the free shipping class: Clearly 'collect from store' is not relevant when determining the minimum shipping cost for a Google Feed, but a similarly configured 'Free Standard Shipping' - similar to Amazon's offering, would be relevent to Google feed.
That aside, the bug however is that the g:service name exported in this scenario is the name of cheapest non-free class, rather than the free class itself. So let's say the cheapest non-free class for the product's weight was "Standard Shipping" / 2.76 GBP. With a free class called 'Collect from Store' in play, the output would be 'Standard Shipping' / 0.00 GBP instead of 'Collect From Store' / 0.00 GBP.
Conclusion:
It looks like the Sellerdeck code is excluding the free shipping class from consideration of which is the 'cheapest class' when determining g:service name to export in the feed, but the same check is not in place when determining the g: price, resulting in the two values being taken from different class records.
Comment