Weight and shipping data
How Shopify's variant weight and shipping settings map to Google's shipping_weight and shipping attributes, and why weight quietly drives the shipping cost shoppers see in your ads.
Shopify stores a weight on every variant and defines shipping in its own rate settings. Google Shopping shows shoppers an estimated shipping cost inside the ad, and for carrier-calculated rates it needs the item's shipping_weight from that Shopify weight. If weights are missing, wrong, or in the wrong unit, the shipping cost in your ad is wrong too, and a shipping cost that doesn't match the checkout is a disapproval risk.
What Shopify stores
Shopify holds shipping-relevant data in two places:
- Variant weight: a number plus a unit (grams, kilograms, ounces or pounds), set per variant. This is the only physical-dimension field Shopify stores natively; there is no standard length/width/height on a variant.
- Shipping settings: your rate rules, defined in Shopify's own shipping configuration (flat rates, weight-based tiers, carrier-calculated rates, free-shipping thresholds). These live in store settings, not on the product.
The weight is a product-level fact that travels into the feed. The rate rules are store configuration and generally don't travel into the feed as-is: but weight is what makes weight-based rates computable wherever they're calculated.
The mapping
| Shopify source | Google attribute | Notes |
|---|---|---|
| Variant weight + unit | shipping_weight |
e.g. 1.5 kg; needed for carrier/weight-based rates |
| Shipping rate rules | shipping (optional) |
Often set in Merchant Center instead of the feed |
| (no native field) | shipping_length / _width / _height |
Shopify has no standard dimensions; dimensional-weight carriers need these separately |
shipping_weight is the one that comes straight from Shopify. It's the item's weight expressed with its unit, and Google uses it wherever shipping is worked out by weight.
Why weight quietly matters
Google Shopping ads show an estimated shipping cost inside the ad, before the click. That estimate has to come from somewhere:
- If you set flat or free shipping in Merchant Center, weight barely matters: the cost is fixed.
- If your shipping is carrier-calculated or weight-tiered, Google needs each item's
shipping_weightto work out the cost. A missing or zero weight produces a wrong estimate: often £0.00 or a default: and a heavy item advertised with too-low shipping either misleads the shopper or disagrees with what checkout charges.
That last point is the risk. Google compares the shipping (and price) it advertised against what your landing page and checkout actually charge. A shipping cost in the ad that doesn't match the shipping at checkout is a mismatch (the same class of problem as a price mismatch) and can lead to disapproval, not just a mispriced ad.
Where weight data goes wrong in Shopify
Because Shopify never requires a weight, the field is a reliable source of gaps and errors:
- Zero or empty weights. Extremely common: the field defaults to 0 and nobody fills it. Fine for flat-rate shipping; broken for weight-based.
- Unit mismatches. A variant weighed in grams but with the unit left on kilograms is off by 1,000×. A 250 g mug listed as 250 kg produces an absurd shipping estimate.
- Product weight vs shipping weight. The item weighs 400 g but ships in a 900 g box with packaging. Carriers bill the parcel, so a bare product weight under-estimates real shipping.
- No dimensions at all. For bulky-but-light items (a duvet, a lampshade), carriers charge on dimensional weight, which Shopify can't express: so weight alone under-prices shipping.
Deep dive How one wrong weight misprices an ad
Follow a single mis-weighted variant through the feed to see why this is more than a data-quality nicety.
Say you sell a cast-iron pan. Its true shipping weight with packaging is about 3.2 kg, but the variant weight in Shopify was left at 0: nobody filled it during import. Your Merchant Center shipping is set to carrier-calculated by weight.
- In the feed,
shipping_weightreads 0 kg (or is absent). - Google calculates the carrier rate for a 0 kg parcel: effectively free or a floor rate, say £0.00–£2.99.
- The ad shows "+ £0.00 shipping", making the pan look cheaper to deliver than every honest competitor. Attractive: and wrong.
- At checkout, your carrier rate for a real 3.2 kg parcel is £6.95.
- Google's crawl compares the £0.00 it advertised with the £6.95 the shopper actually pays and flags a shipping mismatch. Best case, the ad is quietly deprioritised; worse case, the item is disapproved for a shipping-cost discrepancy.
The inverse is just as damaging in the other direction: a gram/kilogram unit slip turns a 250 g item into 250 kg, Google estimates freight-level shipping, and the ad shows "+ £48 shipping": so nobody clicks, and you never even see an error because Shopify stored exactly what it was told.
The fix isn't glamorous: real per-variant weights, correct units, and packaged weight rather than bare product weight where it matters. Because /tools reads your Shopify weights and evaluates them for plausibility (flagging zeros, unit outliers and suspiciously round numbers) the mis-weighted variants surface as feed-health issues rather than as mispriced ads you discover from a sales dip. The evaluation and any corrections live in /tools' supplemental layer; your Shopify weight fields are read, never rewritten, so fixing a flagged weight is always your call to make in Shopify.
How /tools handles this
/tools maps each variant's weight and unit to shipping_weight and checks it for the failure modes above (zeros, implausible values and likely unit slips) so weight-driven shipping estimates come from data that's actually been looked at. Where your shipping is flat or set in Merchant Center, weight is lower-stakes and treated accordingly. Everything is written to /tools' supplemental feed layer; your Shopify weight and shipping settings are read, never overwritten. Weight coverage and plausibility feed into your Feed Health Score, and availability (the other pre-click promise Google checks) is covered in inventory and availability sync.
Frequently asked questions
Which Shopify field becomes Google's shipping_weight?
The variant Weight field, with its unit (g, kg, oz, lb). Google needs it whenever your shipping is carrier-calculated by weight, an empty or wrong weight makes the estimated shipping cost in your ad wrong.
Do I have to send shipping cost in the feed?
Not always. Many merchants set shipping rates in Merchant Center directly. But if your rates depend on weight, Google needs each item's shipping_weight to calculate them, that's where the Shopify weight comes in.
What if my weights are all zero?
Zero or missing weights are common in Shopify catalogues because the field isn't required. For carrier-calculated shipping that produces a wrong or zero shipping estimate, which can misprice your ad and, if it disagrees with checkout, risk a disapproval.