# Adding a new shipping carrier

**URL:** <https://community.shiphero.com/t/adding-a-new-shipping-carrier/46>\
**Category:** Getting Started\
**Created:** [July 17, 2019, 10:20pm UTC](https://community.shiphero.com/t/adding-a-new-shipping-carrier/46 "2019-07-17T22:20:44Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![tonychen](https://avatars.discourse-cdn.com/v4/letter/t/97f17d/32.png) [@tonychen](https://community.shiphero.com/u/tonychen)\
**Post date:** [July 17, 2019, 10:20pm UTC](https://community.shiphero.com/t/adding-a-new-shipping-carrier/46/1 "2019-07-17T22:20:44Z")

</div>

Hello!

We’re an international carrier and would like to be onboarded to ShipHero (i.e. we provide shipping rates and labels). Stupid question: do we develop against your API, or does ShipHero call our API to get rates and labels?

Thanks!

---

<div class="post-metadata">

**Author:** ![yosef](https://sea2.discourse-cdn.com/flex020/user_avatar/community.shiphero.com/yosef/32/9_2.png) [@yosef](https://community.shiphero.com/u/yosef)\
**Post date:** [July 17, 2019, 10:37pm UTC](https://community.shiphero.com/t/adding-a-new-shipping-carrier/46/2 "2019-07-17T22:37:11Z")

</div>

Hi Tony,  
For carriers, there are 2 methods of integration  
:

1. ShipHero builds an integration using your API. For carrier requests we evaluate the demand and the work required - at the moment we do have a backlog of carrier integrations so it may be some time before we evaluate adding more.

2. The other option is if the carrier builds the endpoint to respond to requests coming from ShipHero. In order to generate labels customers would use the [Generate Label Webhook](https://shipheropublic.docs.apiary.io/#reference/webhooks/generate-label-webhook-url/generate-label-update-webhook-url). When the customer needs to generate a label, we’ll call the specified URL and expect back a label in the response.  
Unfortunately, quoting is not yet supported for this option.

---

<div class="post-metadata">

**Author:** ![tonychen](https://avatars.discourse-cdn.com/v4/letter/t/97f17d/32.png) [@tonychen](https://community.shiphero.com/u/tonychen)\
**Post date:** [July 17, 2019, 11:00pm UTC](https://community.shiphero.com/t/adding-a-new-shipping-carrier/46/3 "2019-07-17T23:00:22Z")

</div>

This is very helpful. Thank you @yosef. We do have a label URL you can hit. Is there a specific request/response format you need? Or is this the example? [https://api-gateway.shiphero.com/your.domain/labels/create/url](https://api-gateway.shiphero.com/your.domain/labels/create/url)

---

<div class="post-metadata">

**Author:** ![yosef](https://sea2.discourse-cdn.com/flex020/user_avatar/community.shiphero.com/yosef/32/9_2.png) [@yosef](https://community.shiphero.com/u/yosef)\
**Post date:** [July 18, 2019, 1:28pm UTC](https://community.shiphero.com/t/adding-a-new-shipping-carrier/46/4 "2019-07-18T13:28:35Z")

</div>

Tony,  
The request and response is detailed here:[https://shipheropublic.docs.apiary.io/#reference/webhooks/generate-label-webhook-url/update-order](https://shipheropublic.docs.apiary.io/#reference/webhooks/generate-label-webhook-url/update-order)

The request will contain all the info you need to generate a label (address, packages):

```
  {
  "shipping_name": "Manual Order Shipping Method",
  "to_address": {
    "city": "SAN FRANCISCO",
    "state": "CA",
    "zip": "94105",
    "name": "test order",
    "address_2": "",
    "country": "US",
    "address_1": "123 MAIN ST",
    "email": "none@none.com",
    "phone": "",
    "company_name": ""
  },
  "shipping_method": "My Carrier",
  "order_id": "83478763",
  "packages": [
    {
      "width": 10,
      "weight_in_oz": 11,
      "length": 10,
      "line_items": [
        {
          "tariff_code": "0",
          "price": "0.00",
          "customs_description": null,
          "customs_value": "0.00",
          "line_item_id": "225458557",
          "barcode_exists": "0",
          "partner_line_item_id": "MO114-265348960",
          "sku": "yellow-kit",
          "barcode_scanned": "0",
          "name": "Yellow Kit",
          "ignore_on_customs": false,
          "product_name": "Yellow Kit",
          "quantity": "2"
        }
      ],
      "height": 10
    }
  ],
  "order_number": "MO114",
  "partner_order_id": "MO114",
  "from_address": {
    "city": "Garnerville",
    "state": "NY",
    "zip": "10923",
    "name": "ShipHero Apparel",
    "address_2": "",
    "country": "US",
    "address_1": "123 Main St",
    "email": "hello@shiphero.com",
    "phone": "11111111111",
    "company_name": ""
  }
}

```

The response expected from your endpoint should be this:

```
{
  "code": "200",
  "shipping_method": "Ground",
  "tracking_number": "1234567890",
  "cost": "5.55",
  "label": "https://s3.amazonaws.com/myimages/65259502/thermaltmpyjYG5K.png",
  "customs_info": "",
  "shipping_carrier": "ups"
}

```

Note that customs\_info can be a URL to a PDF containing customs or other documentation that needs to be included with the shipment.

---

<div class="post-metadata">

**Author:** ![tonychen](https://avatars.discourse-cdn.com/v4/letter/t/97f17d/32.png) [@tonychen](https://community.shiphero.com/u/tonychen)\
**Post date:** [July 18, 2019, 11:32pm UTC](https://community.shiphero.com/t/adding-a-new-shipping-carrier/46/5 "2019-07-18T23:32:42Z")

</div>

That’s super helpful. Thank you @yosef!

---

<div class="post-metadata">

**Author:** ![tonychen](https://avatars.discourse-cdn.com/v4/letter/t/97f17d/32.png) [@tonychen](https://community.shiphero.com/u/tonychen)\
**Post date:** [July 20, 2019, 12:56am UTC](https://community.shiphero.com/t/adding-a-new-shipping-carrier/46/6 "2019-07-20T00:56:42Z")

</div>

Hi @yosef, one more stupid question - assume the client has multiple service levels with us, let’s say orders A&B need to be shipped with Priority, and orders C&D need to be shipped with Economy, what should they do? Register with 2 different endpoints of ours and pass in different “shipping\_name”?

---

<div class="post-metadata">

**Author:** ![yosef](https://sea2.discourse-cdn.com/flex020/user_avatar/community.shiphero.com/yosef/32/9_2.png) [@yosef](https://community.shiphero.com/u/yosef)\
**Post date:** [July 21, 2019, 2:46am UTC](https://community.shiphero.com/t/adding-a-new-shipping-carrier/46/7 "2019-07-21T02:46:17Z")

</div>

Yes, we can setup multiple options - they can still go to the same endpoint, but send in different shipping\_name.

---

<div class="post-metadata">

**Author:** ![tonychen](https://avatars.discourse-cdn.com/v4/letter/t/97f17d/32.png) [@tonychen](https://community.shiphero.com/u/tonychen)\
**Post date:** [July 22, 2019, 4:30pm UTC](https://community.shiphero.com/t/adding-a-new-shipping-carrier/46/8 "2019-07-22T16:30:50Z")

</div>

Great stuff. Thank you @yosef!

---

<div class="post-metadata">

**Author:** ![tonychen](https://avatars.discourse-cdn.com/v4/letter/t/97f17d/32.png) [@tonychen](https://community.shiphero.com/u/tonychen)\
**Post date:** [August 27, 2019, 11:08pm UTC](https://community.shiphero.com/t/adding-a-new-shipping-carrier/46/9 "2019-08-27T23:08:50Z")

</div>

Hi @yosef, sorry got distracted for a while. Circling back to this: is there a way for us to pass back a custom tracking URL to ShipHero through this method?

---

<div class="post-metadata">

**Author:** ![yosef](https://sea2.discourse-cdn.com/flex020/user_avatar/community.shiphero.com/yosef/32/9_2.png) [@yosef](https://community.shiphero.com/u/yosef)\
**Post date:** [August 28, 2019, 12:32am UTC](https://community.shiphero.com/t/adding-a-new-shipping-carrier/46/10 "2019-08-28T00:32:48Z")

</div>

There isn’t, but we can set the tracking link when setting up a customer to use you as a carrier.

---

<div class="post-metadata">

**Author:** ![tonychen](https://avatars.discourse-cdn.com/v4/letter/t/97f17d/32.png) [@tonychen](https://community.shiphero.com/u/tonychen)\
**Post date:** [August 28, 2019, 12:56am UTC](https://community.shiphero.com/t/adding-a-new-shipping-carrier/46/11 "2019-08-28T00:56:59Z")

</div>

Thanks Yosef. Just to be 100% sure, even if a client signs up to use our shipping service in this custom endpoint way, you can still help pass back the correct tracking URL, e.g. [https://mytrackingurl.com/mytrackingcode?](https://mytrackingurl.com/mytrackingcode?)

---

<div class="post-metadata">

**Author:** ![yosef](https://sea2.discourse-cdn.com/flex020/user_avatar/community.shiphero.com/yosef/32/9_2.png) [@yosef](https://community.shiphero.com/u/yosef)\
**Post date:** [August 28, 2019, 1:31am UTC](https://community.shiphero.com/t/adding-a-new-shipping-carrier/46/12 "2019-08-28T01:31:36Z")

</div>

Yes, that’s correct.

---

<div class="post-metadata">

**Author:** ![tonychen](https://avatars.discourse-cdn.com/v4/letter/t/97f17d/32.png) [@tonychen](https://community.shiphero.com/u/tonychen)\
**Post date:** [September 4, 2019, 4:36pm UTC](https://community.shiphero.com/t/adding-a-new-shipping-carrier/46/13 "2019-09-04T16:36:22Z")

</div>

@yosef we have the webhook developed! Could you please PM me to advise what to do as the next step to get the client live?

---

<div class="post-metadata">

**Author:** ![tonychen](https://avatars.discourse-cdn.com/v4/letter/t/97f17d/32.png) [@tonychen](https://community.shiphero.com/u/tonychen)\
**Post date:** [September 9, 2019, 4:26pm UTC](https://community.shiphero.com/t/adding-a-new-shipping-carrier/46/14 "2019-09-09T16:26:01Z")

</div>

@yosef in your example above, is the customs\_value/price for the 2 items (i.e. each item is customs\_value/price divide by quantity), or for just a single item?

---

<div class="post-metadata">

**Author:** ![yosef](https://sea2.discourse-cdn.com/flex020/user_avatar/community.shiphero.com/yosef/32/9_2.png) [@yosef](https://community.shiphero.com/u/yosef)\
**Post date:** [September 9, 2019, 5:28pm UTC](https://community.shiphero.com/t/adding-a-new-shipping-carrier/46/15 "2019-09-09T17:28:41Z")

</div>

It should be multiplying it by the quantity.
