Skip to main content

Connecting custom carrier API

ChannelDock offers a wide range of pre-built carrier integrations that sellers and fulfillment centers can use out of the box. However, since it’s not feasible for us to build a connection with every carrier platform, we’ve developed a set of APIs that allow you, as a carrier, to create shipment methods in ChannelDock for a specific seller or fulfillment center.

This guide outlines the steps you need to follow to complete this integration.

Step 1:

Generate API credentials:
- Seller: https://channeldock.com/portal/public/settings/api_keys
- Fulfillment center: https://channeldock.com/portal/public/centersettings/api_keys

Step 2:
The next step is adding the shipping methods you provide as a carrier in ChannelDock. You can find more info about the endpoint and JSON structure we expect here:
- Seller: Postman docs
- Fulfillment center: Postman docs

Step 3:
Whenever a ChannelDock user attempts to create a shipping label using your shipment methods, we will send you a JSON object containing the order data and details about the selected shipment method. For an example, see this file: callback_data.json

{
    "order_id": 774,
    "remote_order_id": "ORD-2025-4055",
    "order_date": "2025-05-13 08:49:28",
    "ship_on_date": "2025-05-14",
    "remote_carrier_id": "postnl_standard_001",
    "shipping_address1": "Keizersgracht 123",
    "shipping_address2": "2nd floor",
    "shipping_address_supplement": "Entrance via side door",
    "shipping_city": "Amsterdam",
    "shipping_company": "KiteGear BV",
    "shipping_country_code": "NL",
    "shipping_email": "[email protected]",
    "shipping_first_name": "Emma",
    "shipping_house_number": "123",
    "shipping_house_number_ext": "B",
    "shipping_last_name": "van Dijk",
    "shipping_middle_name": null,
    "shipping_region": "Noord-Holland",
    "shipping_street": "Keizersgracht",
    "shipping_zip_code": "1015 CJ",
    "shipping_address_accurate": 1,
    "shipping_phone_number": "+31 6 12345678",
    "billing_address1": "Keizersgracht 123",
    "billing_address2": "2nd floor",
    "billing_address_supplement": "Finance dept.",
    "billing_city": "Amsterdam",
    "billing_company": "KiteGear BV",
    "billing_country_code": "NL",
    "billing_email": "[email protected]",
    "billing_first_name": "Emma",
    "billing_house_number": "123",
    "billing_house_number_ext": "B",
    "billing_last_name": "van Dijk",
    "billing_middle_name": null,
    "billing_region": "Noord-Holland",
    "billing_street": "Keizersgracht",
    "billing_zip_code": "1015 CJ",
    "billing_address_accurate": 1,
    "billing_phone_number": "+31 20 1234567",
    "total_weight": 8.0,
    "total_length": 80,
    "total_width": 25,
    "total_height": 25,
    "total_order_price": 749.95,
    "total_order_currency": "EUR",
    "order_products": [
      {
        "order_product_id": 868,
        "order_product_price": 699.95,
        "order_product_price_currency": "EUR",
        "ean": "8719326583655",
        "quantity": 1,
        "product_title": "North Orbit Kite 2025 - 12m",
        "product_weight": "5.00",
        "product_length": 80,
        "product_width": 25,
        "product_height": 15,
        "product_hs_code": "95062900",
        "remote_order_product_id": "NL-PROD-001"
      },
      {
        "order_product_id": 869,
        "order_product_price": 50.00,
        "order_product_price_currency": "EUR",
        "ean": "8719326583617",
        "quantity": 1,
        "product_title": "Mystic Kite Pump Pro",
        "product_weight": "3.00",
        "product_length": 40,
        "product_width": 10,
        "product_height": 10,
        "product_hs_code": "84142080",
        "remote_order_product_id": "NL-PROD-002"
      }
    ]
  }
Upon receiving this data, you are expected to generate a shipping label PDF, encode it in Base64, and return the following response: callback_response.json

{
    "label_id": 99999,
    "carrier_code": "DHL",
    "tracking_number": "DHL87623654234",
    "tracking_number_url": "https://dhl.com/tracking?DHL87623654234",
    "pdf_content_base64": "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlL0NhdGFsb2cvUG..."
}

ChannelDock will then print the PDF label and sent the Tracking number to the sales channel to process the order.