Where orders actually get lost
Three things kill cart conversion. The first is showing the shipping price only after the customer has entered their phone and email. They've already put in effort, and then they find out that a $40 product comes with another $12 on top. The reaction is predictable.
The second is a line saying "we'll calculate this after you order" instead of a number. To a buyer, that reads as "the amount could be anything". The third is a calculation that lies: the site says $5, then someone calls and says $10. Technically the order exists, but it rarely gets paid, and the bad taste stays.
Test your own site today. Add a product to the cart and note at which step you first see the shipping cost and the full amount due. Do it on a phone, not a laptop - the screen is shorter there and every problem is more obvious.
Four ways to calculate cost, from simple to complex
Don't start with an integration. Pick the cheapest option that covers the geography your orders actually come from.
- Flat rate. One price locally, one nationally. Works when the spread between real rates is small and you're willing to average: you lose a little on some orders, gain a little on others.
- Free above an order value. Also a flat rate, but with a threshold. Set the threshold from your margin, not from what a competitor does: if your average order is $30 and the threshold is $35, you'll push order values up; if the threshold is $120, it's just a line of text nobody acts on.
- Zone table. A list of regions or distance bands with their own prices. Filled in by hand in the admin panel, updated once a quarter. For most small stores this is enough.
- Carrier API integration. The site asks the carrier for an exact price based on address, weight and dimensions, and shows it in the cart. Worth it when shipping is expensive relative to the product, or when dimensions vary a lot.
When you don't need a carrier integration
If you get 10-20 orders a month in one city and deliver them yourself, an integration is money thrown away. It's a separate piece of work, it needs maintenance, and it breaks when the carrier changes its API. A flat rate set up in 15 minutes gives you the same result.
You also don't need it when the product is light and uniform: a cosmetics set, a book, a t-shirt. The gap between the real rate and your flat rate will be a couple of dollars - easier to build into the product price than to pay for automation.
But if you sell furniture, building materials, aquariums or large appliances, where shipping can cost half the order, a flat rate is dangerous. One badly calculated order eats the profit from five correct ones. Here the integration pays for itself quickly.
One more case: if orders come from all over the country but there aren't many of them, start with a zone table built from your carrier's own rate calculator. Collect prices for 8-10 major cities, round up, and run that way until volume grows.
What the cart needs besides the number
Shipping calculation only works alongside a few things people often forget. Show the delivery time as well as the price - "3-5 days" affects the decision as much as the cost does. Offer a choice between courier delivery and a pickup point: pickup is cheaper, and some people will take it if you show both options side by side.
Collect the address with autocomplete, not as free text. A malformed address means a phone call later, an extra day, and sometimes a returned parcel at your expense. Autocomplete solves that at the entry point.
And show the total on one line: products plus shipping equals this. The customer needs to see the final amount before entering card details, otherwise you get an abandoned payment instead of an order.
How to brief a developer on this
Most shipping problems start at the spec stage, because the task is written as "add shipping calculation". Everyone then interprets it their own way, and the argument happens after delivery.
Gather specifics before the conversation: which carriers you use; the weight and dimensions of a typical order; whether any products can't go by post; whether local pickup is available; whether you ship internationally. Decide separately what to show if the carrier API doesn't respond - a flat-rate fallback or a "we'll confirm by phone" message. That scenario always happens, so agree on it up front.
Ask for a line-by-line quote: each carrier as its own line, address autocomplete as its own line, pickup point selection on a map as its own line. If you get one line saying "shipping - total", you won't be able to tell what to cut when the budget shrinks.
And insist on a testing stage with real addresses: your own city, a distant region, a pickup point, a heavy order. Calculation has to be checked on real data, not on a demo product weighing 0 kg.
Buyers need two numbers before checkout: what shipping costs and when it arrives. Start with the simplest method that covers your geography, and move to an integration only when the cost of a wrong calculation becomes noticeable.
Frequently asked
How much does it cost to set up shipping calculation?
It depends on the method. A flat rate or a zone table is part of the normal store build and barely needs its own budget. API integration is priced by the number of carriers and the complexity of the scenarios. We publish starting ranges for online stores and add-on work on our site, and the exact figure comes after a brief, once the carriers, dimensions and geography are clear.
Can we connect several carriers at once?
Yes, and for an online store that's standard: the buyer sees a few options with price and delivery time and picks one. But every carrier is a separate integration and separate maintenance. Start with the two you use most and add the rest once you see people actually choosing them.
What happens if the carrier API is down and the price won't calculate?
Define the fallback in advance. Usually that's a flat-rate placeholder with a note that the final amount will be confirmed, or a prompt to pick a different carrier. The key thing is not to leave an empty field - the buyer will read it as a broken site and leave.
Should we just make shipping free for everyone?
Only if it's already built into the product price and your margin can carry it. "Free" lifts conversion, but if you're simply absorbing the cost at a loss, you're scaling that loss. A threshold based on your average order value is safer.