Skip to main content
Custom carriers
Clemency Farmer avatar
Written by Clemency Farmer
Updated over a month ago

Zapiet - Pickup + Delivery can integrate with a number of carriers that provide rates. If you need to integrate with a carrier that is not included in our compatible carriers, then you can create a custom carrier integration.


Requirements

  • You will need an Endpoint and an API key from the carrier.

    • You can ask the carrier to provide you with them. The carrier can find more information in the API format section.

  • You need to have the Carrier Service API enabled on your Shopify plan.

  • All products that require shipping need to be marked as a Physical product in Shopify.


Integrate a custom carrier

If the carrier you wish to integrate with is not listed within the app, you can instead integrate a custom carrier.

  1. Within Zapiet - Pickup + Delivery, click Rates.

  2. Depending on the section where you'd like to integrate the carrier rates, go to the Delivery or Shipping section and click Advanced options.

  3. Find Custom Carrier and click Add carrier.

  4. Tick Enable Custom Carrier rates.

  5. Add the Endpoint for your rates.

  6. Enter your API key.

  7. Add handling fees if needed, and click Save.
    For more information on handling fees, you can follow our Calculating handling fees article.

Your custom carrier rates should be generating through Zapiet - Pickup + Delivery—you can now test them.

  • If you've integrated it in the delivery section, they will show when your customers select delivery in the widget.

  • If you've integrated it in the shipping section, they will show when your customers select shipping in the widget.

Depending on where you have integrated the carrier rates, we recommend disabling the rates in that section of Zapiet - Pickup + Delivery.

For example, if you have integrated your custom carrier in the Shipping section, we recommend disabling your shipping rates.


Disable Zapiet - Pickup + Delivery rates

If you are only using the custom carrier's rates, we recommend disabling Zapiet - Pickup + Delivery delivery rates, and/or removing any shipping zones in Zapiet - Pickup + Delivery shipping section.

Only the custom carrier should be added as a carrier within Zapiet - Pickup + Delivery.


Disable delivery rates

  1. Within Zapiet - Pickup + Delivery, click Rates.

  2. Within the Delivery section, click Disable delivery rates.

  3. Confirm to disable rates.

  4. Click Save.

Your Zapiet - Pickup + Delivery rates are disabled now, and the delivery rates will be coming from the custom carrier.


Disable shipping rates

  1. Within Zapiet - Pickup + Delivery, click Rates.

  2. Within the Shipping section, click Edit next to your shipping zone.

  3. Click Delete zone.

  4. Confirm to delete this shipping zone.

Your Zapiet - Pickup + Delivery shipping rates are deleted now, and the only shipping rates will be coming from the custom carrier.


Disable custom carrier

If you want to stop using the custom carrier rates with Zapiet - Pickup + Delivery, you can disable the carrier.

  1. Within Zapiet - Pickup + Delivery, click Rates.

  2. Depending on where you've integrated it, find the custom carrier in the delivery or shipping section.

  3. Click Edit.

  4. Untick Enable Custom Carrier rates.

  5. Click Save.

The custom carrier rates will no longer appear when selecting delivery or shipping in our app.

Make sure to add your delivery and shipping rates within our app or Shopify, so that your customers can check out. You can take a look at our Rates setup guide for more information.


API format

Endpoint

We will send a POST request in the format of Shopify's Carrier Service API to your Endpoint.

The request will be in the following format:

{
"rate": {
"origin": {
"country": "CA",
"postal_code": "K2P1L4",
"province": "ON",
"city": "Ottawa",
"name": null,
"address1": "150 Elgin St.",
"address2": "",
"address3": null,
"phone": "16135551212",
"fax": null,
"email": null,
"address_type": null,
"company_name": "Jamie D's Emporium"
},
"destination": {
"country": "CA",
"postal_code": "K1M1M4",
"province": "ON",
"city": "Ottawa",
"name": "Bob Norman",
"address1": "24 Sussex Dr.",
"address2": "",
"address3": null,
"phone": null,
"fax": null,
"email": null,
"address_type": null,
"company_name": null
},
"items": [{
"name": "Short Sleeve T-Shirt",
"sku": "",
"quantity": 1,
"grams": 1000,
"price": 1999,
"vendor": "Jamie D's Emporium",
"requires_shipping": true,
"taxable": true,
"fulfillment_service": "manual",
"properties": null,
"product_id": 48447225880,
"variant_id": 258644705304
}],
"currency": "USD",
"locale": "en"
}
}

The response should be in the following format:

{
"rates": [{
"service_name": "My Rate",
"service_code": "MYRATES",
"total_price": "1295",
"currency": "USD"
}]
}

Authentication

If an API key is provided, we will pass it through in the rates request as a Bearer token. For example:

Authorization: Basic e151f842-06f7-4d5f-9804-1d833a5180ea

Troubleshooting

If you're not seeing your carrier's rates:

  • Check if the correct Endpoint and API key has been added

  • Contact the carrier to make sure the rates are set up correctly in their app

Did this answer your question?