Shipstation Integration

If there are developers interested in making a shipstation integration I would be interested in potentially sponsoring this functionality.

The use case is this:

We have some ecommerce companies that want to keep stock in ERPNext and that stock needs to be updated between various sales channels. (amazon, ebay, shopify, walmart, etc…)

Because there is no present way to sync the inventory counts to those external channels we are hoping we can use shipstation.com as a viable middleware.

The premise is that orders that come in through amazon, shopify, EDI solutions, etc… already populate to shipstation from existing integrations. If we could originate some orders from the ERPNext ecommerce module as well which would then populate for outbound shipment to shipstation that would be a step forward. (The tracking information from shipstation would also have to be written back to ERPNext once the item ships.)

Further the inventory would have to be synched from whichever side has the “master” inventory. It could go from ERPNext to shipstation, which is preferred, but if that is not feasible then the shipstation data would need written back to ERPnext.

Shipstation is a high functioning low cost solution used by thousands of ecommerce companies and without an effective method of shipping ERPNext is not ready for e-commerce.

If there is a better way for me to work through this idea let me know. I am open to whatever ideas can solve this problem.

Cheers!

Steve

4 Likes

Is anybody working on this already?

1 Like

Nobody we know of…

Hi there, I’m putting a “bump” here as I’ve run into this exact need. I have a supplier that is willing to drop-ship for me, but I need to push into ShipStation for them.

I assume there are no further update(s)?

ShipStation has a pretty friendly API. I would imagine any well-rounded developer could put something up for you without intensive time or resources required.

I recently started working on a label integration using ShipEngine, which is an API-only platform made by the ShipStation team. Going well and easy to implement so far.

Hey @dealproc we’ve actually made a Shipstation Integration for ERPNext. You can find it here -

It uses GitHub - agritheory/shipstation-client: Python bindings for the ShipStation API to communicate with Shipstation
(For our app we use a custom fork that has a fix the above repo does not)

Fair warning -

  1. It’s opinionated
  2. It has no documentation

We’ll do a proper write-up on Monday, but meanwhile here’s some basic setup instructions -

Install the app on your site. If it’s a fresh site, it will create the custom fields during setup, if you install it on an existing site, you will have to run -

bench execute --site <sitename> shipstation_integration.setup.setup_shipstation

This will add the custom fields it needs. Once that’s done, you can create a new “Shipstation Settings” document from the Desk and fill the details. After you save it, click on “Get Carriers”. This will populate the child table with the stores. You will then need to configure each field in each child table row for the integration to work correctly. There’s is a scheduler hook that fetches data every hour. There’s also buttons in Shipstation Settings that get the orders / data for the last 24 hours. You don’t need to use the “Get Items” button as items are generated on the go if not found in the system.

5 Likes

I am still coordinating with the business that had mentioned ShipStation as a method to accept orders. It is disappointing that they are requesting I use Shopify or similar, which is not my overall end-goal. Knowing this is possible, a follow-up question: How would this work where a vendor is using ShipStation and I need to allow them to pull orders to fulfill?

If you have a customization for fixing things… can you explain those items, @vjFaLk?

If you can look at the Docker work that @revant_one built, there are a few items that run as “tasks” which you may want to investigate as well, for anyone deploying on k8s. If needed, once I understand your plugin and how it works, I may see if I can adapt what was done for the base site(s) to support your integration in k8s. Just my $0.02 (USD???) on this.

this command can be converted into a k8s Job.

bench execute command is available in containers.

Infact any custom python script can be written as a k8s configmap and executed as part of a Job using the frappe py env.

e.g.

/home/frappe/frappe-bench/env/python /path/to/script.py

Hey I’m not sure what you mean by this exactly? Our integration can currently pull Orders from Shipstation and also fetch Shipments (optionally). If Shopify has been connected to Shipstation, we can then fetch Shopify orders via Shipstation.

I’m not sure which customizations you’re talking about?

We’re not currently planning to make any K8s related changes to our app, but we would be happy to accept contributions.

Also, we’ve added a README to our code.

1 Like

AH, ok… I think I know my confusion… my thought was using ERPNext’ shopping cart, then have ShipStation “pull” the order information to do fulfillments. I take it from your responses that ERPNext is a client of ShipStation, rather than being the source of truth.

In our experience other channels are generating much more inputs into Shipstation which is why we followed this route.

We tested the ERPNext shopping cart and eCommerce elements for a couple years, but the experience accumulated showed us that using purpose built ecommerce platforms like Shopify or WooCommerce is a better. The number of specialty ecommerce components that are build into those front end tools is HUGE and a good integration can make ERPNext the back end of the financial and operational parts of the business, but the front end ecommerce is not viable at scale today without massive development work and time IMHO.

1 Like

sorry for the extreme delay in this, but thank you for the response.

so this allows us to use shipstation with erpnext e-commerce?

This shipstation integration appears to support pull rather than push.

  • Sync multiple ShipStation accounts with a single ERPNext instance.
  • Configure individual stores in each ShipStation account to different companies, warehouses, cost centers and account heads.
  • Periodically fetch products, orders and shipments from all ShipStation accounts.
  • Identify stores connected to the Amazon marketplace, and add hooks for other Frappe applications to process Amazon orders.
  • Shipping label generation (can be enabled per Shipstation account)

In other words, can it be configured to arrange for shipment collections based on Delivery Notes created within ERPNext, and fulfilled with an existing logistics partner account, DPD, Parcelforce, UPS, etc?

I’m glad these forums have a feature keeping the older threads active.

We’re in the brainstorming phase of choosing a shipping API to integrate. We want to create shipment in ERP and use the API to purchase and print labels.

Currently I’m leaning towards ShipStation vs Shippo.

We already tried with EasyPost. We used a fork of Erpnext Shipping, adding EasyPost. The journey made me realize just how complicated it is to create a universal shipping for all the global users of ERPNext. UOM, parcel quantity, API Keys & Secrets or no Secret, allowed source and destination addresses or countries, etc.

Easy post had some limitations with single parcel shipments, SAE units of measurement, and limited label configuration.

For these reasons I’m looking for a platform with source address in USA, with a robust API and backend shipping features. Monthly billing vs ewallet or 1:1 charges per shipment would be the icing on the cake.

If anyone is willing to post experience with any of the above, I’d love to hear.

Additionally, anyone interested in collaborating, please do let us know.

We are actively developing against ShipStation’s new ShipEngine API which supports LTL and TFL and container APIs.

1 Like

Wow thanks for sharing your work @tmatteson

It looks like your app doesn’t rely/depend on ERPNext-shipping app. Is this true?

Your approach to handle UOM at the User doc is also interesting.

Do you consider this stable? Is it fully functional? Are there any issues or features to still be addressed?

Yes, stable. It’s been running in prod for three years. “Fully functional” is arbitrary goalpost, so you’d have to tell me what you think that means.

Glad to hear it.

“Fully functioning” was mostly about the development state. I was curious if there was any incomplete code or functionality that’s still in the works (not working or completed yet).

I will give it a go.

Cheers!