Connect To Deliverr via Pipe17 API

Table of Contents:

 

Overview:

This document describes how to use Pipe17 API to facilitate connection to Deliverr

You can find the OpenAPI docs for the full Pipe17 API at: https://apidoc.pipe17.com/

 

Deliverr Connector Notes

  • Deliverr doesn’t currently have an automated interface for Inbound Advanced Ship Notices (ASNs) or receipts of inbound. These will have to be handled manually.

  • Likewise for order cancel events

  • To send inventory to Deliverr, you will need to have the products in the Deliverr Inventory system - if this is a new Deliverr account, this will come from Pipe17, so the first thing you will need to do is import Product information into Pipe17.

High Level Steps

(Follow the detailed instructions in next section to get started.)

  1. Create Pipe17 and Deliverr accounts and connect them

  2. Use the Pipe17 API to authenticate and send Products into Pipe17

  3. Submit one or more test orders to Pipe17 and “fake fulfill” them in Pipe17 to test getting fulfillment information back from the API

  4. Test inventory fetch via Pipe17 API

  5. Connect Deliverr to your Pipe17 account

  6. Test Fulfillments

  7. Submit a real test order to Pipe17 to flow to Deliverr and test live fulfillment coming back from Deliverr

Detailed Instructions

Authentication

  1. Contact your pipe 17 representative for a sandbox account

  2. Going through the welcome wizard, don’t select anything for the Selling Channel and make sure to select the Deliverr connector as Fulfillment Partner

  3. Once the Deliverr connector is selected, you can close the dialog with “apiKey create in progress - check back in 5 mins”

  4. Once completing the welcome wizard, go to the Integrations tab and select the Deliverr integration. The integration should display the apiKey for copy. Keep this key safe as you will use it to connect Deliverr to Pipe17 later.

  5. The key you just copied is for Deliverr only. For the next few steps you will use a much longer token to access the Pipe17 API. Open Pipe17 Settings at https://app.pipe17.com/settings or click on the Person icon right above Logout in the left hand navigation menu, you should see a Token field and a copy button.

    Click on the copy button to copy the Pipe17 Authorization Token into your clipboard. Do not click “reset onboarding”

  6. Now you can pick the tool of your choice for making API calls, we will be providing examples for Postman https://www.postman.com/.

  7. You can import this cURL script into Postman by clicking on Import on the upper left and selecting Raw text. Then paste:

    curl --location --request POST 'https://api-v3.pipe17.com/api/v3/apikey' \ --header 'Content-Type: application/json' \ --header 'X-Pipe17-Key: Token from above (changeme)' \ --data-raw '{ "name": "name of your api key (changeme)", "tier": "enterprise", "environment": "prod", "description": "provide a short description for this api key (changeme)", "allowedIPs": ["0.0.0.0/0"], "methods": { "fulfillments": "crudl", "inventory": "crudl", "locations": "crudl", "orders": "crudl", "products": "crudl", "shipments": "crudl" } }'


    You need to change the following:

    1. X-Pipe17-Key - This should be the Token you copy above

    2. name - This should be the name of your API key

    3. description - this should be a description for the API key

      For example, the final result might look like:

    curl --location --request POST 'https://api-v3.pipe17.com/api/v3/apikey' \ --header 'Content-Type: application/json' \ --header 'X-Pipe17-Key: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik4wVTFRekUz TXpVelJqWkVNamcxTmtORFFUa3hPVFF5UXpkRk1EVkVOVGs1UmpRMU9FSkdSZyJ9.eyJodHRwczovL2F wcC5waXBlMTcuY29tL2FwcF9tZXRhZGF0YSI6eyJvcmdfa2V5IjoiMGFkYTljMzgxNTQzMzQ3ZiIsInN 0YXR1cyI6ImFjdGl2ZSIsInJvbGVfaWRzIjpbIjI4N2U3MTljMjYyYzE4MTEiLCJhYzc1M2FiMDZkNDk 4ZjljIl0sIm5hbWUiOiIgIiwidGltZV96b25lIjoiIiwicGhvbmUiOiIiLCJkZXNjcmlwdGlvbiI6IkF jY291bnQgT3duZXIiLCJhzGRyZXNzIjp7ImFkZHJlc3MxIjoiIiwiYWRkcmVzczIiOiIiLCJjaXR5Ijo iIiwiY29tcGFueSI6IkFQSSBUZXN0IiwiY291bnRyeSI6IiIsImZpcnN0TmFtZSI6IiIsImxhc3ROYW1 lIjoiIiwic3RhdGVPclByb3ZpbmNlIjoiIiwiemlwQ29kZU9yUG9zdGFsQ29kZSI6IiJ9LCJhcGlfdmV yc2lvbiI6IjMuMC40OSJ9LCJpc3MiOiJodHRwczovL3BpcGUxNy5hdXRoMC5jb20vIiwic3ViIjoiYXV 0aDB8ZTFkN2E3MmIzMzAxYjY2NyIsImF1ZCI6WyJodHRwczovL2FwaS5waXBlMTcuY29tL3YxIiwiaHR 0cHM6Ly9waXBlMTcuYXV0aDAuY29tL3VzZXJpbmZvIl0sImlhdCI6MTYyMzAxMTY1MSwiZXhwIjoxNjI zMDk4MDUxLCJhenAiOiIyMWxMRnh3OG52THhZS0YwQTNucFdjT3JDeG9XckZ3MSIsInNjb3BlIjoib3B lbmlkIHByb2ZpbGUgZW1haWwifQ.Orr25SVxdSPKjzfYZ6AmrqJ4LeZcCrne4fei8x_EEALDNjmBkDql ihaAMHwpP79w5swg4F6I4CAGv5olLp0IGX3IrbVnzmCiUrPxKKAwB-dQt_GyWv0EQHTQChoECA41SFDo ltly1I9d9LIYhdIPw-J8B1ORjFx4UgijQzt1sTAdyUgpw-u3IiJFW5H_hgEm4U4C8GH3I_jCH7LO_Hux HmSXjASrUQN5j9gFKb-zNRUTB2UU-Q5bz0D2LAw8cb5L09nhTVZ2gcvuyuV-DK-otjFzSDt8oVhTwTlx X2W9HlfPlU-RpB1NR19aTU1Xlm0XG56P24JwdEwMANcxxxxxxx' \ --data-raw '{ "name": "pipe17_api_key", "tier": "enterprise", "environment": "prod", "description": "this API key is used to integrate w Pipe17 API for Deliverr", "allowedIPs": ["0.0.0.0/0"], "methods": { "fulfillments": "crudl", "inventory": "crudl", "locations": "crudl", "orders": "crudl", "products": "crudl", "shipments": "crudl" } }'

     

  8. Do a POST operation against the API by pressing the Send button. You should see a response such as the one below. Make sure to save the apikey, this is the ONLY time you get it

  9. { "success": true, "code": 201, "apikey": "25ca8dda60a6cf6720fe74672619663a6041bce5c43896a162efexxxxxxxx" }
  10. Once you have the apikey, you can now create Products and Orders within Pipe17.

  11. If you are using Postman you can create a collection for the Pipe17 API by downloading the Swagger specification file from http://apidoc.pipe17.com and then importing it into Postman. Then you can create and read data in Pipe17 using the POST, PUT, GET and other endpoints interactively in the resulting collection. Or you can continue to use curl as noted below.

  12. As Deliverr needs to have the products in their system and match them to Pipe17’s product items, you should start by creating a product within Pipe17. We recommend you create at least one product for which you DO NOT have inventory at Deliverr, so that you can flow a test order with no real world implication. There are a few ways to create products in Pipe17:

    1. You can use an edited version of this cURL blob below in Postman. You need to change the following:

      1. X-Pipe17-Key - This should be the apikey you just created using Postman

      2. sku - This should be SKU for the product

      3. name - The name of the Product

      4. description - The description of the product

         

    2. Method 2 would be to use another connector to a selling channel to bring some products into Pipe17

    3. Method 3 would be to import some products via CSV

  13. If you use method 1, after submitting a POST operation against the API, you should see a response such as the one below

  14. If you want to make sure this worked, you can go to the Products page in the Pipe17 portal and you should see your new product there. Alternatively, use the API to fetch the products to confirm.

  15. When you connect to Deliverr, this product, and any others in your Pipe17 account, will automatically be synced from Pipe17 into Deliverr. So make sure your Product Catalog is in a state where it is ready to be synced. Deliverr will also periodically sync from Pipe17, so you can always add products later as well.

  16. At this point, you are 50% done with your setup. Give yourself a pat on the back! Next we will connect up Deliverr to Pipe17

  17. Login to your Deliverr portal at https://sellerportal.deliverr.com/. If click on Channels on the left hand side. Select Pipe17 under Listing Tools. (Note: if you don’t have a Deliverr account yet, you can create one at https://login.deliverr.com/signup).

  18. Remember the Deliverr API Key that we ask you to save on Step #4? If you lost it, you can go back to https://app.pipe17.com/integrations and select the Deliverr integration to grab it again. Take that API Token and paste it into the Deliverr portal.

  19. This will connect up your Deliverr account to your Pipe17 account. You can verify this by going into Pipe17 Portal . You should see something like this listed for Locations.

     

  20. To create an order for Deliverr to fulfill, we need one last piece of the detail that will enable this. Click into the Deliverr Location name link (left hand side of row) to view/edit this inventory location. At the bottom of the page you will see Integration for Deliverr with an External Location ID on the right-hand side. Copy that ID.

     

  21. Now you get to create an order. Note that Deliverr doesn’t have sandbox accounts, so if you have inventory at Deliverr and this order gets routed by Pipe17 to Deliverr, real merchandise will ship in the real world. However, here you will just send the order into Pipe17 and you won’t route it to Deliverr until a future step. Once you are ready to send the order into Pipe17, you know what to do: copy the cURL blob below into Postman!


    You need to change the following:

    1. extOrderId - This should be unique across all orders for your organization and is shown on the Pipe17 portal UI so non-technical staff can find what happened to an order

    2. orderSource - string
      The Deliverr-specified identifier for the marketplace where the order was sourced. In order to be able to support backend features like fast shipping tags, it's critical that Deliverr be able to identify the marketplace involved. This field is free text (but required to have a value). This value should contain one of the following keywords for the identified marketplace (case insensitive). For other integrations to marketplaces not listed here, any name that does not contain one of the following keywords is acceptable, e.g. you could set it to “API”.

      In addition, the marketplace matching is not caps sensitive and is substring based. For example, a WALMART marketplace could be passed here as Walmart, Walmart DSV, Walmart Marketplace, etc. EBay could be EBay, EBay Fixed Price, EBay Automotive, etc.

      Current marketplace keyword values:

      EBAY
      WALMART
      JET
      SHOPIFY
      AMAZON
      NEWEGG
      BIGCOMMERCE
      PRICEFALLS
      FACEBOOK
      MAGENTO
      GOOGLE

    3. lineItems - This is the list that will hold everything you want to ship

    4. shippingAddress - change this to your own address for testing

    5. expectedDeliveryDate - This is an ISO8601 formatted time string in UTC. Deliverr uses this date to calculate shipping method

    6. customer - This should be who placed the order and can be different from the name in the shipping address which will be sent to Deliverr for fulfillment

    7. extOrderApiId - This should be unique across all orders for your organization and it the ID we use internally to access resources at the destination system. This can be the same as the extOrderId, if you choose.

    8. extOrderCreatedAt - This is when the order was created in the source system, which can be the current time for testing purposes, but normally would be the order creation time in the order management system or shopping cart.

    9. extOrderUpdatedAt - This is when the order was updated in the source system, which can be the current time for testing purposes, but normally would be the order creation time in the order management system or shopping cart.

  22. After doing a POST operation against the API by pressing Send button. You should see a response such as this below. You should be able to verify the order has been created by going to the Pipe17 Portal

  23. You should verify if everything looks right in the Pipe17 Portal. Now we are ready to get it sent to Deliverr if everything looks good. Note you will need the order ID to set this order’s location to be routed to Deliverr. That can be found in your API response (e.g. line 32 in the above) or at the end of the URL if you are viewing this order in the Pipe17 portal.

  24. Once you are ready to actually send this order to Deliverr, use the following cURL blob in Postman to update the order with an locationId that will set it for Deliverr.


    You need to change the following:

    1. PUT Location - The ending for this URL should be the orderId above, so swap out b5b63435a3dc416c to what the API returned you for orderId in the response.

    2. The Pipe17 API key, of course

    3. locationId - This should be the location Id you copy from the Deliverr location within Pipe17 Portal.

  25. After doing a PUT operation against the API by pressing Send button. You should see a response such as this below.

  26. You can validate that a Shipping Request has been created for the order in the Pipe17 Portal and assigned to the Deliverr location. This shipping request will automatically be picked up by Deliverr for fulfillment the next time Deliverr pulls orders from Pipe17.

    1. Note that Deliverr normally pulls orders every 15-30 mins, though it could be less or more time, depending on load and other factors.

    2. Once Deliverr successfully pulls the order from Pipe17, you will see the state of the order progress to “Sent to Fulfillment”

    3. If Deliverr has never seen inventory inbounded for the product(s) in the order, it will not pull it from Pipe17 and may send an email to your admin account that it saw an order for products which have never been inbounded. If the products have been inbounded, then Deliverr will pick up the order and cancel it, with an Out of Stock error. Pipe17 can pick up these cancels and automatically cancel the shipping request that was created, which will then return the inventory committed for the order to available to sell.

Testing Fulfillments

  1. Testing Fulfillment and Inventory
    Note: Deliverr does NOT have a sandbox environment to test against. In order to test Fulfillments and Inventory, we will be using an internal connector called Pipe17 Mock 3PL. Pipe17 Mock 3PL is an automated system that simulate the behavior of a 3PL(Deliverr in this case) on order fulfillment and without fulfilling the order in the physical world.

  2. Adding Pipe17 Mock 3PL to your integrations.

    Navigate to IntegrationsAdd Integration



     

  3. Select Pipe17 Mock 3PL



  4. Select Pipe17 Mock 3PL ConnectConnect(no need to enter any credentials)

  5. Set up Order Routing to rout ALL orders to Pipe17 Mock 3PL
    Navigate to OrganizationOrder RoutingAdd Order Routing

    Configure the Order Routing as the following:

    Name: order-routing-test
    Check mark Do not check inventory
    Order Desgination: Leave blank do NOT enter anything
    Fulfillment Location: Pipe17Test-Seattle

    Click Save

  6. Send in a Test Order.
    Create an order using the Pipe17 apiKey you’ve created in step 7.

  7. Wait for order fulfillment

    At this point, if Order Routing is set up correctly, a Shipping Request will be created for this order and Pipe17 Mock 3PL connector will automatically fulfill this order(can take up to 5 minutes).

    Navigate to Orders page to confirm order have been fulfilled.






  8. Pulling Fulfillments via API

    We highly recommend our Deliverr customers to use the Polling method to pull fulfillments from Pipe17 system periodically to get fulfillments.

    For more query parameters and pagination refer to official Pipe17 API doc FULFILLMENTS

    Using your Pipe17 apiKey:


    Example call of polling for fulfillments since X:


    Response look like this:

  9. Verify inventory records from UI

    Navigate to Inventory page.

    Pipe17 Mock 3PL will automatically create mock inventory records for you to test against. These are NOT real inventories and do not have any relationship with your product catalog, they are for testing only

     

     

  10. Optionally pull Inventory via API

    For more query parameters and pagination refer to official Pipe17 API doc INVENTORY

    Using your Pipe17 apiKey:

    GET all inventory records updated since 06-30-2021


    response:

 

Route Production Orders

  1. Routing orders to Deliverr
    Once your inventory has arrived at Deliverr you should also see that inventory in Pipe17 within 24 hours.You could create some orders to your address or a co-worker’s to complete your testing. Final configuration will depend on your specific situation.

Frequently asked questions:

Q: How does Pipe17 handle orders that are canceled by Deliverr?

Orders that are canceled in Deliverr will display a card in the Order Page stating Canceled Shipping and the timestamp of when it was canceled by Deliverr. Any inventory that had been committed will be automatically restocked as part of the shipping request cancellation.

Q: Does available inventory number reported via API already subtract orders sent but not fulfilled?

Yes - orders sent to Pipe17 for Deliverr. Of course it doesn't include orders that haven't been sent to Pipe17.

Q: How can I test the inventory API prior to having stock at Deliverr?

  • set up a location in Pipe17 via API

  • add inventory to it via API or UI

  • test API fetching inventory from test location

  • then switch over to Deliverr location once real inventory is stocked

Q: Once I deleted the product on Pipe17, the product still exists on Deliverr after sync. Should I go to Deliverr portal to delete it?

Pipe17 doesn't generally delete products at the endpoints, based on customer requirements we have received. But in this case, Deliverr doesn't support delete via the API or the UI. You can just ignore extra products at Deliverr, or use the Hide Product button in the Deliverr Inventory Detail UI page.

Q: Do the dimensions created on Pipe17 Products sync to Deliverr?

No - dimensions are set up when you inbound product to Deliverr, so we don't write them via the API

Q: How many products can I post in a single call?

You can post 10 products in a single call at most. If you do not pass in the COUNT parameter, the default result returns 10 items. Once you pass in the COUNT parameter, the API will respect this parameter for a max of 100 products. See full API documentation linked earlier for additional details.

Q: Why is my order never routing to Deliverr?

  • You might be including an unsupported value in your order information, such as requiresShippingLabels: true. Deliverr does not support shipping labels, so this will cause your order to get stuck in Pipe17’s system.

  • You might be using an API key belonging to another integration to authenticate your calls. Instead, use the Pipe17 Auth Token which you can find by clicking on your own username in the lower left of the Pipe17 portal, or create a brand new API key for your integration only (as described in step 5). Do not use the existing “Deliverr” or “Order Routing Engine” (or any other) API keys from the Pipe17 portal.

Q: All my orders in Deliverr are defaulting to “Standard” shipping. How can I include shipping method information in my orders?

To specify a shipping method, you can use the shippingCode field in your order POST call body. This value is what will be passed to Deliverr as the chosen method for the order, for example FREE 3-Day Delivery, so make sure it matches the available methods set up for your account in Deliverr. You can also use Deliverr’s shipping method mapping options to make sure the names match, as described here.

 

 

 

The next steps in your use of the Pipe17 API to connect to Deliverr will be Fulfillments and Inventory. You can find the docs for these API entities in the link above: https://apidoc.pipe17.com/. Please reach out to support@pipe17.com or your Pipe17 contact if you need information or assistance.

 

If you run into any issues following any steps, don’t hesitate to reach out to us via our Pipe17 Support Portal or support@pipe17.com and we will glad to help you achieve your integration goal.

Related articles