FreightSimple × Shopify

Setting up freight rates at your checkout, and booking the orders that come in.

The integration does two things. Buyers get freight rates at your Shopify checkout, and once the goods are ready you book the shipment from inside your Shopify admin.

Chapters 1 to 6 are the one-time setup. Chapter 7 is what you do for every order after that.

Handled on our side
The Shopify data-access approval that lets us read a buyer's name, phone, and delivery address off an order.

Everything about how we quote is yours to set, from inside the app: your handling time, what your deliveries are like, where we pick up from, and the limits on what a checkout will offer. Chapter 5 walks through it.
Chapter 1

Checking your Shopify plan

Shopify only calls us for rates if your plan allows third-party carrier-calculated shipping. Confirm this before anything else.

What to do

  1. Check your plan. Shopify includes carrier-calculated shipping on Advanced and Plus. On Grow it's an extra monthly fee, or free if you switch to annual billing.
  2. Check the currency your checkout runs in is CAD or USD, not just your store's default. If you sell in other currencies through Shopify Markets, a buyer being shown a third currency gets no freight rates from us.
  3. Check where you ship to. We quote deliveries inside the country you ship from: Canada to Canada, or the US to the US. We don't quote across the border, so a buyer on the other side of it sees no freight rates.
If you change plan later
Moving to a plan without carrier-calculated shipping makes Shopify switch our rates off for your store. Nothing warns you, and the only symptom is that freight rates stop appearing at checkout.
Chapter 2

Installing the app

Installing the app is not the same as being set up. Connecting asks you to sign in to your FreightSimple account, so if you don't have one yet, create it on the FreightSimple dashboard first. The app's connect screen links to the sign-up page.

What to do

  1. Open the install link we send you. (The App Store listing is still in review.)
  2. Install while signed in to your Shopify admin.
  3. Review the permissions and accept.

What the app asks for

PermissionWhat it's for
read_orders See the orders to ship. This includes the buyer's name, email, phone, and shipping address, which the carrier needs for the bill of lading.
read_products, read_inventory Read SKUs, weights, and dimension fields
read_locations Read the addresses your orders ship from, so each of your warehouses can have its own pickup profile
read_customers Read the names of your customer tags, so you pick them from a list. Tag names only, never your customers' records
write_shipping Register FreightSimple as a rate provider at your checkout
write_merchant_managed_fulfillment_orders, write_fulfillments Write the tracking number back onto the order
Chapter 3

Connecting the store

This is the step that ties your Shopify store to your FreightSimple account.

What to do

  1. Go to Apps → FreightSimple in your Shopify admin.
  2. Under Connect this store to FreightSimple, click Connect.
  3. Sign in to your FreightSimple account in the pop-up that opens.
  4. You're done when the app shows Connected to FreightSimple as [your company name].
If nothing happens when you click Connect
Your browser blocked the pop-up. The app says so, and asks you to allow pop-ups for admin.shopify.com. Then click Connect again.
If your plan isn't eligible
Connecting fails here with a message naming the problem and telling you to upgrade your plan or contact Shopify support. See Chapter 1.

If the connection ever goes stale, usually after uninstalling and reinstalling, the app shows Reconnect FreightSimple with a Reconnect button. Your settings live with your FreightSimple account, not with the app, so reconnecting restores them.

Chapter 4

Getting your products quotable

To price freight we need a SKU, a weight, and dimensions for every product you ship this way. SKUs and weights come from Shopify. Dimensions live with us, because Shopify has no dimension field.

The quickest way to do all of it is the Store setup section in the app, which lists exactly what's missing and gives you the button that fixes each one.

What to do

  1. If you already keep dimensions in Shopify metafields, set that up before you sync. It's yours to configure, in Settings → Product sizes: turn on Read each product's size from Shopify, then fill in the namespace, whether the three sizes share one field like 12x10x8 or have three of their own, the field names, and the unit those numbers are in. Every product then comes across with its dimensions already set.

    The unit you pick is what we assume when the field holds a bare number, which is the usual case. If the field carries its own unit instead (a Shopify dimension field, or text like 12.5 cm), we read that and ignore the picker. Millimetres, centimetres, metres, inches, feet and yards are all understood.

    Not sure what to enter? Ask us and we'll look at what your product data actually holds. If it holds no sizes at all, that's an answer too: leave this off and use Add dimensions below to enter them with us instead.
  2. Go to Apps → FreightSimple and find Store setup.
  3. On N products not synced to FreightSimple, click Sync products. That creates a freight record per SKU carrying the product's name, then refreshes the panel and tells you what it did, for example "Synced: added 3 products. 15 of 18 products are ready to quote."
  4. Work down whatever's left, using the table below. Fix one, click Check again, and it disappears.

Order matters on the first step, but it isn't a one-shot. Configure the mapping before the sync and the dimensions arrive with the products. Configure it later and you re-run the sync to fill them in. Anything you already typed by hand stays as it is.

The sizes can live on the variant or on the product; both work. When a product and one of its variants both carry a size, the variant's value wins, so a single-variant product can keep its sizes at the product level and a product with variants of different sizes can override per variant.

MessageWhat to do
N products not synced to FreightSimple Sync products
N products missing dimensions Add dimensions, which opens Saved Commodities in FreightSimple. Enter length, width, and height.
N products missing a SKU Review products, then add a SKU to each in Shopify
N products missing shipping weights Review products, then set a weight on each in Shopify
Shipping origin has no postal code Review locations, then set a full address under Settings → Locations

Review products opens your own Shopify product list filtered to exactly the products being flagged, so you can fix them in one pass with Shopify's bulk editor.

How products are matched

Products are matched by SKU, capitalisation included: ABC-1 and abc-1 are two different SKUs to us. A mismatch isn't silent: Store setup reports the product as having no saved commodity yet. Correct the spelling rather than pressing Sync products, which would add a second record under the Shopify spelling.

Weight is read live from Shopify every time we quote, so a weight you correct in Shopify takes effect immediately with nothing to re-sync.

You only run that bulk sync once. Products you add or edit in Shopify afterwards sync themselves. New products still need their dimensions before they can be quoted.

One bad item blocks the whole checkout
A product with no SKU, no weight, or no dimensions can't be quoted. If a cart holds even one of them, that checkout gets no FreightSimple rates at all. Shopify shows no error; our rates are absent from the buyer's options. This is the most common reason rates don't appear.

One setting does the same thing on purpose. Under Settings → Rates at checkout you can name product tags you never ship by freight, and a cart holding any product with one of those tags gets no shipping options either. Shopify tells the buyer their order "cannot be shipped to the selected address", which isn't true and which they can't do anything about. We quote a whole shipment or none of it, because pricing part of an order would mean guessing what the rest costs. So use it for products you never send by freight, not for ones you'd rather not.

Switching off Quote freight from this warehouse does the same. Shopify splits a cart by the location each item ships from and asks us once per group, so if a cart holds anything from a warehouse you've turned off, it blocks the whole order, not just those lines, and gives the buyer the same wrong message about their address. Use it for stock you hold but can't ship freight from.
Chapter 5

Telling us how to quote

A freight quote needs to know more than the box sizes: whether the delivery is a loading dock or a driveway, whether the driver needs a tail lift, how long you need before pickup. These start at sensible defaults and are yours to change at any time, in Apps → FreightSimple → Settings. A change applies to the next quote, not to orders already placed.

What to set

SettingWhat it decides
Rates at checkout Whether we quote at all, and your handling time: the business days you need between an order arriving and the carrier collecting. It sets the pickup date we quote against, so a handling time that's too short buys you a carrier arriving before the freight is ready. A product that takes longer than the rest can carry its own handling time in a metafield, and a cart quotes the longest one it holds.
Who gets quoted Also on the rates page. Leave the customer tags empty and we quote everyone. Tick some and only signed-in customers carrying one of them see our rates. A guest has no account, so no tags, so no rates. The carrier lists work the same way: an empty allow list quotes every carrier, and the block list always wins over it.
What your customers' delivery is like The one that moves the price most. A delivery to a home or a shop needs a tail lift and an appointment; a warehouse with a dock needs neither. Set it to what most of your orders are, and use the next row for the rest.
Exceptions by customer tag When one group of customers is different (wholesale buyers with docks among mostly residential orders, say), tag them in Shopify and the matching rule overrides the default for those buyers.
Where we pick up from What your own dock is like. If a carrier needs a tail lift to load at your end, this is where that goes, and it belongs in the quote rather than on a later invoice. If you ship from more than one place, add each warehouse here and give it its own location type and pickup accessorials. Anything you don't add is quoted with the settings above, which is how a second dock quietly gets priced as the first one. Each warehouse also has a Quote freight from this warehouse switch, and turning it off is the third way to empty a checkout; see One bad item blocks the whole checkout in Chapter 4.
Checkout limits How many pallets we'll quote for one order, and both how many rates the buyer gets to choose from and which ones. A cart over the pallet limit gets no shipping options at all, so raise it if your customers order in volume. The cheapest rate is always first and can't be changed. Shopify pre-selects whichever rate is at the top, and its App Store rules don't allow a more expensive one there. Leave the rest alone and the checkout just shows the next cheapest, which is what it always did. But the cheapest carriers are usually the slow ones, so you can name what comes after (fastest, middle of the range, most expensive) and each takes the best rate the ones above it didn't. Name more slots than the checkout has room for and it won't save: the ones past the limit could never appear, and nothing on screen would tell you which.
Product sizes Where in your product data the dimensions live. Chapter 4 covers this; the setting is here if you need to change it later.
Pallet building How we combine items onto pallets. Leave it alone unless we've talked about it with you.
Why the delivery setting is worth getting right
An accessorial the quote didn't include doesn't disappear: the carrier bills it afterwards. Quoting every delivery as a dock when half of them are driveways is how a buyer pays one price at checkout and you get a bill for another. It's cheaper to quote the worst case and be occasionally generous.
Chapter 6

Making the phone number required

Shopify treats the phone number as optional at checkout. Freight carriers phone ahead to arrange delivery, so the carrier needs a number for every order.

What to do

  1. In your Shopify admin, go to Settings → Checkout.
  2. Find the shipping address options.
  3. Set the phone number field to Required.
  4. Then place a test order: something in the cart, a real delivery address, and FreightSimple rates should appear alongside your other shipping options.
If the buyer leaves it blank, we use your number
A bill of lading has to carry a phone number, so we put yours on it. The carrier then phones you to arrange your customer's delivery, and you end up relaying the calls. The Book & ship form flags it when the prefilled number looks like your own, so you can correct it before the carrier rings.
Chapter 7

Booking an order

An order arrives unbooked. When the goods are ready, you book it.

What to do

  1. Open Apps → FreightSimple. The order is waiting under Orders ready to ship, showing its number and where it's going.
  2. Click Book & ship on that order.
  3. Check What's shipping, then the Pickup and Delivery halves below it.
  4. Set the delivery open and close hours, which are the one thing not prefilled.
  5. Click Book & ship to submit.
  6. You're done when you see "Booked. The tracking number will appear on the order shortly." Tracking lands on the Shopify order once the carrier confirms.

What's on the form

What's shipping is read-only: one line per handling unit with what's on it and the figures we quoted, such as 48 × 40 × 52 in, 640 lb each, class 125, not stackable. You can't edit it, because the buyer has already paid against those figures. Check it before you submit: if the pack is wrong, the carrier reweighs the freight on pickup and bills the difference to your account.

Pickup is the warehouse the freight actually leaves from: address, contact, your open hours, and whether there's a dock or a forklift. It's prefilled from the last order you booked. Freight doesn't always leave from the address on your Shopify account, so check it on the first booking.

Delivery is prefilled from the buyer's order, except the open and close hours, which Shopify has no field for. They're half-hour dropdowns set to 9:00 AM and 5:00 PM, so if that's right you can leave them.

You can't add accessorials on this form
Liftgate, inside delivery, after-hours, and delivery appointments aren't on it. The form books the quote the buyer already paid for, and nothing here re-prices it, so adding a service would buy something the price didn't cover and the difference would come back as an extra charge. If an order needs one, book that shipment from the FreightSimple dashboard instead, where it gets re-quoted.
If the address turns out to be residential
Sometimes we learn after quoting that a delivery address is residential, which usually costs more. The buyer's price is fixed, so we leave your setting alone and tell you on the location type field. If that delivery also needs a liftgate or an appointment, book it from the dashboard.

If a booking doesn't go through

The form checks itself before it submits and names what's missing, for example "Contact phone is required", with a count of what's left to fix. If it still fails after that, the form stays open and shows one general message without naming a field, because at that point the problem is at our end rather than in what you typed. The order isn't lost. It stays with us and our operations team picks it up.