Skip to main content
Card class: Non-HeroCategory: Ecommerce Platform

At a glance

Shipping revenue collected from customers as a percentage of total revenue. Useful for spotting when free-shipping thresholds, carrier rate hikes, or shipping-promotion campaigns shift customer-paid shipping economics. This is the customer-paid shipping figure, not the merchant-cost shipping figure. True shipping margin requires combining this with carrier-side cost data from a shipping connector (ShipStation, EasyPost).
What it countsSUM(shipping_amount) ÷ SUM(grand_total) × 100 over orders in the 30-day window. shipping_amount is the post-discount shipping the customer paid (after any free-shipping coupons or thresholds).
API fieldshipping_amount, shipping_discount_amount, shipping_tax_amount, grand_total from GET /rest/V1/orders.
Why it’s a percentage of revenue, not a percentage of ordersA 5% rate on a 200AOVis200 AOV is 10/order; the same 5% on a 400AOVis400 AOV is 20/order. Value-weighting matches what Finance cares about (the shipping-revenue-to-merchant-revenue ratio). For a per-order shipping average, use Total Shipping divided by Total Orders.
VAT / tax treatmentThe numerator (shipping_amount) is excl-tax in Adobe Commerce by default, the shipping-tax sits separately in shipping_tax_amount. The denominator (grand_total) is incl-tax. So the percentage is biased low (numerator is net, denominator is gross). For UK/EU merchants this matters; the bias is roughly 1.6-1.8% absolute (20% VAT × shipping share). For an apples-to-apples comparison switch denominator to grand_total - tax_amount via the manifest, or numerator to shipping_amount + shipping_tax_amount.
Shipping inclusionThe card IS the shipping inclusion view; both the post-discount paid shipping_amount and the pre-discount listed shipping_amount + shipping_discount_amount are exposed.
DiscountsShipping discounts (free-shipping coupons, threshold-based free shipping via aitoc_freeshipping and similar) are already deducted from shipping_amount. The shipping_discount_amount field shows the discount portion separately.
Cancelled / refundedCancelled orders contribute to neither side (they are excluded from this calculation by default). Refunded shipping reduces the merchant’s net shipping revenue but is not subtracted here, the card is creation-time, not net-of-refund.
CurrencyMixed-currency for both numerator and denominator; the ratio is roughly invariant. For FX-neutral, use base_shipping_amount ÷ base_grand_total.
Multi-store scopeAll Store Views by default. UK merchants typically run higher shipping percentages (5-9%) than US (3-6%) due to higher carrier rates.
Time window30D rolling.
Alert trigger>12% absolute. Indicates margin pressure: either free-shipping threshold isn’t being hit, or carriers raised rates without merchant adjusting policy, or AOV dropped while shipping costs stayed fixed.
Sentiment keyshipping_pct
Rolesowner, operations

Calculation

Calculated automatically from your Adobe Commerce data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.

Worked example

A B2B+DTC homewares merchant on Adobe Commerce 2.4.7. UK base, GBP. 4,820 orders in last 30 days. Period: 14 Apr 26 to 13 May 26. Aggregate shipping figures:
ComponentValue (GBP)
SUM(shipping_amount) (post-discount, excl tax)£58,400
SUM(shipping_discount_amount)£14,200 (free-shipping coupons absorbed)
Pre-discount listed shipping (shipping_amount + shipping_discount_amount)£72,600
SUM(shipping_tax_amount)£11,680 (20% VAT on shipping)
SUM(grand_total)£950,000
SUM(grand_total - tax_amount) (net of all VAT)£791,667
Card calculations under different definitions:
DefinitionNumeratorDenominatorResult
Card default (excl-tax shipping ÷ incl-tax revenue)£58,400£950,0006.15%
Net-of-VAT both sides£58,400£791,6677.38%
Incl-tax shipping ÷ incl-tax revenue£70,080£950,0007.38%
Pre-discount shipping ÷ revenue (what shipping “would have been” without free-ship promos)£72,600£950,0007.64%
Insight pattern:
  1. Card default reads 6.15%. Within the healthy 4-8% band for UK merchants. Not breaching the 12% alert threshold.
  2. VAT bias is real. The “fair” comparison (both sides net or both sides gross) is 7.38%. Always report the same definition consistently to Finance.
  3. Shipping discounts cost £14,200 in the period. That’s 1.49% of revenue absorbed as free-shipping promos. If the merchant raised the free-ship threshold from £75 to £85, AOV could shift up; analytics should A/B before changing.
  4. Slice by Store View: UK shipping % is 6.5%; US shipping % (USD orders) is 4.2%. Difference is mostly Royal Mail vs USPS rate spread, partly different free-ship thresholds.
  5. Trend over prior period (15 Mar to 13 Apr 26): 5.4%. Recent rise from 5.4% to 6.15% suggests either AOV dropped (it did, from £215 to £197 due to the supplier sizing problem causing return-replacements at lower per-line value) or shipping rates rose (carriers raised in late Mar). Investigate via Total Shipping (the absolute figure).
  6. Action implication: if the trend is AOV-driven (most likely here), fixing the supplier issue restores AOV and the percentage drops back; if rate-driven, renegotiate carrier or pass through to free-ship threshold.
  7. Cross-link with carrier-side data (shipstation.shipping_cost): customer-paid £58,400. Merchant-paid carriers £52,800 (cost). Net shipping margin ~9.6%. If this card’s % rises while ShipStation’s cost-% rises faster, margin is shrinking; raise the customer-paid rate or threshold.

Sibling cards merchants should reference together

CardWhy pair it with Shipping Cost as % of Revenue
Total ShippingThe numerator absolute.
Total RevenueThe denominator.
Free vs Paid ShippingComposition of the shipping mix; free-share rising drags this card up.
AOVThe headline rate against which shipping % is normalised.
Discount % of RevenueSister rate; together they show “what % of revenue we give back”.
Refund ValueRefunded shipping is invisible here but real cost.
Total DiscountIncludes shipping discount portion.
shipstation.shipping_cost_pctCarrier-side cost; pair to compute true margin.
shopify.shipping_pctShopify peer.

Reconciling against the vendor’s own dashboard

Where to look in Adobe Commerce Admin: Adobe Commerce does not surface shipping % as a single Admin number; it must be derived. Components:
Reports > Sales > Shipping for the shipping value. Set “Show By” to the period. Reports > Sales > Orders for the revenue value. Set the same period and divide.
For per-shipping-method breakdown:
Reports > Sales > Shipping with “Show By” set to “Shipping Method”. Lets you see whether the % is driven by an expensive method (Royal Mail Special Delivery, FedEx Priority) or by a high free-ship absorption.
Why our number may legitimately differ from a manual Admin computation:
ReasonDirection of divergence
VAT framing. Admin’s Reports > Sales > Shipping aggregates shipping_amount (excl-tax) by default; Reports > Sales > Orders aggregates grand_total (incl-tax). A merchant manually dividing the two gets the same biased low percentage that this card’s default shows. To get the “fair” net-of-VAT percentage, both sides must be net.None vs Admin default; both biased low
Currency. Both Admin reports default to base_currency; this card defaults to display-currency mixed. Use base for like-for-like.Material for multi-currency stores
Reports indexer lag. Both Admin reports use nightly-aggregated tables. Today’s orders may not show until tomorrow. This card refreshes every 5-15 min.Vortex IQ ahead by ~12-24h
Cancelled inclusion. The card excludes canceled orders from both numerator and denominator (cancelled orders typically have shipping_amount=0 so don’t change the ratio much, but excluding them gives a cleaner answer). Admin may include or exclude depending on the report’s status filter.Minor
Time-zone, sync lag. Standard.Minor
Internal identity (within Adobe Commerce): shipping_pct = SUM(shipping_amount) ÷ SUM(grand_total) × 100 Component cards: Cross-connector reconciliation (when these connectors are connected for this merchant):
CardExpected relationshipWhat divergence tells you
shipstation.shipping_cost_pctCarrier cost ratio. Should be roughly 80-95% of this card’s % for healthy merchants (i.e., merchant absorbs 5-20% of carrier cost)If ShipStation cost-% > this card’s %, merchant is paying more in carriers than it collects, shipping is a cost centre. Renegotiate or raise customer-paid rates.
shopify.shipping_pctSame metric on Shopify, structurally similarCross-platform reference for agencies.

Known limitations / merchant FAQs

Why is the percentage lower than my “real” shipping rate? Because the default uses excl-tax shipping_amount over incl-tax grand_total. This biases low. For a true rate, switch the manifest to net-of-VAT both sides or incl-tax both sides. The bias is roughly 1.6-1.8 absolute points for UK/EU merchants (20% VAT on shipping share). Does this include free shipping? The free-shipping orders contribute zero to the numerator (shipping_amount=0 after the discount) and their full grand_total to the denominator. So a high free-ship-share drags this percentage down. To see “what shipping would cost without promos”, use the pre-discount view (shipping_amount + shipping_discount_amount) which is exposed on the card detail panel. My free-ship threshold dragged the % down, is that good? Depends on the AOV impact. Free-ship promos that lift AOV above the threshold by enough to cover the absorbed shipping are net positive. Free-ship blanket campaigns (free shipping on all orders) are usually net negative; the % drops but margin drops faster. Use google_analytics.ga_aov_lift_from_freeship for the proper attribution. Why does the card not include the merchant’s actual carrier cost? Because Adobe Commerce only knows what the customer paid, not what the merchant paid the carrier. To compute true shipping margin, connect ShipStation (or your carrier integration) and pair this card with shipstation.shipping_cost. The Vortex IQ workspace combines them into a “shipping margin” view. B2B orders, are they in this card? Yes. B2B often uses freight (LTL, FTL) charged separately of the platform; those orders may show low or zero shipping in Adobe and the freight bill arrives via email/PDF. If your B2B traffic is freight-heavy and freight is invoiced outside Adobe, this card under-reports the real shipping economics for B2B. Filter to DTC-only via Customer Group for cleaner numbers. Why is my % rising even though I haven’t changed anything? Three common causes: (1) carriers raised rates (most common, often Q1 or post-fuel-surcharge); (2) AOV dropped (shipping is a fixed cost per order; lower AOV = higher %); (3) order mix shifted to cheaper SKUs (lower per-line value but same shipping, ratio rises). Cross-link with AOV and the carrier rate cards. The 12% threshold isn’t right for my heavy-goods category, can I change? Yes. Heavy-goods (furniture, machinery) routinely run at 15-25% shipping. Customise the threshold in the manifest. The +relative trigger (week-on-week jump) is more universally useful. My multi-store, can I see per-Store-View shipping %? Yes. Filter by store_id. Comparing UK vs US Store Views often reveals very different shipping economics worth investigating. Refunded shipping, does it appear here? No, the card is creation-time. Refunded shipping is captured separately on Credit Memos (see Refund Value). For “net shipping economics” you would compute (collected − refunded − carrier cost) per period; that requires combining cards. Why doesn’t ShipStation match? ShipStation knows what you paid carriers. This card knows what customers paid you. They are two sides of a margin calculation, not the same number. Both are correct.

Tracked live in Vortex IQ Nerve Centre

Shipping Cost as % of Revenue is one of hundreds of KPI pulses Vortex IQ tracks across Adobe Commerce and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.