The MachShip Shopify extension does not support flat rate shipping as it's designed to provide live pricing with carriers.
If you want to offer flat rate, or free shipping, shipping to your customers, you have two options:
Use Shopify's default functionality - This allows you to set shipping prices per state, but not by postcode range.
Use a dedicated postcode shipping plugin - Search for "postcode shipping" in the Shopify App Store to find extensions specifically designed for this purpose.
When you have products stored in different warehouses or split into multiple shipping profiles, Shopify handles shipping quotes in a specific way that can cause confusion.
For example, if you have:
When a customer reaches checkout, Shopify sends separate requests for each item because they cannot be shipped together (they're not stocked in the same warehouse).
What Machship receives from Shopify:
Shopify then combines the results in one of two ways:
If both products return shipping options with identical names, Shopify combines the prices under those names:
Product A:
Product B:
What the customer sees:
If the shipping method names differ (e.g., one product requires tailgate delivery), Shopify cannot combine them by name. Instead, it takes the cheapest option for each product and combines them as a single option called "Shipping":
Product A (small):
Product B (large):
What the customer sees:
The issue here is that the customer may actually require tailgate delivery for the large item but is never presented with that option. They're charged the business price, which may not be appropriate for their needs.
Another issue occurs when we have a freight error and use fallback pricing:
Product A (small):
Product B (error generating price):
What the customer sees:
Shopify now has an option to split the displayed shipping options as separate methods to the customer. This setting can be found in the shipping settings of your Shopify admin panel.
Unfortunately, since Shopify sends separate requests with no indication they're related, we cannot add handling on our side to combine the requests on our side.