# Shopify variant weight to shipping_weight

The Shopify variant weight is the shipping weight of the packaged item, and it maps to shipping_weight with its unit attached. It is not the product's net weight, which matters because unit pricing needs the net contents and taking the shipping weight for it is wrong on every product.

- **Canonical URL:** https://www.feedlab.io/knowledge/mappings/shopify-variant-weight-to-shipping-weight
- **Last reviewed:** 18 September 2026
- **Source:** feedlab knowledge base
- **Licence:** free to quote and cite with attribution to feedlab


## The Shopify side

| Property | Value |
| --- | --- |
| API field | `variant.weight + weight_unit` |
| Called | Weight |
| Found at | Product → Variants → edit variant → Shipping → Weight |


## Before and after

| In Shopify | In the feed | Note |
| --- | --- | --- |
| `weight 1.2, unit kg` | `1.2 kg` | Value and unit sent together. |
| `weight 850, unit g` | `0.85 kg` | Converted for consistency across the feed. |
| `weight 2.5, unit lb` | `1.13 kg` | Imperial source converted. The unit is per variant, so both appear in one catalogue. |
| `weight 0, digital product` | `(omitted)` | No shipping weight applies, so the attribute is omitted rather than sent as zero. |
| `weight 0, physical product` | `(needs attention)` | Almost certainly missing data rather than a weightless item. |



## The transformation, step by step

1. **Send the value with its unit** — shipping_weight is a number and a unit together, such as "1.2 kg". Shopify stores the unit separately per variant, so it has to be read alongside the number rather than assumed from the store's default.
2. **Read the unit per variant, not per store** — Shopify records the weight unit on the variant, so a catalogue built over time or imported from several sources genuinely mixes grams, kilograms, pounds and ounces. Assuming one unit for the catalogue is wrong by a factor of a thousand on some rows.
3. **Convert to a unit the channel accepts** — Channels accept a defined set of units. Converting to one consistent unit at generation time is also what makes the values comparable when you are checking them, which matters more than which unit you choose.
4. **Keep it out of unit pricing** — A jar of coffee weighs more than the coffee inside it. Unit pricing needs the net quantity, which is a different value from a different source, and using the shipping weight produces a unit price that is wrong and looks plausible.
5. **Handle zero and missing weights deliberately** — Digital products and gift cards have no weight, and plenty of physical products simply never had one entered. Zero is correct for the first and wrong for the second, so the two cases need distinguishing rather than sending zero for both.



## What goes wrong

### Mixed units inside one catalogue

The unit is a per-variant field, so imported products commonly carry grams while hand-created ones carry kilograms. A mapping that assumes the store default is wrong by a thousand times on part of the catalogue, and the resulting shipping costs are absurd enough to be noticed only after they are charged.

### Shipping weight used as net quantity

It is the most tempting mapping in the food and cosmetics verticals, because a weight already exists and unit pricing needs a weight. It is also always wrong, because packaging is included, and it produces a unit price that is consistently overstated.

### Multi-parcel products have one weight field

A dining set shipping as four boxes has a single weight value in Shopify. Whether that is the total or one box is not recorded, which makes weight-based shipping rates unreliable for exactly the products where shipping costs most.

### Zero is ambiguous

Zero means "no weight applies" for a gift card and "nobody filled this in" for a coffee table. Treating them the same either sends a nonsense weight for physical goods or omits a legitimate zero, and only one of those is visible.




## How feedlab maps it

feedlab reads the weight and its unit per variant, converts to one unit across the feed, and omits the attribute for products that do not require shipping rather than sending zero. Physical products with a zero or missing weight are reported in the preview, because that is missing data rather than a value.






## Frequently asked questions

### Is the Shopify weight field the shipping weight or the product weight?

The shipping weight of the packaged item, which is what shipping rates are calculated from. It is not the net weight of the contents, so it must not be used for unit pricing.

### Why are my feed weights wildly wrong on some products?

Because the weight unit is stored per variant and the mapping assumed one unit for the store. Imported products often carry grams where hand-created ones carry kilograms.

### What weight should a digital product have?

None. Omit the attribute rather than sending zero, and use the requires-shipping flag to distinguish it from a physical product whose weight was never entered.

### Can I use the weight for unit pricing?

No. It includes the packaging, so the unit price comes out wrong on every product. Unit pricing needs the net quantity, normally from a metafield.




## Primary sources

- [Google: shipping_weight attribute](https://support.google.com/merchants/answer/6324503)
- [Shopify: ProductVariant API reference](https://shopify.dev/docs/api/admin-graphql/latest/objects/ProductVariant)



