
One aerosol is in the cart. Destination is a domestic zone. The cheap parcel rate must not appear; a hazmat line should. The product already stores `custom.shipping_class = hazmat`. Shopify shipping rule product metafield is that value on the rates canvas — not a “Hazmat” collection someone forgets to update. Checked 9 November 2026 on the OO - Shipping Rates & Rules listing, docs Conditions (Product & variant metafield conditions) and Product dimensions, plus Shopify Help Metafields. If Shopify moves the Advanced gate for carrier rates, or the metafield condition leaves the docs, re-read those before you say “a collection is enough”.
Shipping rules by collection is a different product condition. Here the metafield value is the switch.
Admin shipping: zones, weight, price, sometimes a carrier. Help Metafields: you can show packing notes on the product page. That does not change the checkout rate. Location metafields steer order *routing*, not the line the shopper pays. A “Hazmat” collection works until a new SKU publishes without it.
L×W×H for volume is another store: the app keeps `$app.length` / `$app.width` / `$app.height` on the variant (Product dimensions). That feeds dimensional weight. It is not your `custom.shipping_class`. Do not put both jobs on one rate card.
Collection “Pallet”, SKU left out: parcel rate at checkout. SKU list in the condition: every new variant is missing. Customer tag `trade` for free shipping: a guest with a hazmat can still pays retail — rates by customer tag keys off the customer, not the product. None of those reads the metafield purchasing already maintains.
Checked 9 November 2026: listing Free, 0 reviews, launched 28 Oct 2026. Hero: *40+ conditions, from postal code and dimensional weight to products, customer tags and date.* Docs/positioning: product conditions include name, SKU, vendor, tags, collections, variants, metafields, price, weight, dimensions. Tags, collections, and metafields load through the Admin API at rate time — not last week’s CSV.
Conditions hub: *Condition overview* plus Product & variant metafield conditions — *Match product or variant metafield values in shipping rate rules.* Owner is product or variant, same idea as other Shopify metafields.
Carrier-calculated custom rates typically need Advanced Shopify or higher, a development / Partner development store, Plus, or a shop where the carrier is already active. Delivery customization (hide/rename/reorder) runs on more plans. This post is a *rate* condition: do not promise a metafield rate on Basic without that caveat.
What you match | Where it lives | Right tool here | Wrong tool |
|---|---|---|---|
`custom.shipping_class = hazmat` | Product or variant metafield (Help: your definition) | Product/variant metafield condition on the rates flow | Hope the “Hazmat” collection is complete |
Carton 80×40×40 cm | App L/W/H `$app.*` | Dimensional weight / volume + Settings divisor | The same metafield condition “because it looks big” |
Dealer ships at $0 | Customer tag | Customer-tag condition | Product metafield |
Fragile SKUs as a set | Collection or product tag | Collection/tag condition | Metafield you do not maintain |
Sources: listing 9 Nov 2026; Conditions hub; Product dimensions; Help Metafields. If the Advanced gate moves, re-check Getting Started before you quote Basic a hazmat rate.
Build it on the visual rates flow: Start when…, condition card, rate card, save. Activity logs: last 7 days, why a rate did or did not appear. Weight as a *price base* is another post: rates by weight. Postcode stays destination: rates by postal code.

T-shirts: $6.95 parcel. Spray cans: `custom.shipping_class = hazmat`, surcharge or hazmat-only carrier. The “Spray” collection lagged new SKUs.
What I would put on the canvas on 9 Nov 2026: a product metafield condition, namespace `custom`, key `shipping_class`, value `hazmat` (variant owner if the class differs per size). Rate card “Hazmat” with a fixed amount or its own tiers. Standard card in the same zone with a complementary condition so a cart without hazmat keeps $6.95. Combined rate only if checkout must show one line with a surcharge — custom shipping rates. Skip dimensional weight “because the can looks large” when L/W/H are empty.
Test checkout: (1) shirt only, (2) can only, (3) mix. Logs for 7 days: which condition matched. Missing rate: check the plan banner (Advanced / dev / Plus) first, then whether the metafield is exactly `hazmat` — a trailing space fails. A value saved five minutes ago should ride the next request; the Admin API reads at rate time. First zone: how to set shipping rates.
AI can draft the flow; you review before save. Do not invent a click path the metafield docs do not list: pick the condition group, map namespace/key/value, attach the rate card.
Create the metafield definition (product or variant), fill values. Install the Free app. Attach the carrier to every zone/market. Visual flow: metafield condition + rate. Three test carts. Logs. Delivery customization is optional and not a substitute for this rate.
Listing 9 Nov 2026: Free, 0 reviews — no invented stars. Carrier-rate plan gate stays Advanced (or development/Plus).
I would stop maintaining a “Dangerous” collection if purchasing already writes the metafield. One condition on `custom.shipping_class`, two rate cards, three test carts, logs open. Shopify shipping rule product metafield is not a storefront packing blurb and not `$app.length`. Listing 9 Nov 2026: 40+ conditions including products/metafields, Free. Docs: match product or variant metafield values; Admin API at rate time. Carrier rates: Advanced or higher. If that gate or the condition list moves, this advice is done.
Build it from the OO - Shipping Rates & Rules listing and fail the mix cart on purpose before you email customers a hazmat promise.
Services
Reviews
5/5
Mail: info@onlineorigins.nl
Tel: 073 234 0612
KVK: 89825624
BTW: NL865123639B01
Bruistensingel 500,© 2026 Online Origins