What you will learn
On this pageContentsCloseOpen
If you sell sofas, gym racks, or generators, you know a weight-based rate can miss by hundreds of dollars on a pallet, and that the fallback — a "call for a freight quote" form — closes zero orders at 11pm.
The usual explanation is that Shopify does not connect to LTL carriers. The sharper one: Shopify never holds or sends the data an LTL carrier needs. Everything an LTL app does — metafields, CSV imports, the "enable pallets" toggle — exists to close that gap. Below: the gap, then eight apps compared on price, billing denominator, plan requirement, and accessorial handling, plus a 300 lb and a 3,000 lb pallet run through three carriers' published liftgate and residential schedules.
Where Shopify's built-in rates stop
Shopify offers flat, price-based, and weight-based rates, plus built-in carrier-calculated rates from USPS, DHL, and UPS at US fulfillment locations, which it says "are available on all plans."
To plug in your own negotiated account, Shopify's third-party carrier-calculated shipping (CCS) supports five parcel carriers: UPS, USPS, Australia Post, Canada Post, and FedEx. Estes, Old Dominion, XPO, R+L, Saia, and ABF are not on that list, and no plan upgrade adds them. Per Shopify's plan availability table, CCS is "Available for an additional monthly fee, or included with annual billing" on Shopify Grow, "Included in plan" on Shopify Advanced and Shopify Plus, and "Not available" on all other plans — so on Basic or Starter, no app here reaches checkout.
Labels tell the same story. Shopify's requirements page for buying labels covers parcel carriers only and never uses the words freight, LTL, or pallet. The documented US ceiling for UPS and for FedEx Ground, Home Delivery, and Express is 150 lb and 165 inches of length plus girth; the economy tiers, UPS Ground Saver and FedEx Ground Economy, stop at 70 lb and 130 inches.
The break that matters: dimensions never arrive
A variant has no dimension fields. A product's Shipping section offers Physical product, Weight, Package, and Customs information — no L, W, or H. In the GraphQL Admin API, ProductVariant no longer carries weight at all; it moved to InventoryItem.measurement, and InventoryItemMeasurement exposes exactly two fields, id and weight. Dimensions exist only as an attribute of a saved package.
Only one package's dimensions reach checkout. Shopify's requirements page for buying shipping labels is blunt: "Only the default package's dimensions are used in the checkout." It points you to a shipping app for anything else, and Shopify's packages documentation adds that a package assigned to a variant "works only for single item orders."
The rate request confirms it. The example items array in Shopify's CarrierService reference contains name, sku, quantity, grams, price, vendor, requires_shipping, taxable, fulfillment_service, properties, product_id, and variant_id — no length, width, height, or class. The documented cache key list includes "default shipping box weight and dimensions," confirming which dimensions Shopify holds at rate time. The read timeout for a carrier service callback is dynamic on top of that — 10 seconds under 1,500 requests per minute, 5 seconds from 1,500 to 3,000, 3 seconds above 3,000 — and "There is no retry mechanism."
So a freight app receives a variant_id and a sku and looks up everything else itself. How it does that is a real differentiator. One review of the XPO app puts it plainly: "weights have to be manually entered, they do not recognize the weights you have already loaded into the Shopify product data" (Perigee Direct, United States, July 18, 2023 — a single 3-star review, not a pattern).
What an LTL carrier actually asks for
Old Dominion's getLTLRateEstimate, read from the published WSDL, requires per freight item: length, width, height, dimensionUnits, weight, weightUnits, numberOfUnits, ratedClass, nmfc, and nmfcSub. At shipment level it wants numberPallets, numberStackablePallets, loosePieces, linearFeet, totalCubicVolume, accessorials, and pickupDateTime, and the response breaks out fuelSurcharge, totalAccessorialCharge, and linearFeetCharge separately.
Saia's Rate Quote WSDL asks the same per detail item — Width, Length, Height, Weight, Class, NMFCCode, Subclass — and returns ActualWeight and RatedWeight as separate fields. Inputs still vary: ODFL requires a pickup date, Saia's request has no date field.
Freight class, NMFC, and why 2025 raised the stakes
Freight class comes from the National Motor Freight Classification (NMFC), published by the National Motor Freight Traffic Association, Inc. (NMFTA): 18 classes from 50 to 500, assigned on density, handling, stowability, and liability. NMFTA's summary of the direction: "The denser and easier to move, the lower the class—and the lower the cost."
Two operational facts follow. The data is not free — "To purchase the NMFC Book, a ClassIT+® license is required" — so free lookup tables on the web are unofficial. And if you skip it the carrier picks for you: ODFL's brochure states "Failure to list class or description defaults to class 100."
NMFTA's 2025 restructuring came out of a multi-year initiative it calls Classification Reimagined, which pushed the system toward density. Docket 2025-1's supplement took effect Saturday, July 19, 2025, and Supplement 2025-2 on December 6, 2025. What matters for a Shopify catalog: NMFTA wrote that carriers "will absolutely need to obtain handling unit dimensions and weight from shippers and 3PLs," and Supplement 2025-2 revised Item 250100 to add "and/or Dimensions" to the section title and clarify that verification of dimensions is allowed. The carrier's right to measure your pallet and re-rate it is now written down.
Accessorials are per-hundredweight, with a floor and a ceiling
This is where a flat "+$75 for liftgate" model loses money. Carriers bill a rate per hundredweight (cwt, per 100 pounds) with a minimum and a maximum.
| Accessorial | Estes (schedule effective November 17, 2025) | ODFL (tariff ODFL 100-Q, effective January 7, 2026) | XPO (tariff CNWY 199-AI, effective January 15, 2024) |
|---|---|---|---|
| Liftgate | Item 567: $4.95/cwt, min $75.00, max $350.00 | Item 891: $4.40/cwt, min $105.00, max $330.00 | Item 218: $12.10/CWT, min $237.00, max $578.00 |
| Residential / limited access | Item 751 residential: $8.50/cwt, min $75.00, max $550.00. Item 751-10 limited access: $85.00 flat | Items 753-1 to 753-4, residences folded into limited access: $7.20/cwt, min $115.00, max $580.00 | Item 224, residential and limited access combined: $14.50/CWT, min $162.00, max $797.50 |
| Notification / appointment | Item 647: $30.00 | Item 647: $30.00 | Item 221 notification $15.50; Item 253 appointment $61.00 |
| Redelivery | Item 830: $10.00/100 lbs, min $85.00, max $900.00 | Item 830: $7.20/cwt, min $150.00, max $580.00 | Item 229: $16.75/CWT, min $158.75, max $500.00 |
Every figure above comes from the carrier's own published schedule on the effective date shown, and carriers reissue these documents on their own timetable. Re-read the current schedule before you hardcode any of it.
Three structural observations. Estes bills residential and limited access as separate items, while ODFL and XPO fold residential into a single limited-access item, so the same house delivery appears under a different name by carrier. Items 647 and 830 are shared across all three, but liftgate is 567, 891, and 218 — you cannot map accessorials by number. And fuel is a separate line everywhere; Estes ties its Item 530 surcharge to the DOE weekly On-Highway Diesel Price, so any hardcoded percentage is wrong within seven days.
Now the arithmetic promised above, for a residential delivery needing a liftgate: the published schedules multiplied out, not quotes, excluding linehaul, fuel, and discounts. ODFL notes its brochure "represents an abbreviated form or quick reference guide."
| Shipment | Estes | ODFL | XPO |
|---|---|---|---|
| 300 lb (3 cwt), liftgate | $75.00 (minimum applies; rate math gives $14.85) | $105.00 (minimum applies; $13.20) | $237.00 (minimum applies; $36.30) |
| 300 lb, residential / limited access | $75.00 (minimum applies; $25.50) | $115.00 (minimum applies; $21.60) | $162.00 (minimum applies; $43.50) |
| 300 lb, both | $150.00 | $220.00 | $399.00 |
| 3,000 lb (30 cwt), liftgate | $148.50 | $132.00 | $363.00 |
| 3,000 lb, residential / limited access | $255.00 | $216.00 | $435.00 |
| 3,000 lb, both | $403.50 | $348.00 | $798.00 |
At 300 lb every cell is a minimum charge, so the per-cwt rate is irrelevant and the carrier with the lowest rate costs the most; at 3,000 lb the ordering inverts, so one flat accessorial assumption cannot be right at both ends. ODFL also publishes an absolute minimum charge inside the 48 states — $141.00 intrastate, $159.00 interstate to 699 miles, $195.00 for 700 to 1,199, $245.00 at 1,200 or more.
Why light freight gets expensive
Cubic capacity. Estes Item 615 applies a minimum charge when a shipment "exceeds 350 cubic feet of carrier's vehicle," re-rating at 6 pounds per cubic foot against the customer's Class 125 rate; its own illustrative example ends at $639.86 after a 55% discount. Item 615 also treats height as 84 inches when packaging prevents stacking to the ceiling, so a "Do not stack" label inflates the billed cube. ODFL Item 610-1 uses the same 350 cu ft threshold, for shipments under 3 pcf requiring 350 to 749 cubic feet, or under 6 pcf requiring 750 or more.
The lineal-foot rule, which is not the same number everywhere.
| Carrier | Trigger | Minimum charge |
|---|---|---|
| Estes, Item 391 | 20.0 ft or more long, and 49.0 in or more wide, and 51.0 in or more high | "the charge will not be less than $695.00" |
| ODFL, Item 390 | "Shipments requiring linear length of 20 feet or greater" or 20,000 lbs or more | Per ODFL 100 series Item 390 |
| XPO, Item 234 | 14 ft or more, and 49 in or more wide, and 51 in or more high; or 112 sq ft of floor space and 51 in or more high | "Subject to a minimum charge of $762.00" |
The same load triggers a re-rate at XPO six feet before it does at Estes or ODFL, so a single internal rule of thumb breaks down as soon as you rate-shop.
Nobody can pick a liftgate at Shopify checkout
ShipperHQ's documentation states it directly: "BigCommerce and Shopify do not natively support accessorial freight options in checkout." Customers cannot select liftgate or inside delivery, and surcharges appear neither separately nor as toggles. Its documented workaround — duplicate an LTL carrier and rename one copy so it reads as a liftgate option — is one ShipperHQ itself calls clunky and hard to manage. How each app resolves this is a legitimate selection axis: the accessorials column below.
One more native trap: Shopify warns that "Flat rates are always displayed when eligible, so customers might choose them even when calculated rates are working." Leave a $19.99 flat rate in the zone where your freight rates appear and customers will take it.
Cart-side estimates versus a rate at checkout
A rate that shows at checkout as a selectable shipping method comes through Shopify's carrier service — the thing gated behind a CCS-eligible plan.
Shipduo makes the split visible in its pricing: the Free tier lists discounted rates from major LTL carriers, but Real-Time Rates at Checkout starts at Plus, $49/month, so you can rate shipments you book and still show nothing at checkout. ShipperHQ meters both surfaces, defining a shipping request as generated "anytime a customer gets a shipping rate in the cart or checkout," so a cart-side estimate consumes the same monthly allowance as a checkout rate.
Across the apps checked for this article, we could not confirm one that returns a rate at Shopify checkout without a CCS-eligible plan. ShipperHQ, Shipduo, and Eniture all document the requirement. For FreightClub, the Shopify plan requirement is not stated in the app's official documentation — no vendor page we fetched mentions carrier-calculated shipping or a plan name. Treat that as unknown, not as "not required."
Eight apps, same axes
Pricing, ratings, and review counts are from the Shopify App Store in the en locale on September 3, 2026. None of the ten listings reviewed for this article displayed a Built for Shopify badge.
| App | Pricing (USD) | Billed on | Shopify CCS plan | Own carrier account | Accessorials | Rating (reviews) |
|---|---|---|---|---|---|---|
| ShipperHQ: Shipping & Checkout | Essentials $75/month, Standard $350/month, Advanced $600/month; 15-day free trial | Carriers, rules, advanced features, origins, and orders per month (200 / 1K / 2K) | Required, documented by vendor | Required | Applied automatically; customer cannot select at checkout | 4.8 (69) |
| Shipduo Freight LTL Shipping | Free $0, Plus $49/month, Pro $499/month; 14-day free trial on paid tiers | Plan tier, orders per month, carrier connections | Required, documented by vendor | Optional; own LTL carrier on Plus and Pro | Liftgate auto-detected from address; NMFC in metafields | 4.8 (27) |
| FreightClub | Ship LTL&Parcel | Free to install; "Additional charges may apply." | Freight charges only, no subscription | Not stated in the app's official documentation | Not required | Sold as service levels, from Back of Truck to White Glove | 4.7 (12) |
| DIY Real Time Shipping Quotes | Basic $30, Standard $55, Advanced $75, Enterprise $90 per month; 14-day free trial | Number of enabled providers (1 / 3 / 5 / 8) | Required, documented by vendor | Required | Depends on the enabled providers | 4.8 (11) |
| Estes LTL Freight Quotes | Basic $20, Standard $25, Advanced $40 per month; 14-day free trial | Flat monthly, unlimited quotes, one carrier | Required, documented by vendor | Required (Estes Express) | Liftgate and residential on all tiers; residential auto-detect from $25 | 5.0 (2) |
| XPO LTL Freight Quotes | Basic $20, Standard $25, Advanced $40 per month; 14-day free trial | Flat monthly, unlimited quotes, one carrier | Required, documented by vendor | Required (XPO Logistics) | Liftgate, residential; hold at terminal on Advanced | 3.6 (4) |
| R+L LTL Freight Quotes | Basic $20, Standard $25, Advanced $40 per month; 14-day free trial | Flat monthly, unlimited quotes, one carrier | Required, documented by vendor | Required (R+L Carriers) | Liftgate, residential; appointment delivery not supported | 3.4 (7) |
| WWE LTL Freight Quotes | Basic $20, Standard $25, Advanced $40 per month; 14-day free trial | Flat monthly, unlimited quotes, one broker account | Required, documented by vendor | Required (Worldwide Express, a broker) | Liftgate, residential, hold at terminal | 3.7 (13) |
Read the review counts before the ratings. Estes at 5.0 has two reviews, XPO at 3.6 has four — a handful of merchants, not a track record, and ranking by them would be meaningless.
Two apps were considered and left out. ClickShip | Shipping Platform from Freightcom (4.6, 169 reviews; $0 tier with real-time checkout rates) leans Canadian and never mentions liftgate, residential, freight class, or NMFC. Fare Freight: Dimensions +more is an Australian product by developer location, reviews, and vendor description.
The apps in detail
ShipperHQ: Shipping & Checkout

Source: Shopify App Store (ShipperHQ: Shipping & Checkout), retrieved September 3, 2026
A rules engine that replaces Shopify's native rate calculation, launched September 6, 2019. The listing claims rates from 100+ parcel and LTL freight carriers, using your own negotiated carrier credentials.
The detail that changes the price conversation: ShipperHQ's documentation lists LTL Freight as one of its Advanced Features, and Advanced Features count toward your plan's allotment — one on Essentials, 3 on Standard, 4 on Advanced. So $75/month spends the whole allowance on LTL freight, and Dimensional Packing, Address Validation, and Multi-Origin Shipping are Advanced Features too: LTL rating plus dimensional packing means Standard at $350/month.
Also documented: Shopify controls shipping method sort order and ShipperHQ cannot override it, and rates do not apply in Amazon MCF or Buy with Prime checkouts. One review from Green Building Supply (May 1, 2026) is positive on function but critical of the interface, citing "a lot of weirdness in the UI."
Shipduo Freight LTL Shipping

Source: Shopify App Store (Shipduo Freight LTL Shipping), retrieved September 3, 2026
Launched September 2, 2024, and the app that addresses the dimensions problem most explicitly: on install it creates Shopify metafields, and the merchant fills in dimension and routing values per variant. NMFC and NMFC Sub metafields are created too, and prefill NMFC information on rate requests, shipment details, and BOLs. Liftgate is handled automatically at checkout from the delivery address. The vendor's help center states the plan requirement in current plan names — "This feature is available on Shopify Grow (annual), Advanced, and Shopify Plus plans."
Caveats. The App Store's Free tier description does not match the vendor's own pricing page, which caps Free at 35 orders per month with UPS discounts only; confirm before planning around it. Unlimited LTL Carriers arrives at Pro, $499/month. One review (ODIFORGO, United States, July 3, 2026) reported multi-piece shipments producing a single "1 of 1" label; Shipduo blamed a third-party label provider for UPS Ground Saver and said it discontinued that service.
FreightClub | Ship LTL&Parcel

Source: Shopify App Store (FreightClub | Ship LTL&Parcel), retrieved September 3, 2026
The structural outlier: no subscription tier, revenue from the freight itself, and the one app here that does not require your own carrier contracts. Its FAQ: "Freight Club gives you immediate access to pre-negotiated enterprise rates from 35+ carriers" from day one. Rather than treating a liftgate as a surcharge, it sells service levels — Back of Truck, Curbside, Threshold, Room of Choice, White Glove — which matches how a furniture buyer thinks about delivery.
Two things to verify yourself. The Shopify plan requirement is still not stated in the app's official documentation. And because freight margin is the business model, the markup is not published, so you cannot compare its effective rate to your own contract without running both. A three-year review (Freedom Fitness Equipment, United States, edited August 22, 2024) lists past problems — rates not pulling correctly, dimensions erased repeatedly — while saying most were resolved.
DIY Real Time Shipping Quotes

Source: Shopify App Store (DIY Real Time Shipping Quotes), retrieved September 3, 2026
Eniture Technology's multi-provider app, priced by provider count. The listing enumerates 37 supported providers across LTL carriers, brokers, and parcel — Estes, ODFL, XPO, R+L Carriers, SAIA, SEFL, ABF, CH Robinson, TForce, Worldwide Express, UPS, and USPS among them. It does not mention liftgate, residential, or freight class handling, and Eniture states that supported origins and destinations depend on the enabled providers — verify the carrier you care about.
Estes, XPO, R+L, and WWE LTL Freight Quotes

Source: Shopify App Store (Estes LTL Freight Quotes), retrieved September 3, 2026

Source: Shopify App Store (XPO LTL Freight Quotes), retrieved September 3, 2026

Source: Shopify App Store (R+L LTL Freight Quotes), retrieved September 3, 2026

Source: Shopify App Store (WWE LTL Freight Quotes), retrieved September 3, 2026
Eniture builds on a one-carrier-one-app design; its own site lists dozens of Shopify products, most of them carrier-specific LTL freight quote editions. All four share the same tier ladder, with unlimited LTL freight quotes at every tier. Basic includes multiple stocking locations, residential delivery, liftgate delivery, and a handling fee; Standard adds residential address auto-detection, more residential and liftgate options, and hazardous material support; Advanced adds proximity-based in-store pickup and local delivery, plus hold at terminal on the XPO version.
Differences worth noting. The XPO app documents origins as USA, destinations as Canada and USA. The R+L app's missing appointment delivery drew a February 11, 2026 review request (NYTOP, United States), and Eniture replied that a support ticket would be opened. The WWE app connects to the broker Worldwide Express, so one account reaches multiple LTL carriers — over 60 per Eniture's site, though the Shopify listing does not say. And the arithmetic against the multi-carrier app: one carrier is $20/month, two apps $40, three $60 — more than DIY Real Time Shipping Quotes charges for three providers ($55).
Expect setup work. The NYTOP review describes importing a CSV and learning the Quote Settings page, then finding that creating "pallets" for each SKU solved multi-box shipments "even though we were shipping out in boxes." The plan gate is a real cost too: another merchant (Dolphin Tanker, United States, September 18, 2025) wrote, "I upgraded my Shopify plan just to use the LTL freight option for customers placing an order for things that can't ship ground." That is the WWE app's only 1-star; the merchant says the app never worked and was uninstalled, and Eniture's reply disputes the account and points at the Worldwide Express API.
Choosing
- Everything ships under 150 lb and 165 in of length plus girth. No freight app; built-in carrier-calculated rates work on every plan.
- Basic or Starter plan. Plan first, app second.
- No LTL contracts, or not enough volume for good ones. FreightClub, whose service levels you can sell as an upgrade, or Shipduo if you want to start at $0.
- Strong negotiated rates, one or two carriers. Eniture's carrier-specific apps, unlimited quotes; budget setup time for the CSV.
- Strong rates, three or more carriers to rate-shop. DIY Real Time Shipping Quotes.
- Multiple origins and product-group rules alongside freight. ShipperHQ — but assume Standard at $350/month, since Essentials' single Advanced Feature slot goes to LTL Freight.
Three tasks are unavoidable on any route. Get per-SKU dimensions and freight class or NMFC into metafields or a CSV, because Shopify will not send them for you. Remove any cheap flat rate still sitting in the zones where freight rates appear. And configure a backup rate deliberately, because a carrier API timing out inside a three-second window needs an answer.
Sources
- Shopify Help Center — Setting up shipping rates
- Shopify Help Center — Third-party carrier-calculated shipping
- Shopify Help Center — Carrier accounts
- Shopify Help Center — Requirements and considerations for buying shipping labels
- Shopify Help Center — Packages and weights
- Shopify Help Center — Setting up packages
- Shopify Help Center — UPS shipping in the United States
- Shopify Help Center — FedEx shipping
- shopify.dev — CarrierService REST resource
- shopify.dev — ProductVariant object
- shopify.dev — InventoryItemMeasurement object
- NMFTA — NMFC classification standard
- NMFTA — NMFC Classification Glossary of Terms
- NMFTA — A guide to the NMFC changes coming in 2025
- NMFTA — What are the updates to Item 250100
- NMFTA — Density and class breaks for the new 13-sub structure
- NMFTA — NMFC Book
- Estes Express Lines — Accessorials
- Old Dominion Freight Line — Accessorial brochure (ODFL 100-Q)
- Old Dominion Freight Line — RateEstimate WSDL
- XPO — Tariff CNWY 199-AI, effective January 15, 2024
- Saia — Rate Quote WSDL
- ShipperHQ docs — Freight accessorials on BigCommerce and Shopify
- ShipperHQ docs — Advanced Features
- ShipperHQ docs — Connect Shopify to ShipperHQ
- Shipduo help center — How to activate Shipduo checkout rates on your Shopify shipping profile
- Eniture Technology — Estes LTL Freight Quotes for Shopify
- Freight Club — Shopify integration
App pricing, ratings, and review counts were read from the ten Shopify App Store listings linked above, in the en locale, on September 3, 2026. Carrier tariff figures are published schedules, not quotes.
Shopify Flow adds and removes product tags for free on every paid plan, but its Get product data action returns at most 100 products per run, so backfilling an existing catalog becomes a scheduled loop. Flow also has no generic Product updated trigger, which means it structurally cannot re-tag a product after you edit its type, vendor, or price. Shopify Magic suggests a product category and fills category metafields, but product tag generation is not on its published feature list. The six apps compared here meter completely different units: Leap Auto Tags counts every tag added and every tag removed as one credit against 2,000 per month at $8, FilterTag meters 500 to 50,000 generated tags per month at $9 to $59, TAGit AI works out to 3 to 9 cents per generated tag, and Helium charges $9.99 one-time per 100 products. Mechanic and Matrixify charge flat fees of $16 to $199 and $20 to $200 with no per-tag metering at all. Check the denominator before you check the price. Researched September 3, 2026.