Dynamic shipping costs in product comparison
Description
Highlights
About the Extension
A core feature from Shopware 5 returns with this plugin. Anyone feeding product data to Google Shopping, idealo or another comparison portal knew the Smarty modifier for shipping costs there. Shopware 6 offers no replacement. Shipping costs in the feed have to be maintained as a flat rate, and sooner or later they drift away from what the shop actually charges at the checkout.
This plugin closes that gap: a Twig filter for the product export calculates each product's shipping costs using exactly the same logic as the storefront. Instead of a stored flat rate, every product runs through the same price calculation as in the checkout. Tiered prices, weight- and value-based shipping costs, free shipping thresholds and any condition built in the Rule Builder therefore apply in the feed just as they do in the shop.
This is what it looks like in the export template:
{{ product|ott_shipping_cost('shipping_standard', 'DE') }}
Shipping method, country, payment method and customer group are set directly in the template, for each feed exactly the combination the portal expects. Shipping and payment methods are addressed by their technical name, the country by its ISO code and the customer group by its name:
{{ product|ott_shipping_cost('shipping_express', 'AT', 'payment_prepayment', 'B2B') }}
Without any arguments, the sales channel's own settings are used. This lets you run several feeds with different shipping methods and destination countries side by side, without maintaining central values anywhere. If you need the net amount or the tax portions, the function ott_shipping_price returns the complete calculated price instead of a plain number.
The filter ott_shipping_cost takes six optional arguments in this order: shipping method (technical name), country (ISO code), payment method (technical name), customer group (name), quantity and fallback value. An omitted argument uses the sales channel setting, and the quantity defaults to the product's minimum purchase quantity. The fallback value is returned when no price can be determined, for example for a blocked shipping method:
{{ product|ott_shipping_cost('shipping_standard', 'DE', null, null, 1, 4.90) }}
The function ott_shipping_price takes the product as its first argument, followed by the same arguments without the fallback value. It returns the complete calculated price with total, unit price, quantity and tax portions, or no value when no price can be determined:
{% set price = ott_shipping_price(product, 'shipping_standard', 'DE') %}
{{ price ? price.totalPrice : '' }}
{{ price ? price.calculatedTaxes.amount : '' }}
Your benefits:
- Shipping costs in the feed match the shop, no duplicate maintenance, no price discrepancy at the checkout
- Full evaluation of the Rule Builder, including cart value, weight and cart contents
- A dedicated value per feed: shipping method, country, payment method, customer group and quantity freely selectable
- Amounts in the correct tax context: gross for gross customer groups, net for net customer groups
- Blocked shipping methods deliberately return no price, optionally with a fallback value for the portal's mandatory fields
- No interference with the product export itself: runs alongside other export plugins without conflicts
- Robust in operation: a value that cannot be determined never aborts the entire export, it is written to the log instead
- Optional result cache for large feeds that noticeably reduces runtime
This way you deliver to every portal the shipping costs your shop actually charges, avoiding price complaints, rejected feeds and disappointed customers at the checkout.
Details
- Available: English, German
- Latest update: 13 October 2026
- Publication date: 16 October 2026
- Version: 1.0.0
- Category: Price search engine / portal
Resources
Reviews (0)
About the Extension Partner
Ottscho IT
Partner Status
-
Shopware
Bronze Partner -
Shopware
Extension Partner
Details
- Ø-Rating: 4.9
- Partner since: 2014
- Extensions: 22
- Certifications: 2
Support
- Based in: Germany
- Speaks: German, English
- Response time: Quickly