What is shipping margin?

Shipping margin is whether delivery pays for itself: what customers were charged for shipping minus what the carriers charged you, broken down per carrier. Most stores treat shipping as a pass-through and are wrong in one direction or the other; this widget says which, and by how much per carrier.

Formula

charged         = Σ shipping charged − Σ shipping refunded
shipping margin = charged − Σ carrier cost   (per carrier)

Worked example

Over a month, Carrier A: €9,200 charged to customers, €7,800 of carrier cost — +€1,400. Carrier B: €2,100 charged, €4,900 cost — −€2,800, and the free-shipping columns show why: 480 of its orders shipped free above the cart threshold, costing €3,300 of unrecovered carriage. The threshold is a marketing decision; this widget prices it.

How Saldo Metrics computes it

Each order on v_orders carries shipping_charged_base (what the customer paid), shipping_refunded_base (shipping given back to the customer, summed from canonical.fact_shipping_refund) and shipping_cost_base (what the carrier charges you), all EUR. The "Charged" column is net of refunded shipping: a shipping fee you refunded is not income. The cost side is resolved from your configured carrier tariffs — tiered by zone, weight and order value — by a single resolver that writes the per-order cost, so every surface reads one consistent figure. The widget groups the selected period per carrier: orders, charged, cost, margin, plus two free-shipping columns — how many orders shipped free despite a real carrier cost, and what that unrecovered cost totalled. Those two test the shipping the order was charged, before any refund: refunding a shipping fee does not make it a free-shipping order. Orders with no resolved cost contribute charged-side only, so a thin tariff setup shows optimistic margins until tariffs are complete. There is no separate pre-aggregated view: the widget reads v_orders so it follows the dashboard's period, store, status and country filters.

Why it matters

Shipping sits outside product margin but inside every order's real economics. Contribution margin subtracts the carrier cost per order, but does not yet add the shipping the customer paid, so this view is where shipping income and cost meet. It isolates the policy levers: carrier mix, rate-card negotiation, and the free-shipping threshold. A negative shipping margin is not automatically wrong (free shipping converts), but it should be a priced decision, not a surprise.

Common mistakes

  • Judging carriers on margin alone. A carrier can be "unprofitable" here because it serves the heavy, remote or free-shipping orders; mix differs before efficiency does.
  • Reading incomplete tariffs as good margin. Unresolved carrier costs make margin look better than it is; complete the tariff tables before trusting the split.
  • Averaging away the free-shipping orders. The blended margin can look fine while the free-shipping subtotal quietly funds a fifth of your carriage; the dedicated columns exist to stop that.

Where you see this in the app

The Shipping Margin dashboard widget, one row per carrier.