Shopify has the ability to get shipping rates from several carriers (USPS, UPS, FedEx, DHL), but not from a custom carrier, I need the ability to get rates from a fulfillment center, I want to use fulfillment's rates without them sharing their credentials to (UPS, USPS, FedEx, DHL).
I want Shopify to be able to call an API, get the rates from the fulfilment center and display those rates to a customer instead of the rates from USPS, UPS FedEx, DHL, but I want those rates to appear to the customer as if those rates are coming from those carriers.
So the customer would still be able to select the carrier (UPS, USPS, FedEx, DHL), but the carrier's rates are coming from the fulfillment center instead of the carriers. So the customer requests the rates, Shopify calls fulfillment center's API, fulfillment calls the carrier's API, retrieves the rates, and sends those rates to Shopify and Shopify displays those rates to the customer.
What is the best way to accomplish this? Is this even possible? Do I have to hire a Shopify programmer to do this?
Solved! Go to the solution
This is an accepted solution.
Yep you can do that,
I have this same situation, where we use a 3rd Party Logistics company for fulfillment, and they get nicer rates with carriers.
and they will not share their Carrier API keys as it's a 3rd party.
Have a look at setting up a custom carrier service:
You can setup a webhook to your 3PL or whichever other service's API if any.
Keep in mind Shopify requires a specific response JSON format to work.
I've found it's easier to create your own web service using AWS Lambda or Google Cloud Functions etc,
and direct your Shopify webhook to that.
Then you can route all your requests through that, and make sure it's in the correct format both too and from your 3rd party.
Another option, would be to use the app Bespoke Shipping.
This app is great, but is unable to call a custom API endpoint.
You are limited to the carriers they currently integrate with.
You can also put your own hard-coded logic in there if that helps.
The webhook integration sounds very interesting.
Are you able to display rates from 3PL, but as USPS, UPS, FedEx... to a customer. So it looks like the rates are coming directly from the carriers and not from 3PL? I have never seen how that looks like to a customer in the Shopify store, only the standard rates or free shipping.
Yep Shopify will display whatever is returned from your web service.
With your web server that's processing these requests just make sure to return the service_name "USPS", "UPS" "Custom Shipment" etc
You can see in the "Response Fields" section of the CarrierService.
from the docs:
service_name: The name of the rate, which customers see at checkout. For example: Expedited Mail.
You can call it whatever you'd like.
Do you know where I can find documentaton on these Webhooks for getting and displaing rates?
I've found these, but none of them look like the right ones.
This is an accepted solution.
Yep so you use the api to create a CarrierService
Part of creating a carrier service is specifying the callback URL (callback_url)
This is the url shopify will call when it wants to get rates from the carrier. It'll fire off a POST to that url when it wants rates from that carrier.
The response from that call is used to populate the shipping options.
You want to setup your special carrier and get shopify to use it when getting shipping options.