Weight-Based Rates: Shipping costs based on weight
How to set up weight-based shipping in Shoporama. Create weight ranges in grams, set prices by country and shipping method, and see what happens when a product’s weight is missing.
If you sell both light, small items and heavy goods, a single flat shipping rate rarely works for both. With weight-based pricing, you let the shipping cost increase in proportion to the weight of the customer’s cart, so you neither lose money on heavy orders nor scare customers away from the light ones.
In short: Weight-based pricing is set up under Store → Shipping → Weight-based Pricing. You create a number of weight ranges in grams and assign each range a price per country and per shipping method. The total weight of the cart determines which range the customer falls into.
How Shoporama interprets a weight range
The most important thing to understand is that a weight range is a lower limit. A range of 2,000 grams means “2 kg or more.” Shoporama finds the highest range the cart has reached and applies the price from that range.
- The cart weighs less than the lowest interval: the standard price from Store → Delivery → Shipping Rates is used.
- The cart meets or exceeds an interval: the price for that interval is used instead.
- The cart falls between two ranges: the price from the lower range is used. A cart weighing 1,500 grams uses the 1,000-gram price.
- The cart exceeds the highest weight range: the price for the highest weight range is used. No surcharge is added.
Important: Because the highest weight range also covers everything above it, it must be high enough to accommodate your heaviest realistic orders. Otherwise, you’ll be shipping a 40-kg order at the price of your top weight range.
Step 1: Assign a weight to your products
Weight-based pricing can only work if the products have a weight. It is always specified in whole grams, so 1 kg is written as 1000.
- Go to Products → All Products and click on the product
- Open the General tab
- Fill in the “Optional weight in grams for shipping” field with the product’s shipping weight—that is, the weight as it is in the package—and click Save
If you need to enter weights for many items, there are two shortcuts: bulk editing at the bottom of the product overview, where you select the items that weigh the same and fill in the “Weight” field, or an import under Products → Import/Export, where you link a column in the file to the “Weight (for shipping)” field. See the guide for CSV import.
Step 2: Create your weight ranges
- Go to Store → Shipping → Weight-Based Pricing
- Enter a number in grams in the “Enter weight in grams...” field under the “Intervals” heading, and press Enter or click “Add.” The number appears as a small label below the field
- Repeat for each interval. You can remove an interval by clicking the checkmark on the label
- Click Save Intervals
The intervals are automatically sorted from lowest to highest, and the same number can only be created once. Four to six steps cover most shops. Each new interval adds one more price field per country and shipping method. Set your steps where your shipping provider’s own prices change.
Step 3: Set prices by country and shipping method
Once you’ve saved at least one range, a price table appears under the heading “Prices Excluding Tax.” The table has one row per country and one column per shipping method, and in each cell you’ll see a price field per range, labeled, for example, “1,000 grams:”. All fields start at 0.00. Fill them in for the combinations of country and shipping method you offer, and click Save.
Prices are always listed excluding VAT, even if your product prices are displayed including VAT. At checkout, the destination country’s VAT rate is automatically added, unless you’ve checked the “Shipping is VAT-exempt” box for that shipping method. Fields set to 0 are highlighted in yellow as a reminder, since 0 is a valid price and means free shipping within that weight range.
Please note: A field you leave blank does not mean “use the standard shipping rate.” It means 0 DKK. As soon as the cart total falls within a weight range, the weight-based price applies for that specific country and shipping method—even if the field shows 0. The price next to the shipping method at checkout may even continue to show the base price, making the error difficult to spot. The entire table is saved every time you click Save: if you remove a weight range, the prices for that specific range disappear, and if you remove all weight ranges, all weight-based prices are deleted, causing the store to revert to the standard shipping rates.
A concrete example
The weight ranges of 1,000, 2,000, 5,000, and 10,000 grams cost 29, 39, 59, and 89 DKK excluding VAT, and the standard shipping rate to Denmark is 20 DKK excluding VAT. With 25% VAT, the customer sees:
- 500 grams: below the lowest interval, so the standard price applies. 25.00 DKK
- 1,000 and 1,500 grams: first price range. 36.25 DKK
- 2,000 grams: second bracket. 48.75 DKK
- 25,000 grams: above the highest weight bracket, so the top tier applies. 111.25 DKK
Interaction with the rest of the shipping setup
Shipping Methods
The columns in the weight table correspond to your shipping methods from Store → Delivery → Shipping Methods. If you don’t have any yet, start there: see the guide on creating a new shipping option. Note that the “Weight” column in that overview has nothing to do with kilograms. It only controls the display order.
For each individual shipping method, you can set a Max. Weight in grams—for example, 20000 for 20 kg—so that the method cannot be selected for heavier carts. The checkbox “Show the method anyway when the cart is too heavy” determines whether it disappears completely or remains as unavailable. The built-in themes support this. A custom-built theme must be coded to support it.
Shipping Rates
The rates under Store → Shipping → Shipping Rates are your base rates per country and shipping method. These rates apply when the cart weighs less than your lowest weight range, or when you haven’t set up any weight ranges at all. Once the cart has reached a weight range, the weight-based price applies, regardless of the base price.
Tip: Set the weight-based shipping rates to start at the same level as the base rate and increase from there. If you set a weight-based price lower than the base price for the same country and shipping method, the price displayed next to the shipping method at checkout may show the base price, while the order is calculated using the lower weight-based price.
Free Shipping and Discount Codes
Free shipping takes precedence over the weight-based price. If the order exceeds the threshold for “Free Shipping Over,” the shipping cost will be 0 kr. regardless of weight, and the same applies to a discount code offering free shipping. If you want to exclude a heavy shipment, check the “Never free shipping” box for that shipping method. Read more in the article about free shipping over a certain amount.
Fixed shipping price for a product
If a product has its own price in the “Shipping without VAT” (or “Shipping with VAT”) field, it competes with the weight-based shipping price. The option at the top of “Shipping Rates” determines how: “Highest Price Wins” uses the higher of the two, and “Product Shipping Always Wins” uses the product’s price when all items in the cart have a fixed shipping rate.
What happens if a product has no weight?
A product without a weight is counted as 0 grams. This is the single error that most often makes weight-based shipping rates appear to not work, and it causes two issues:
- None of the items in the cart have a weight: the cart weighs 0, the weight-based shipping rates are skipped, and the customer is charged the standard shipping rate. No error message is displayed.
- Only some of the items have weights: the cart weighs too little, and the customer ends up in a price bracket that’s too low. This is the more costly of the two errors, because you end up paying the difference on every order yourself.
Therefore, make weight a standard part of your routine when creating new products. You can identify any gaps by exporting the products to CSV and sorting by the weight column; on each individual order, you can view the calculated weight under “Weight.”
The “Default Packaging Weight (grams)” field under Store → Webshop → General, in the Orders tab, is added to the order’s total weight, so shipping labels are more accurate. However, the packaging weight is not included when the shopping cart selects weight ranges, so set your ranges based on the items’ actual weights.
How to Test the Setup
- Add an item to the cart that weighs less than your lowest weight range. The shipping cost should be your standard rate.
- Add more items so that the cart passes through the weight ranges one by one, and check that the price increases as expected.
- Change the delivery country and repeat. Remember that each country has its own row in the table, so a country with empty weight prices will show free shipping, not the standard rate. Read more in the article about countries and currencies.
- Finally, add an item with no weight to the cart and check that the result still makes sense.
For the tech-savvy
- Weight is stored as an integer in grams per product. No decimals—so 0.5 kg is written as 500.
- The weight is assigned to the product, not to the individual variant, so all variants of the same product share the same weight. If shipping costs need to be precise for variants with very different weights, they must be created as separate products.
- In the product API, the field is called ` shipping_weight ` and is specified in grams, so weights can be updated from your ERP or PIM system.
Frequently Asked Questions
Do I need to weigh all my items before I can get started?
You need to know the weight of the items to be included in the calculation, but it doesn’t have to be precise down to the millimeter. Most people use a standard package scale and round up to the nearest 10 or 50 grams so you don’t end up paying the difference yourself.
Why doesn’t anything happen after I’ve set up weight-based prices?
The most common reason is that the products in the test cart don’t have a weight, so the cart weighs 0 grams and reverts to the standard shipping rate. Also check that both the weight intervals and the price table have been saved, and that the price fields for the specific country and shipping method you’re testing actually contain an amount and aren’t set to 0.
Can I have different weight-based prices for Denmark and other countries?
Yes. The price table has a row per country, so each country can have its own pricing tier. The weight intervals themselves, however, are common to the entire store. If you want additional tiers for international shipping, create them and copy the price from the tier below for those countries where that tier shouldn’t cost extra. Never leave them set to 0, because then shipping will be free for those countries.
How do I update the weight for 800 products?
Use the bulk edit feature at the bottom of the product overview for groups of items that weigh the same, or import a CSV file under Products → Import/Export and link a column in the file to the Weight (for shipping) field. If you have an ERP system, the weight can also be submitted via the product API.
Do I need to account for shipping differently when the price depends on weight?
No. The shipping appears as a regular shipping line item on the order with the VAT rate specified by the destination country, just like a fixed shipping price. The weight only affects how the amount is calculated.
What if the customer falls within both a weight range and the free shipping threshold?
Free shipping takes precedence, and the customer pays 0 kr. in shipping. If you want to ensure that a specific shipping method is never free, check the “Never free shipping” box for that shipping method.
Can I use weight-based rates together with a maximum weight for a shipping method?
Yes, and it’s a good combination. The weight-based rates determine the price, and the maximum weight ensures that the customer can’t select a package pickup for something that will never fit through the door. Set the maximum weight to what your shipping carrier actually accepts, e.g., 20,000 grams.
Do weight-based rates also apply to subscription orders?
If the cart contains only subscription items, the subscription rate from Shipping Rates is used instead of the weight-based rate. If the customer mixes subscription and regular items, shipping is calculated as for a regular order, and the weight-based rate may apply.
If you’re unsure how to set up your shipping configuration, please email support@shoporama.dk. Feel free to let us know the typical weights of your items and what you pay your shipping carrier.
Related articles
Import products via CSV
Complete guide to importing products with a CSV file in Shoporama - including format, fields and tips.
Create a new shipping option
Guide to creating new shipping options and assigning them to countries in Shoporama.
Free shipping over a certain amount
How to set up free shipping above a certain amount in Shoporama. The amount limit is set per country under Store, Shipping, Countries, and applies...
Countries and currencies
Guide to setting up countries, VAT rates, VAT zones, shipping options and currency in your Shoporama online store.
Create country
Guide to creating a new country as a delivery option in your Shoporama online shop.
Checkout flow and shipping calculation
Guide for developers to implement shipping in the checkout flow of a Shoporama theme.